diff options
Diffstat (limited to 'demo')
35 files changed, 9602 insertions, 5917 deletions
diff --git a/demo/dist/demo.css b/demo/dist/demo.css index b0738700..f22e07f9 100644 --- a/demo/dist/demo.css +++ b/demo/dist/demo.css @@ -1 +1 @@ -@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:300;src:url(https://cdn.plyr.io/static/fonts/gordita-light.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-light.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:400;src:url(https://cdn.plyr.io/static/fonts/gordita-regular.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-regular.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:500;src:url(https://cdn.plyr.io/static/fonts/gordita-medium.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-medium.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:600;src:url(https://cdn.plyr.io/static/fonts/gordita-bold.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-bold.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:900;src:url(https://cdn.plyr.io/static/fonts/gordita-black.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-black.woff) format("woff")}@keyframes fadein{0%{opacity:0}100%{opacity:1}}@keyframes shrinkHide{0%{opacity:.5;width:38px}20%{width:45px}100%{opacity:0;width:0}}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a,button.faux-link{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:border-box}body,html{display:flex;width:100%}html{background:linear-gradient(to left top,#e0f6ff,#f5fcff);background-attachment:fixed;height:100%}body{align-items:center;display:flex;flex-direction:column;min-height:100%}.grid{flex:1;overflow:auto}main{margin:auto;padding-bottom:1px;text-align:center}aside{align-items:center;background:#fff;display:flex;flex-shrink:0;justify-content:center;padding:16px;position:relative;text-align:center;text-shadow:none;width:100%}aside .icon{fill:#4baaf4;margin-right:8px}aside p{margin:0}aside a,aside button.faux-link{color:#4baaf4}aside a.tab-focus,aside button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(75,170,244,.35);outline:0}.grid{margin:0 auto;padding:16px}@media only screen and (min-width:768px){.grid{align-items:center;display:flex;max-width:1260px;width:100%}.grid>*{flex:1}}html{font-size:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:15px;font-size:.9375rem;color:#4a5764;font-family:Gordita,Avenir,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:500;line-height:1.75}button,input,select,textarea{font:inherit}p,small{margin:0 0 24px}small{font-size:13px;font-size:.8125rem;display:block}h1{font-size:64px;font-size:4rem;color:#00b3ff;font-weight:600;letter-spacing:-.025em;line-height:1.2;margin:0 0 24px}.button,.button__count{align-items:center;border:0;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.1);display:inline-flex;padding:12px;position:relative;text-shadow:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.button{background:#00b3ff;color:#fff;font-weight:600;padding-left:20px;padding-right:20px;transition:all .2s ease}.button:focus,.button:hover{background:#1abaff}.button:focus::after,.button:hover::after{display:none}.button:hover{box-shadow:0 2px 2px rgba(0,0,0,.1)}.button:focus{outline:0}.button.tab-focus{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}.button:active{top:1px}.button--with-count{display:inline-flex}.button--with-count .button .icon{flex-shrink:0}.button__count{animation:fadein .2s ease;background:#fff;color:#5d6e7e;margin-left:12px}.button__count::before{border:5px solid transparent;border-left-width:0;border-right-color:#fff;content:'';height:0;position:absolute;right:100%;top:50%;transform:translateY(-50%);width:0}header{padding-bottom:16px;text-align:center}header h1 span{animation:shrinkHide 1s cubic-bezier(.175,.885,.32,1.275) 2s forwards;display:inline-block;font-weight:300;opacity:.5}header .call-to-action{margin-top:24px}@media only screen and (min-width:768px){header{margin-right:48px;max-width:360px;padding-bottom:32px;text-align:left}header p:first-of-type{font-size:16px;font-size:1rem}}.icon{fill:currentColor;height:16px;vertical-align:-3px;width:16px}a svg,button svg,button.faux-link svg,label svg{pointer-events:none}.btn .icon,a .icon,button.faux-link .icon{margin-right:8px}button.faux-link{background:0 0;border:0;border-radius:0;cursor:pointer;font:inherit;line-height:1.75;margin:0;padding:0;position:relative;text-align:inherit;text-shadow:inherit;-moz-user-select:text;vertical-align:baseline;width:auto}a,button.faux-link{border-bottom:1px dotted currentColor;color:#00b3ff;position:relative;text-decoration:none;transition:all .2s ease}a::after,button.faux-link::after{background:currentColor;content:'';height:1px;left:50%;position:absolute;top:100%;transform:translateX(-50%);transition:width .2s ease;width:0}a:focus,a:hover,button.faux-link:focus,button.faux-link:hover{border-bottom-color:transparent;outline:0}a:focus::after,a:hover::after,button.faux-link:focus::after,button.faux-link:hover::after{width:100%}a.tab-focus,button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}a.no-border::after,button.no-border.faux-link::after{display:none}li,ul{list-style:none;margin:0;padding:0}audio,img,video{max-width:100%;vertical-align:middle}nav{display:flex;justify-content:center;margin-bottom:16px}.plyr{border-radius:4px;box-shadow:0 2px 15px rgba(0,0,0,.1);margin:16px auto}.plyr.plyr--audio{max-width:480px}.plyr__video-wrapper::after{border:1px solid rgba(0,0,0,.15);border-radius:inherit;bottom:0;content:'';left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.plyr__cite{color:#728597}.plyr__cite .icon{margin-right:3px}@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-variant-numeric:tabular-nums;font-weight:500;height:100%;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui button.faux-link,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5764;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:12px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:13px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}a.plyr__control,button.plyr__control.faux-link{text-decoration:none}a.plyr__control::after,a.plyr__control::before,button.plyr__control.faux-link::after,button.plyr__control.faux-link::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr__controls:empty{display:none}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:13px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5764;display:flex;font-size:13px;padding:4px 11px;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(74,87,100,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(74,87,100,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:rgba(114,133,151,.2);box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#00b3ff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#00b3ff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:11px}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:12px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr__progress{left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:11px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,41,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,41,47,.6) 50%,rgba(35,41,47,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,201,209,.66)}.plyr__volume{align-items:center;display:flex;max-width:110px;min-width:80px;position:relative;width:20%}.plyr__volume input[type=range]{margin-left:5px;margin-right:5px;position:relative;z-index:2}.plyr--is-ios .plyr__volume{min-width:0;width:auto}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4a5764;padding:10px}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--audio .plyr__progress__buffer{color:rgba(193,201,209,.66)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;height:100%;margin:auto;overflow:hidden;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;left:0;position:absolute;top:0}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr__control--overlaid{background:rgba(0,179,255,.8);border:0;border-radius:100%;color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#00b3ff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--video .plyr__progress__buffer{color:rgba(255,255,255,.25)}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;display:block;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;position:static}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(35,41,47,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c9d1;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:11px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.no-border{border:0}[hidden]{display:none}.sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;opacity:.001;overflow:hidden;padding:0;position:absolute;width:1px}
\ No newline at end of file +:root{--plyr-color-main:#00b3ff;--plyr-font-size-base:13px;--plyr-font-size-small:12px;--plyr-font-size-time:11px;--plyr-font-size-badges:9px;--plyr-font-size-menu:var(--plyr-font-size-base);--plyr-font-weight-regular:500;--plyr-font-weight-bold:600;--plyr-font-size-captions-medium:18px;--plyr-font-size-captions-large:21px}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:300;src:url(https://cdn.plyr.io/static/fonts/gordita-light.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-light.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:400;src:url(https://cdn.plyr.io/static/fonts/gordita-regular.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-regular.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:500;src:url(https://cdn.plyr.io/static/fonts/gordita-medium.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-medium.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:600;src:url(https://cdn.plyr.io/static/fonts/gordita-bold.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-bold.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:900;src:url(https://cdn.plyr.io/static/fonts/gordita-black.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-black.woff) format("woff")}@keyframes fadein{0%{opacity:0}100%{opacity:1}}@keyframes shrinkHide{0%{opacity:.5;width:38px}20%{width:45px}100%{opacity:0;width:0}}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a,button.faux-link{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:border-box}body,html{display:flex;width:100%}html{background:linear-gradient(to left top,#e0f6ff,#f5fcff);background-attachment:fixed;height:100%}body{align-items:center;display:flex;flex-direction:column;min-height:100%}.grid{flex:1;overflow:auto}main{margin:auto;padding-bottom:1px;text-align:center}aside{align-items:center;background:#fff;display:flex;flex-shrink:0;justify-content:center;padding:16px;position:relative;text-align:center;text-shadow:none;width:100%}aside .icon{fill:#4baaf4;margin-right:8px}aside p{margin:0}aside a,aside button.faux-link{color:#4baaf4}aside a.tab-focus,aside button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(75,170,244,.35);outline:0}.grid{margin:0 auto;padding:16px}@media only screen and (min-width:768px){.grid{align-items:center;display:flex;max-width:1260px;width:100%}.grid>*{flex:1}}html{font-size:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:15px;font-size:.9375rem;color:#4a5764;font-family:Gordita,Avenir,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:500;line-height:1.75}button,input,select,textarea{font:inherit}p,small{margin:0 0 24px}small{font-size:13px;font-size:.8125rem;display:block}h1{font-size:64px;font-size:4rem;color:#00b3ff;font-weight:600;letter-spacing:-.025em;line-height:1.2;margin:0 0 24px}.button,.button__count{align-items:center;border:0;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.1);display:inline-flex;padding:12px;position:relative;text-shadow:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.button{background:#00b3ff;color:#fff;font-weight:600;padding-left:20px;padding-right:20px;transition:all .2s ease}.button:focus,.button:hover{background:#1abaff}.button:focus::after,.button:hover::after{display:none}.button:hover{box-shadow:0 2px 2px rgba(0,0,0,.1)}.button:focus{outline:0}.button.tab-focus{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}.button:active{top:1px}.button--with-count{display:inline-flex}.button--with-count .button .icon{flex-shrink:0}.button__count{animation:fadein .2s ease;background:#fff;color:#5d6e7e;margin-left:12px}.button__count::before{border:5px solid transparent;border-left-width:0;border-right-color:#fff;content:'';height:0;position:absolute;right:100%;top:50%;transform:translateY(-50%);width:0}header{padding-bottom:16px;text-align:center}header h1 span{animation:shrinkHide 1s cubic-bezier(.175,.885,.32,1.275) 2s forwards;display:inline-block;font-weight:300;opacity:.5}header .call-to-action{margin-top:24px}@media only screen and (min-width:768px){header{margin-right:48px;max-width:360px;padding-bottom:32px;text-align:left}header p:first-of-type{font-size:16px;font-size:1rem}}.icon{fill:currentColor;height:16px;vertical-align:-3px;width:16px}a svg,button svg,button.faux-link svg,label svg{pointer-events:none}.btn .icon,a .icon,button.faux-link .icon{margin-right:8px}button.faux-link{background:0 0;border:0;border-radius:0;cursor:pointer;font:inherit;line-height:1.75;margin:0;padding:0;position:relative;text-align:inherit;text-shadow:inherit;-moz-user-select:text;vertical-align:baseline;width:auto}a,button.faux-link{border-bottom:1px dotted currentColor;color:#00b3ff;position:relative;text-decoration:none;transition:all .2s ease}a::after,button.faux-link::after{background:currentColor;content:'';height:1px;left:50%;position:absolute;top:100%;transform:translateX(-50%);transition:width .2s ease;width:0}a:focus,a:hover,button.faux-link:focus,button.faux-link:hover{border-bottom-color:transparent;outline:0}a:focus::after,a:hover::after,button.faux-link:focus::after,button.faux-link:hover::after{width:100%}a.tab-focus,button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}a.no-border::after,button.no-border.faux-link::after{display:none}li,ul{list-style:none;margin:0;padding:0}audio,img,video{max-width:100%;vertical-align:middle}nav{display:flex;justify-content:center;margin-bottom:16px}.plyr{border-radius:4px;box-shadow:0 2px 15px rgba(0,0,0,.1);margin:16px auto}.plyr.plyr--audio{max-width:480px}.plyr__video-wrapper::after{border:1px solid rgba(0,0,0,.15);border-radius:inherit;bottom:0;content:'';left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.plyr__cite{color:#728597}.plyr__cite .icon{margin-right:3px}@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-family:var(--plyr-font-family,inherit);font-variant-numeric:tabular-nums;font-weight:500;font-weight:var(--plyr-font-weight-regular,400);height:100%;line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui button.faux-link,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:12px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:13px;font-size:var(--plyr-font-size-base,15px);padding:calc(10px * 2);padding:calc(var(--plyr-control-spacing,10px) * 2)}}@media (min-width:768px){.plyr__captions{font-size:18px;font-size:var(--plyr-font-size-large,18px)}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(calc(10px * -4));transform:translateY(calc(var(--plyr-control-spacing,10px) * -4))}.plyr__caption{background:rgba(0,0,0,.8);background:var(--plyr-captions-background,rgba(0,0,0,.8));border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:0 0;border:0;border-radius:3px;border-radius:var(--plyr-control-radius,3px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:calc(10px * .7);padding:var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7));position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{outline-color:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));outline-color:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));outline-offset:2px;outline-style:dotted;outline-width:3px}a.plyr__control,button.plyr__control.faux-link{text-decoration:none}a.plyr__control::after,a.plyr__control::before,button.plyr__control.faux-link::after,button.plyr__control.faux-link::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:calc(10px / 4);margin-left:calc(var(--plyr-control-spacing,10px)/ 4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:calc(10px / 4);padding-left:calc(var(--plyr-control-spacing,10px)/ 4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 calc(10px / 2);padding:0 calc(var(--plyr-control-spacing,10px)/ 2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr__controls:empty{display:none}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);background:var(--plyr-menu-background,rgba(255,255,255,.9));border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:var(--plyr-menu-shadow,0 1px 2px rgba(0,0,0,.15));color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:13px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border:var(--plyr-menu-arrow-size,4px) solid transparent;border-top-color:rgba(255,255,255,.9);border-top-color:var(--plyr-menu-background,rgba(255,255,255,.9));content:'';height:0;position:absolute;right:calc(((18px / 2) + calc(10px * .7)) - (4px / 2));right:calc(((var(--plyr-control-icon-size,18px)/ 2) + var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))) - (var(--plyr-menu-arrow-size,4px)/ 2));top:100%;width:0}.plyr__menu__container [role=menu]{padding:calc(10px * .7);padding:var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:flex;font-size:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding-bottom:calc(calc(10px * .7)/ 1.5);padding-bottom:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))/ 1.5);padding-left:calc(calc(10px * .7) * 1.5);padding-left:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 1.5);padding-right:calc(calc(10px * .7) * 1.5);padding-right:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 1.5);padding-top:calc(calc(10px * .7)/ 1.5);padding-top:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))/ 1.5);-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;border:var(--plyr-menu-item-arrow-size,4px) solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:calc(calc(10px * .7) * 4);padding-right:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 4)}.plyr__menu__container .plyr__control--forward::after{border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:calc((calc(10px * .7) * 1.5) - 4px);right:calc((var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 1.5) - var(--plyr-menu-item-arrow-size,4px))}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;font-weight:var(--plyr-font-weight-regular,400);margin:calc(10px * .7);margin:var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7));margin-bottom:calc(calc(10px * .7)/ 2);margin-bottom:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))/ 2);padding-left:calc(calc(10px * .7) * 4);padding-left:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 4);position:relative;width:calc(100% - (calc(10px * .7) * 2));width:calc(100% - (var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 2))}.plyr__menu__container .plyr__control--back::after{border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:calc((calc(10px * .7) * 1.5) - 4px);left:calc((var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 1.5) - var(--plyr-menu-item-arrow-size,4px))}.plyr__menu__container .plyr__control--back::before{background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:'';height:1px;left:0;margin-top:calc(calc(10px * .7)/ 2);margin-top:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))/ 2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:calc(10px * .7);padding-left:var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7))}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(35,40,47,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:calc((calc(10px * .7) - 2) * -1);margin-right:calc((var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) - 2) * -1);overflow:hidden;padding-left:calc(calc(10px * .7) * 3.5);padding-left:calc(var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)) * 3.5);pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:calc(13px * 2);border-radius:calc(var(--plyr-range-thumb-height,13px) * 2);color:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));display:block;height:calc((3px * 2) + 13px);height:calc((var(--plyr-range-thumb-active-shadow-width,3px) * 2) + var(--plyr-range-thumb-height,13px));margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor 0,transparent 0);background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px);-webkit-appearance:none;margin-top:calc(((13px - 5px)/ 2) * -1);margin-top:calc(((var(--plyr-range-thumb-height,13px) - var(--plyr-range-track-height,5px))/ 2) * -1)}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px);margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{outline-color:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));outline-color:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));outline-offset:2px;outline-style:dotted;outline-width:3px}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{outline-color:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));outline-color:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));outline-offset:2px;outline-style:dotted;outline-width:3px}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{outline-color:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));outline-color:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));outline-offset:2px;outline-style:dotted;outline-width:3px}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:11px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:calc(768px - 1)){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:rgba(255,255,255,.9);background:var(--plyr-tooltip-background,rgba(255,255,255,.9));border-radius:3px;border-radius:var(--plyr-tooltip-radius,3px);bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:12px;font-size:var(--plyr-font-size-small,13px);font-weight:500;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:calc(calc(10px / 2) * 2);margin-bottom:calc(var(--plyr-tooltip-padding,calc(var(--plyr-control-spacing,10px)/ 2)) * 2);opacity:0;padding:calc(10px / 2) calc(calc(10px / 2) * 1.5);padding:var(--plyr-tooltip-padding,calc(var(--plyr-control-spacing,10px)/ 2)) calc(var(--plyr-tooltip-padding,calc(var(--plyr-control-spacing,10px)/ 2)) * 1.5);pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:4px solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:4px solid rgba(255,255,255,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,rgba(255,255,255,.9));bottom:calc(4px * -1);bottom:calc(var(--plyr-tooltip-arrow-size,4px) * -1);content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:calc((18px / 2) + calc(10px * .7));left:calc((var(--plyr-control-icon-size,18px)/ 2) + var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)))}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:calc((18px / 2) + calc(10px * .7));right:calc((var(--plyr-control-icon-size,18px)/ 2) + var(--plyr-control-padding,calc(var(--plyr-control-spacing,10px) * .7)));transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr__progress{left:calc(13px * .5);left:calc(var(--plyr-range-thumb-height,13px) * .5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:calc(13px * -.5);margin-left:calc(var(--plyr-range-thumb-height,13px) * -.5);margin-right:calc(13px * -.5);margin-right:calc(var(--plyr-range-thumb-height,13px) * -.5);width:calc(100% + 13px);width:calc(100% + var(--plyr-range-thumb-height,13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:11px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px));left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:calc((5px / 2) * -1);margin-top:calc((var(--plyr-range-track-height,5px)/ 2) * -1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,40,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,40,47,.6) 50%,rgba(35,40,47,.6) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 25%,transparent 25%,transparent 50%,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 50%,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-progress-buffered-background,rgba(255,255,255,.25))}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6))}.plyr__volume{align-items:center;display:flex;max-width:110px;min-width:80px;position:relative;width:20%}.plyr__volume input[type=range]{margin-left:calc(10px / 2);margin-left:calc(var(--plyr-control-spacing,10px)/ 2);margin-right:calc(10px / 2);margin-right:calc(var(--plyr-control-spacing,10px)/ 2);position:relative;z-index:2}.plyr--is-ios .plyr__volume{min-width:0;width:auto}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--audio .plyr__progress__buffer{color:rgba(193,200,209,.6);color:var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6))}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;left:0;position:absolute;top:0}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.75));background:var(--plyr-video-controls-background,linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.75)));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:calc(10px / 2);padding:calc(var(--plyr-control-spacing,10px)/ 2);padding-top:calc(10px * 2);padding-top:calc(var(--plyr-control-spacing,10px) * 2);position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:10px;padding:var(--plyr-control-spacing,10px);padding-top:calc(10px * 3.5);padding-top:calc(var(--plyr-control-spacing,10px) * 3.5)}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:var(--plyr-color-main,var(--plyr-color-main,#00b3ff));background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));border:0;border-radius:100%;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:calc(10px * 1.5);padding:calc(var(--plyr-control-spacing,10px) * 1.5);position:absolute;top:50%;transform:translate(-50%,-50%);transition:.3s;z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,rgba(255,255,255,.25)))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,rgba(255,255,255,.25)))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,rgba(255,255,255,.25)))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(255,255,255,.5))}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(255,255,255,.5))}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(255,255,255,.5))}.plyr--video .plyr__progress__buffer{color:rgba(255,255,255,.25);color:var(--plyr-video-progress-buffered-background,rgba(255,255,255,.25))}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}.plyr:-ms-fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;display:block;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;position:static}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;position:relative}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin:-var(--plyr-range-track-height,5px)/2 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);background-color:var(--plyr-tooltip-background,rgba(255,255,255,.9));border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));margin-bottom:calc(calc(10px / 2) * 2);margin-bottom:calc(var(--plyr-tooltip-padding,calc(var(--plyr-control-spacing,10px)/ 2)) * 2);opacity:0;padding:3px;padding:var(--plyr-tooltip-radius,3px);pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:4px solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:4px solid rgba(255,255,255,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,rgba(255,255,255,.9));bottom:calc(4px * -1);bottom:calc(var(--plyr-tooltip-arrow-size,4px) * -1);content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:calc(3px - 1px);border-radius:calc(var(--plyr-tooltip-radius,3px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:calc(3px - 1px);border-radius:calc(var(--plyr-tooltip-radius,3px) - 1px);color:#fff;font-size:11px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px));padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.no-border{border:0}[hidden]{display:none}.sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;opacity:.001;overflow:hidden;padding:0;position:absolute;width:1px}
\ No newline at end of file diff --git a/demo/dist/demo.js b/demo/dist/demo.js index 03013b4d..1d40c372 100644 --- a/demo/dist/demo.js +++ b/demo/dist/demo.js @@ -7,7 +7,6 @@ typeof navigator === "object" && (function () { return module = { exports: {} }, fn(module, module.exports), module.exports; } - var O = 'object'; var check = function (it) { return it && it.Math == Math && it; }; @@ -15,10 +14,10 @@ typeof navigator === "object" && (function () { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global_1 = // eslint-disable-next-line no-undef - check(typeof globalThis == O && globalThis) || - check(typeof window == O && window) || - check(typeof self == O && self) || - check(typeof commonjsGlobal == O && commonjsGlobal) || + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func Function('return this')(); @@ -32,7 +31,7 @@ typeof navigator === "object" && (function () { // Thank's IE8 for his funny defineProperty var descriptors = !fails(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; }); var nativePropertyIsEnumerable = {}.propertyIsEnumerable; @@ -41,6 +40,8 @@ typeof navigator === "object" && (function () { // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + // `Object.prototype.propertyIsEnumerable` method implementation + // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable var f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; @@ -65,12 +66,9 @@ typeof navigator === "object" && (function () { return toString.call(it).slice(8, -1); }; - // fallback for non-array-like ES3 and non-enumerable old V8 strings - - - var split = ''.split; + // fallback for non-array-like ES3 and non-enumerable old V8 strings var indexedObject = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins @@ -98,15 +96,16 @@ typeof navigator === "object" && (function () { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; - // 7.1.1 ToPrimitive(input [, PreferredType]) + // `ToPrimitive` abstract operation + // https://tc39.github.io/ecma262/#sec-toprimitive // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string - var toPrimitive = function (it, S) { - if (!isObject(it)) return it; + var toPrimitive = function (input, PREFERRED_STRING) { + if (!isObject(input)) return input; var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; @@ -118,10 +117,10 @@ typeof navigator === "object" && (function () { var document$1 = global_1.document; // typeof document.createElement is 'object' in old IE - var exist = isObject(document$1) && isObject(document$1.createElement); + var EXISTS = isObject(document$1) && isObject(document$1.createElement); var documentCreateElement = function (it) { - return exist ? document$1.createElement(it) : {}; + return EXISTS ? document$1.createElement(it) : {}; }; // Thank's IE8 for his funny defineProperty @@ -133,6 +132,8 @@ typeof navigator === "object" && (function () { var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); @@ -154,6 +155,8 @@ typeof navigator === "object" && (function () { var nativeDefineProperty = Object.defineProperty; + // `Object.defineProperty` method + // https://tc39.github.io/ecma262/#sec-object.defineproperty var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); @@ -170,7 +173,7 @@ typeof navigator === "object" && (function () { f: f$2 }; - var hide = descriptors ? function (object, key, value) { + var createNonEnumerableProperty = descriptors ? function (object, key, value) { return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; @@ -179,38 +182,49 @@ typeof navigator === "object" && (function () { var setGlobal = function (key, value) { try { - hide(global_1, key, value); + createNonEnumerableProperty(global_1, key, value); } catch (error) { global_1[key] = value; } return value; }; - var isPure = false; - - var shared = createCommonjsModule(function (module) { var SHARED = '__core-js_shared__'; var store = global_1[SHARED] || setGlobal(SHARED, {}); + var sharedStore = store; + + var functionToString = Function.toString; + + // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper + if (typeof sharedStore.inspectSource != 'function') { + sharedStore.inspectSource = function (it) { + return functionToString.call(it); + }; + } + + var inspectSource = sharedStore.inspectSource; + + var WeakMap$1 = global_1.WeakMap; + + var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(inspectSource(WeakMap$1)); + + var isPure = false; + + var shared = createCommonjsModule(function (module) { (module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); + return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); })('versions', []).push({ - version: '3.1.3', + version: '3.6.5', mode: 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); }); - var functionToString = shared('native-function-to-string', Function.toString); - - var WeakMap$1 = global_1.WeakMap; - - var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(functionToString.call(WeakMap$1)); - var id = 0; var postfix = Math.random(); var uid = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36)); + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; var keys = shared('keys'); @@ -238,25 +252,25 @@ typeof navigator === "object" && (function () { }; if (nativeWeakMap) { - var store = new WeakMap$2(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; + var store$1 = new WeakMap$2(); + var wmget = store$1.get; + var wmhas = store$1.has; + var wmset = store$1.set; set = function (it, metadata) { - wmset.call(store, it, metadata); + wmset.call(store$1, it, metadata); return metadata; }; get = function (it) { - return wmget.call(store, it) || {}; + return wmget.call(store$1, it) || {}; }; has$1 = function (it) { - return wmhas.call(store, it); + return wmhas.call(store$1, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { - hide(it, STATE, metadata); + createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { @@ -278,18 +292,14 @@ typeof navigator === "object" && (function () { var redefine = createCommonjsModule(function (module) { var getInternalState = internalState.get; var enforceInternalState = internalState.enforce; - var TEMPLATE = String(functionToString).split('toString'); - - shared('inspectSource', function (it) { - return functionToString.call(it); - }); + var TEMPLATE = String(String).split('String'); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); + if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global_1) { @@ -302,13 +312,24 @@ typeof navigator === "object" && (function () { simple = true; } if (simple) O[key] = value; - else hide(O, key, value); + else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || functionToString.call(this); + return typeof this == 'function' && getInternalState(this).source || inspectSource(this); }); }); + var path = global_1; + + var aFunction = function (variable) { + return typeof variable == 'function' ? variable : undefined; + }; + + var getBuiltIn = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) + : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; + }; + var ceil = Math.ceil; var floor = Math.floor; @@ -331,18 +352,14 @@ typeof navigator === "object" && (function () { // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). var toAbsoluteIndex = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min$1(integer, length); }; // `Array.prototype.{ indexOf, includes }` methods implementation - // false -> Array#indexOf - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - // true -> Array#includes - // https://tc39.github.io/ecma262/#sec-array.prototype.includes - var arrayIncludes = function (IS_INCLUDES) { + var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); @@ -355,13 +372,23 @@ typeof navigator === "object" && (function () { // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; - var arrayIndexOf = arrayIncludes(false); + var arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) + }; + + var indexOf = arrayIncludes.indexOf; + var objectKeysInternal = function (object, names) { var O = toIndexedObject(object); @@ -371,7 +398,7 @@ typeof navigator === "object" && (function () { for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); + ~indexOf(result, key) || result.push(key); } return result; }; @@ -387,12 +414,10 @@ typeof navigator === "object" && (function () { 'valueOf' ]; - // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) - - - var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); + // `Object.getOwnPropertyNames` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertynames var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return objectKeysInternal(O, hiddenKeys$1); }; @@ -407,10 +432,8 @@ typeof navigator === "object" && (function () { f: f$4 }; - var Reflect = global_1.Reflect; - // all object keys, includes non-enumerable and symbols - var ownKeys = Reflect && Reflect.ownKeys || function ownKeys(it) { + var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = objectGetOwnPropertyNames.f(anObject(it)); var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; @@ -493,22 +516,22 @@ typeof navigator === "object" && (function () { } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { - hide(sourceProperty, 'sham', true); + createNonEnumerableProperty(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); } }; - var aFunction = function (it) { + var aFunction$1 = function (it) { if (typeof it != 'function') { throw TypeError(String(it) + ' is not a function'); } return it; }; // optional / simple context binding - var bindContext = function (fn, that, length) { - aFunction(fn); + var functionBindContext = function (fn, that, length) { + aFunction$1(fn); if (that === undefined) return fn; switch (length) { case 0: return function () { @@ -547,12 +570,21 @@ typeof navigator === "object" && (function () { return !String(Symbol()); }); + var useSymbolAsUid = nativeSymbol + // eslint-disable-next-line no-undef + && !Symbol.sham + // eslint-disable-next-line no-undef + && typeof Symbol.iterator == 'symbol'; + + var WellKnownSymbolsStore = shared('wks'); var Symbol$1 = global_1.Symbol; - var store$1 = shared('wks'); + var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid; var wellKnownSymbol = function (name) { - return store$1[name] || (store$1[name] = nativeSymbol && Symbol$1[name] - || (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name)); + if (!has(WellKnownSymbolsStore, name)) { + if (nativeSymbol && has(Symbol$1, name)) WellKnownSymbolsStore[name] = Symbol$1[name]; + else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; }; var SPECIES = wellKnownSymbol('species'); @@ -572,35 +604,23 @@ typeof navigator === "object" && (function () { } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); }; + var push = [].push; + // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation - // 0 -> Array#forEach - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - // 1 -> Array#map - // https://tc39.github.io/ecma262/#sec-array.prototype.map - // 2 -> Array#filter - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - // 3 -> Array#some - // https://tc39.github.io/ecma262/#sec-array.prototype.some - // 4 -> Array#every - // https://tc39.github.io/ecma262/#sec-array.prototype.every - // 5 -> Array#find - // https://tc39.github.io/ecma262/#sec-array.prototype.find - // 6 -> Array#findIndex - // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - var arrayMethods = function (TYPE, specificCreate) { + var createMethod$1 = function (TYPE) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = specificCreate || arraySpeciesCreate; - return function ($this, callbackfn, that) { + return function ($this, callbackfn, that, specificCreate) { var O = toObject($this); var self = indexedObject(O); - var boundFunction = bindContext(callbackfn, that, 3); + var boundFunction = functionBindContext(callbackfn, that, 3); var length = toLength(self.length); var index = 0; + var create = specificCreate || arraySpeciesCreate; var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var value, result; for (;length > index; index++) if (NO_HOLES || index in self) { @@ -612,7 +632,7 @@ typeof navigator === "object" && (function () { case 3: return true; // some case 5: return value; // find case 6: return index; // findIndex - case 2: target.push(value); // filter + case 2: push.call(target, value); // filter } else if (IS_EVERY) return false; // every } } @@ -620,21 +640,73 @@ typeof navigator === "object" && (function () { }; }; - var sloppyArrayMethod = function (METHOD_NAME, argument) { + var arrayIteration = { + // `Array.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + forEach: createMethod$1(0), + // `Array.prototype.map` method + // https://tc39.github.io/ecma262/#sec-array.prototype.map + map: createMethod$1(1), + // `Array.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-array.prototype.filter + filter: createMethod$1(2), + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + some: createMethod$1(3), + // `Array.prototype.every` method + // https://tc39.github.io/ecma262/#sec-array.prototype.every + every: createMethod$1(4), + // `Array.prototype.find` method + // https://tc39.github.io/ecma262/#sec-array.prototype.find + find: createMethod$1(5), + // `Array.prototype.findIndex` method + // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod$1(6) + }; + + var arrayMethodIsStrict = function (METHOD_NAME, argument) { var method = [][METHOD_NAME]; - return !method || !fails(function () { + return !!method && fails(function () { // eslint-disable-next-line no-useless-call,no-throw-literal method.call(null, argument || function () { throw 1; }, 1); }); }; - var internalForEach = arrayMethods(0); - var SLOPPY_METHOD = sloppyArrayMethod('forEach'); + var defineProperty = Object.defineProperty; + var cache = {}; + + var thrower = function (it) { throw it; }; + + var arrayMethodUsesToLength = function (METHOD_NAME, options) { + if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; + if (!options) options = {}; + var method = [][METHOD_NAME]; + var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; + var argument0 = has(options, 0) ? options[0] : thrower; + var argument1 = has(options, 1) ? options[1] : undefined; + + return cache[METHOD_NAME] = !!method && !fails(function () { + if (ACCESSORS && !descriptors) return true; + var O = { length: -1 }; + + if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower }); + else O[1] = 1; + + method.call(O, argument0, argument1); + }); + }; + + var $forEach = arrayIteration.forEach; + + + + var STRICT_METHOD = arrayMethodIsStrict('forEach'); + var USES_TO_LENGTH = arrayMethodUsesToLength('forEach'); // `Array.prototype.forEach` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - var arrayForEach = SLOPPY_METHOD ? function forEach(callbackfn /* , thisArg */) { - return internalForEach(this, callbackfn, arguments[1]); + var arrayForEach = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } : [].forEach; // `Array.prototype.forEach` method @@ -672,6 +744,13 @@ typeof navigator === "object" && (function () { }; var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + var test = {}; + + test[TO_STRING_TAG] = 'z'; + + var toStringTagSupport = String(test) === '[object z]'; + + var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; @@ -683,11 +762,11 @@ typeof navigator === "object" && (function () { }; // getting tag from ES6+ `Object.prototype.toString` - var classof = function (it) { + var classof = toStringTagSupport ? classofRaw : function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback @@ -702,7 +781,7 @@ typeof navigator === "object" && (function () { || iterators[classof(it)]; }; - // `Array.from` method + // `Array.from` method implementation // https://tc39.github.io/ecma262/#sec-array.from var arrayFrom = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { var O = toObject(arrayLike); @@ -710,25 +789,25 @@ typeof navigator === "object" && (function () { var argumentsLength = arguments.length; var mapfn = argumentsLength > 1 ? arguments[1] : undefined; var mapping = mapfn !== undefined; - var index = 0; var iteratorMethod = getIteratorMethod(O); - var length, result, step, iterator; - if (mapping) mapfn = bindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + var index = 0; + var length, result, step, iterator, next, value; + if (mapping) mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); // if the target is not iterable or it's an array with the default iterator - use a simple case if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { iterator = iteratorMethod.call(O); + next = iterator.next; result = new C(); - for (;!(step = iterator.next()).done; index++) { - createProperty(result, index, mapping - ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) - : step.value - ); + for (;!(step = next.call(iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); } } else { length = toLength(O.length); result = new C(length); for (;length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); } } result.length = index; @@ -782,74 +861,107 @@ typeof navigator === "object" && (function () { from: arrayFrom }); - // 19.1.2.14 / 15.2.3.14 Object.keys(O) + // `Object.keys` method + // https://tc39.github.io/ecma262/#sec-object.keys var objectKeys = Object.keys || function keys(O) { return objectKeysInternal(O, enumBugKeys); }; + // `Object.defineProperties` method + // https://tc39.github.io/ecma262/#sec-object.defineproperties var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = objectKeys(Properties); var length = keys.length; - var i = 0; + var index = 0; var key; - while (length > i) objectDefineProperty.f(O, key = keys[i++], Properties[key]); + while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]); return O; }; - var document$2 = global_1.document; - - var html = document$2 && document$2.documentElement; + var html = getBuiltIn('document', 'documentElement'); + var GT = '>'; + var LT = '<'; + var PROTOTYPE = 'prototype'; + var SCRIPT = 'script'; var IE_PROTO = sharedKey('IE_PROTO'); - var PROTOTYPE = 'prototype'; - var Empty = function () { /* empty */ }; + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; + }; // Create object with fake `null` prototype: use iframe Object with cleared prototype - var createDict = function () { + var NullProtoObjectViaIFrame = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); - var length = enumBugKeys.length; - var lt = '<'; - var script = 'script'; - var gt = '>'; - var js = 'java' + script + ':'; + var JS = 'java' + SCRIPT + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); - iframe.src = String(js); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); - iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); + iframeDocument.write(scriptTag('document.F=Object')); iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); + return iframeDocument.F; + }; + + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + /* global ActiveXObject */ + activeXDocument = document.domain && new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); }; - // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) + hiddenKeys[IE_PROTO] = true; + + // `Object.create` method + // https://tc39.github.io/ecma262/#sec-object.create var objectCreate = Object.create || function create(O, Properties) { var result; if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; - } else result = createDict(); + } else result = NullProtoObject(); return Properties === undefined ? result : objectDefineProperties(result, Properties); }; - hiddenKeys[IE_PROTO] = true; - var UNSCOPABLES = wellKnownSymbol('unscopables'); var ArrayPrototype$1 = Array.prototype; // Array.prototype[@@unscopables] // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables if (ArrayPrototype$1[UNSCOPABLES] == undefined) { - hide(ArrayPrototype$1, UNSCOPABLES, objectCreate(null)); + objectDefineProperty.f(ArrayPrototype$1, UNSCOPABLES, { + configurable: true, + value: objectCreate(null) + }); } // add a key to Array.prototype[@@unscopables] @@ -857,19 +969,76 @@ typeof navigator === "object" && (function () { ArrayPrototype$1[UNSCOPABLES][key] = true; }; - var internalIncludes = arrayIncludes(true); + var $includes = arrayIncludes.includes; + + + + var USES_TO_LENGTH$1 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes - _export({ target: 'Array', proto: true }, { + _export({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$1 }, { includes: function includes(el /* , fromIndex = 0 */) { - return internalIncludes(this, el, arguments.length > 1 ? arguments[1] : undefined); + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('includes'); + var engineUserAgent = getBuiltIn('navigator', 'userAgent') || ''; + + var process$1 = global_1.process; + var versions = process$1 && process$1.versions; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + version = match[0] + match[1]; + } else if (engineUserAgent) { + match = engineUserAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = engineUserAgent.match(/Chrome\/(\d+)/); + if (match) version = match[1]; + } + } + + var engineV8Version = version && +version; + + var SPECIES$1 = wellKnownSymbol('species'); + + var arrayMethodHasSpeciesSupport = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return engineV8Version >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES$1] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); + }; + + var $map = arrayIteration.map; + + + + var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); + // FF49- issue + var USES_TO_LENGTH$2 = arrayMethodUsesToLength('map'); + + // `Array.prototype.map` method + // https://tc39.github.io/ecma262/#sec-array.prototype.map + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$2 }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + var FAILS_ON_PRIMITIVES = fails(function () { objectKeys(1); }); // `Object.keys` method @@ -880,6 +1049,49 @@ typeof navigator === "object" && (function () { } }); + var aPossiblePrototype = function (it) { + if (!isObject(it) && it !== null) { + throw TypeError("Can't set " + String(it) + ' as a prototype'); + } return it; + }; + + // `Object.setPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-object.setprototypeof + // Works with __proto__ only. Old v8 can't work with null proto objects. + /* eslint-disable no-proto */ + var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; + setter.call(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter.call(O, proto); + else O.__proto__ = proto; + return O; + }; + }() : undefined); + + // makes subclassing work correct for wrapped built-ins + var inheritIfRequired = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + objectSetPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + typeof (NewTarget = dummy.constructor) == 'function' && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) objectSetPrototypeOf($this, NewTargetPrototype); + return $this; + }; + var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation @@ -889,17 +1101,255 @@ typeof navigator === "object" && (function () { return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp'); }; - // helper for String#{startsWith, endsWith, includes} + // `RegExp.prototype.flags` getter implementation + // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags + var regexpFlags = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; + }; + + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, + // so we use an intermediate function. + function RE(s, f) { + return RegExp(s, f); + } + + var UNSUPPORTED_Y = fails(function () { + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var re = RE('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; + }); + + var BROKEN_CARET = fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = RE('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; + }); + + var regexpStickyHelpers = { + UNSUPPORTED_Y: UNSUPPORTED_Y, + BROKEN_CARET: BROKEN_CARET + }; + var SPECIES$2 = wellKnownSymbol('species'); + var setSpecies = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = objectDefineProperty.f; - var validateStringMethodArguments = function (that, searchString, NAME) { - if (isRegexp(searchString)) { - throw TypeError('String.prototype.' + NAME + " doesn't accept regex"); - } return String(requireObjectCoercible(that)); + if (descriptors && Constructor && !Constructor[SPECIES$2]) { + defineProperty(Constructor, SPECIES$2, { + configurable: true, + get: function () { return this; } + }); + } }; + var defineProperty$1 = objectDefineProperty.f; + var getOwnPropertyNames = objectGetOwnPropertyNames.f; + + + + + + var setInternalState = internalState.set; + + + var MATCH$1 = wellKnownSymbol('match'); + var NativeRegExp = global_1.RegExp; + var RegExpPrototype = NativeRegExp.prototype; + var re1 = /a/g; + var re2 = /a/g; + + // "new" should create a new object, old webkit bug + var CORRECT_NEW = new NativeRegExp(re1) !== re1; + + var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y; + + var FORCED = descriptors && isForced_1('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y$1 || fails(function () { + re2[MATCH$1] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; + }))); + + // `RegExp` constructor + // https://tc39.github.io/ecma262/#sec-regexp-constructor + if (FORCED) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = this instanceof RegExpWrapper; + var patternIsRegExp = isRegexp(pattern); + var flagsAreUndefined = flags === undefined; + var sticky; + + if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) { + return pattern; + } + + if (CORRECT_NEW) { + if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source; + } else if (pattern instanceof RegExpWrapper) { + if (flagsAreUndefined) flags = regexpFlags.call(pattern); + pattern = pattern.source; + } + + if (UNSUPPORTED_Y$1) { + sticky = !!flags && flags.indexOf('y') > -1; + if (sticky) flags = flags.replace(/y/g, ''); + } + + var result = inheritIfRequired( + CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags), + thisIsRegExp ? this : RegExpPrototype, + RegExpWrapper + ); + + if (UNSUPPORTED_Y$1 && sticky) setInternalState(result, { sticky: sticky }); + + return result; + }; + var proxy = function (key) { + key in RegExpWrapper || defineProperty$1(RegExpWrapper, key, { + configurable: true, + get: function () { return NativeRegExp[key]; }, + set: function (it) { NativeRegExp[key] = it; } + }); + }; + var keys$1 = getOwnPropertyNames(NativeRegExp); + var index = 0; + while (keys$1.length > index) proxy(keys$1[index++]); + RegExpPrototype.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype; + redefine(global_1, 'RegExp', RegExpWrapper); + } + + // https://tc39.github.io/ecma262/#sec-get-regexp-@@species + setSpecies('RegExp'); + + var nativeExec = RegExp.prototype.exec; + // This always refers to the native implementation, because the + // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, + // which loads this file before patching the method. + var nativeReplace = String.prototype.replace; + + var patchedExec = nativeExec; + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; + })(); + + var UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$2; + + if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + var sticky = UNSUPPORTED_Y$2 && re.sticky; + var flags = regexpFlags.call(re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = flags.replace('y', ''); + if (flags.indexOf('g') === -1) { + flags += 'g'; + } + + strCopy = String(str).slice(re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = nativeExec.call(sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = match.input.slice(charsAdded); + match[0] = match[0].slice(charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; + } + + var regexpExec = patchedExec; + + _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, { + exec: regexpExec + }); + + var TO_STRING = 'toString'; + var RegExpPrototype$1 = RegExp.prototype; + var nativeToString = RegExpPrototype$1[TO_STRING]; + + var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); + // FF44- RegExp#toString has a wrong name + var INCORRECT_NAME = nativeToString.name != TO_STRING; + + // `RegExp.prototype.toString` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring + if (NOT_GENERIC || INCORRECT_NAME) { + redefine(RegExp.prototype, TO_STRING, function toString() { + var R = anObject(this); + var p = String(R.source); + var rf = R.flags; + var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$1) ? regexpFlags.call(R) : rf); + return '/' + p + '/' + f; + }, { unsafe: true }); + } + + var notARegexp = function (it) { + if (isRegexp(it)) { + throw TypeError("The method doesn't accept regular expressions"); + } return it; + }; + + var MATCH$2 = wellKnownSymbol('match'); var correctIsRegexpLogic = function (METHOD_NAME) { var regexp = /./; @@ -907,7 +1357,7 @@ typeof navigator === "object" && (function () { '/./'[METHOD_NAME](regexp); } catch (e) { try { - regexp[MATCH$1] = false; + regexp[MATCH$2] = false; return '/./'[METHOD_NAME](regexp); } catch (f) { /* empty */ } } return false; @@ -917,24 +1367,34 @@ typeof navigator === "object" && (function () { // https://tc39.github.io/ecma262/#sec-string.prototype.includes _export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, { includes: function includes(searchString /* , position = 0 */) { - return !!~validateStringMethodArguments(this, searchString, 'includes') - .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); + return !!~String(requireObjectCoercible(this)) + .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined); } }); - // CONVERT_TO_STRING: true -> String#at - // CONVERT_TO_STRING: false -> String#codePointAt - var stringAt = function (that, pos, CONVERT_TO_STRING) { - var S = String(requireObjectCoercible(that)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = S.charCodeAt(position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING ? S.charAt(position) : first - : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + // `String.prototype.{ codePointAt, at }` methods implementation + var createMethod$2 = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; + }; + + var stringMultibyte = { + // `String.prototype.codePointAt` method + // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod$2(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod$2(true) }; var correctPrototypeGetter = !fails(function () { @@ -946,7 +1406,8 @@ typeof navigator === "object" && (function () { var IE_PROTO$1 = sharedKey('IE_PROTO'); var ObjectPrototype = Object.prototype; - // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) + // `Object.getPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-object.getprototypeof var objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) { O = toObject(O); if (has(O, IE_PROTO$1)) return O[IE_PROTO$1]; @@ -977,22 +1438,24 @@ typeof navigator === "object" && (function () { if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() - if ( !has(IteratorPrototype, ITERATOR$3)) hide(IteratorPrototype, ITERATOR$3, returnThis); + if ( !has(IteratorPrototype, ITERATOR$3)) { + createNonEnumerableProperty(IteratorPrototype, ITERATOR$3, returnThis); + } var iteratorsCore = { IteratorPrototype: IteratorPrototype, BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; - var defineProperty = objectDefineProperty.f; + var defineProperty$2 = objectDefineProperty.f; - var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); + var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); var setToStringTag = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG$1)) { - defineProperty(it, TO_STRING_TAG$1, { configurable: true, value: TAG }); + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG$2)) { + defineProperty$2(it, TO_STRING_TAG$2, { configurable: true, value: TAG }); } }; @@ -1012,32 +1475,6 @@ typeof navigator === "object" && (function () { return IteratorConstructor; }; - var validateSetPrototypeOfArguments = function (O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) { - throw TypeError("Can't set " + String(proto) + ' as a prototype'); - } - }; - - // Works with __proto__ only. Old v8 can't work with null proto objects. - /* eslint-disable no-proto */ - var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var correctSetter = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - correctSetter = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - validateSetPrototypeOfArguments(O, proto); - if (correctSetter) setter.call(O, proto); - else O.__proto__ = proto; - return O; - }; - }() : undefined); - var IteratorPrototype$2 = iteratorsCore.IteratorPrototype; var BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS; var ITERATOR$4 = wellKnownSymbol('iterator'); @@ -1078,7 +1515,7 @@ typeof navigator === "object" && (function () { if (objectSetPrototypeOf) { objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2); } else if (typeof CurrentIteratorPrototype[ITERATOR$4] != 'function') { - hide(CurrentIteratorPrototype, ITERATOR$4, returnThis$2); + createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$4, returnThis$2); } } // Set @@toStringTag to native iterators @@ -1094,7 +1531,7 @@ typeof navigator === "object" && (function () { // define iterator if ( IterablePrototype[ITERATOR$4] !== defaultIterator) { - hide(IterablePrototype, ITERATOR$4, defaultIterator); + createNonEnumerableProperty(IterablePrototype, ITERATOR$4, defaultIterator); } iterators[NAME] = defaultIterator; @@ -1115,14 +1552,18 @@ typeof navigator === "object" && (function () { return methods; }; + var charAt = stringMultibyte.charAt; + + + var STRING_ITERATOR = 'String Iterator'; - var setInternalState = internalState.set; + var setInternalState$1 = internalState.set; var getInternalState = internalState.getterFor(STRING_ITERATOR); // `String.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator defineIterator(String, 'String', function (iterated) { - setInternalState(this, { + setInternalState$1(this, { type: STRING_ITERATOR, string: String(iterated), index: 0 @@ -1135,7 +1576,7 @@ typeof navigator === "object" && (function () { var index = state.index; var point; if (index >= string.length) return { value: undefined, done: true }; - point = stringAt(string, index, true); + point = charAt(string, index); state.index += point.length; return { value: point, done: false }; }); @@ -1181,7 +1622,7 @@ typeof navigator === "object" && (function () { var CollectionPrototype = Collection && Collection.prototype; // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try { - hide(CollectionPrototype, 'forEach', arrayForEach); + createNonEnumerableProperty(CollectionPrototype, 'forEach', arrayForEach); } catch (error) { CollectionPrototype.forEach = arrayForEach; } @@ -1269,36 +1710,6 @@ typeof navigator === "object" && (function () { } })(); - var f$5 = wellKnownSymbol; - - var wrappedWellKnownSymbol = { - f: f$5 - }; - - var path = global_1; - - var defineProperty$1 = objectDefineProperty.f; - - var defineWellKnownSymbol = function (NAME) { - var Symbol = path.Symbol || (path.Symbol = {}); - if (!has(Symbol, NAME)) defineProperty$1(Symbol, NAME, { - value: wrappedWellKnownSymbol.f(NAME) - }); - }; - - // all enumerable object keys, includes symbols - var enumKeys = function (it) { - var result = objectKeys(it); - var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; - if (getOwnPropertySymbols) { - var symbols = getOwnPropertySymbols(it); - var propertyIsEnumerable = objectPropertyIsEnumerable.f; - var i = 0; - var key; - while (symbols.length > i) if (propertyIsEnumerable.call(it, key = symbols[i++])) result.push(key); - } return result; - }; - var nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f; var toString$1 = {}.toString; @@ -1315,34 +1726,51 @@ typeof navigator === "object" && (function () { }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window - var f$6 = function getOwnPropertyNames(it) { + var f$5 = function getOwnPropertyNames(it) { return windowNames && toString$1.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it)); }; var objectGetOwnPropertyNamesExternal = { + f: f$5 + }; + + var f$6 = wellKnownSymbol; + + var wellKnownSymbolWrapped = { f: f$6 }; + var defineProperty$3 = objectDefineProperty.f; + + var defineWellKnownSymbol = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!has(Symbol, NAME)) defineProperty$3(Symbol, NAME, { + value: wellKnownSymbolWrapped.f(NAME) + }); + }; + + var $forEach$1 = arrayIteration.forEach; + var HIDDEN = sharedKey('hidden'); var SYMBOL = 'Symbol'; - var setInternalState$1 = internalState.set; + var PROTOTYPE$1 = 'prototype'; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + var setInternalState$2 = internalState.set; var getInternalState$1 = internalState.getterFor(SYMBOL); + var ObjectPrototype$1 = Object[PROTOTYPE$1]; + var $Symbol = global_1.Symbol; + var $stringify = getBuiltIn('JSON', 'stringify'); var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; var nativeDefineProperty$1 = objectDefineProperty.f; var nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f; - var $Symbol = global_1.Symbol; - var JSON$1 = global_1.JSON; - var nativeJSONStringify = JSON$1 && JSON$1.stringify; - var PROTOTYPE$1 = 'prototype'; - var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); var nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f; - var SymbolRegistry = shared('symbol-registry'); var AllSymbols = shared('symbols'); var ObjectPrototypeSymbols = shared('op-symbols'); - var WellKnownSymbolsStore = shared('wks'); - var ObjectPrototype$1 = Object[PROTOTYPE$1]; + var StringToSymbolRegistry = shared('string-to-symbol-registry'); + var SymbolToStringRegistry = shared('symbol-to-string-registry'); + var WellKnownSymbolsStore$1 = shared('wks'); var QObject = global_1.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; @@ -1352,18 +1780,18 @@ typeof navigator === "object" && (function () { return objectCreate(nativeDefineProperty$1({}, 'a', { get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; } })).a != 7; - }) ? function (it, key, D) { - var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype$1, key); - if (ObjectPrototypeDescriptor) delete ObjectPrototype$1[key]; - nativeDefineProperty$1(it, key, D); - if (ObjectPrototypeDescriptor && it !== ObjectPrototype$1) { - nativeDefineProperty$1(ObjectPrototype$1, key, ObjectPrototypeDescriptor); + }) ? function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype$1, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype$1[P]; + nativeDefineProperty$1(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype$1) { + nativeDefineProperty$1(ObjectPrototype$1, P, ObjectPrototypeDescriptor); } } : nativeDefineProperty$1; var wrap = function (tag, description) { var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]); - setInternalState$1(symbol, { + setInternalState$2(symbol, { type: SYMBOL, tag: tag, description: description @@ -1372,76 +1800,79 @@ typeof navigator === "object" && (function () { return symbol; }; - var isSymbol = nativeSymbol && typeof $Symbol.iterator == 'symbol' ? function (it) { + var isSymbol = useSymbolAsUid ? function (it) { return typeof it == 'symbol'; } : function (it) { return Object(it) instanceof $Symbol; }; - var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectPrototype$1) $defineProperty(ObjectPrototypeSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); + var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype$1) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPrimitive(P, true); + anObject(Attributes); if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) nativeDefineProperty$1(it, HIDDEN, createPropertyDescriptor(1, {})); - it[HIDDEN][key] = true; + if (!Attributes.enumerable) { + if (!has(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {})); + O[HIDDEN][key] = true; } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = objectCreate(D, { enumerable: createPropertyDescriptor(0, false) }); - } return setSymbolDescriptor(it, key, D); - } return nativeDefineProperty$1(it, key, D); + if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty$1(O, key, Attributes); }; - var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIndexedObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; + var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach$1(keys, function (key) { + if (!descriptors || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; }; - var $create = function create(it, P) { - return P === undefined ? objectCreate(it) : $defineProperties(objectCreate(it), P); + var $create = function create(O, Properties) { + return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties); }; - var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = nativePropertyIsEnumerable$1.call(this, key = toPrimitive(key, true)); - if (this === ObjectPrototype$1 && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; + var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPrimitive(V, true); + var enumerable = nativePropertyIsEnumerable$1.call(this, P); + if (this === ObjectPrototype$1 && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; + return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; }; - var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIndexedObject(it); - key = toPrimitive(key, true); + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPrimitive(P, true); if (it === ObjectPrototype$1 && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; - var D = nativeGetOwnPropertyDescriptor$1(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; + var descriptor = nativeGetOwnPropertyDescriptor$1(it, key); + if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; }; - var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = nativeGetOwnPropertyNames$1(toIndexedObject(it)); + var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames$1(toIndexedObject(O)); var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && !has(hiddenKeys, key)) result.push(key); - } return result; + $forEach$1(names, function (key) { + if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); + }); + return result; }; - var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectPrototype$1; - var names = nativeGetOwnPropertyNames$1(IS_OP ? ObjectPrototypeSymbols : toIndexedObject(it)); + var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$1; + var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectPrototype$1, key) : true)) result.push(AllSymbols[key]); - } return result; + $forEach$1(names, function (key) { + if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype$1, key))) { + result.push(AllSymbols[key]); + } + }); + return result; }; // `Symbol` constructor @@ -1449,7 +1880,7 @@ typeof navigator === "object" && (function () { if (!nativeSymbol) { $Symbol = function Symbol() { if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); - var description = arguments[0] === undefined ? undefined : String(arguments[0]); + var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); var tag = uid(description); var setter = function (value) { if (this === ObjectPrototype$1) setter.call(ObjectPrototypeSymbols, value); @@ -1459,16 +1890,25 @@ typeof navigator === "object" && (function () { if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype$1, tag, { configurable: true, set: setter }); return wrap(tag, description); }; + redefine($Symbol[PROTOTYPE$1], 'toString', function toString() { return getInternalState$1(this).tag; }); + redefine($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + objectPropertyIsEnumerable.f = $propertyIsEnumerable; objectDefineProperty.f = $defineProperty; objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor; objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames; objectGetOwnPropertySymbols.f = $getOwnPropertySymbols; + wellKnownSymbolWrapped.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + if (descriptors) { // https://github.com/tc39/proposal-Symbol-description nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', { @@ -1481,33 +1921,32 @@ typeof navigator === "object" && (function () { redefine(ObjectPrototype$1, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); } } - - wrappedWellKnownSymbol.f = function (name) { - return wrap(wellKnownSymbol(name), name); - }; } _export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, { Symbol: $Symbol }); - for (var wellKnownSymbols = objectKeys(WellKnownSymbolsStore), k = 0; wellKnownSymbols.length > k;) { - defineWellKnownSymbol(wellKnownSymbols[k++]); - } + $forEach$1(objectKeys(WellKnownSymbolsStore$1), function (name) { + defineWellKnownSymbol(name); + }); _export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, { // `Symbol.for` method // https://tc39.github.io/ecma262/#sec-symbol.for 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); + var string = String(key); + if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = $Symbol(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; }, // `Symbol.keyFor` method // https://tc39.github.io/ecma262/#sec-symbol.keyfor keyFor: function keyFor(sym) { if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; }, useSetter: function () { USE_SETTER = true; }, useSimple: function () { USE_SETTER = false; } @@ -1547,41 +1986,48 @@ typeof navigator === "object" && (function () { // `JSON.stringify` method behavior with symbols // https://tc39.github.io/ecma262/#sec-json.stringify - JSON$1 && _export({ target: 'JSON', stat: true, forced: !nativeSymbol || fails(function () { - var symbol = $Symbol(); - // MS Edge converts symbol values to JSON as {} - return nativeJSONStringify([symbol]) != '[null]' - // WebKit converts symbol values to JSON as null - || nativeJSONStringify({ a: symbol }) != '{}' - // V8 throws on boxed symbols - || nativeJSONStringify(Object(symbol)) != '{}'; - }) }, { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return nativeJSONStringify.apply(JSON$1, args); - } - }); + if ($stringify) { + var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function () { + var symbol = $Symbol(); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) != '{}'; + }); + + _export({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, { + // eslint-disable-next-line no-unused-vars + stringify: function stringify(it, replacer, space) { + var args = [it]; + var index = 1; + var $replacer; + while (arguments.length > index) args.push(arguments[index++]); + $replacer = replacer; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return $stringify.apply(null, args); + } + }); + } // `Symbol.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive - if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf); + if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) { + createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf); + } // `Symbol.prototype[@@toStringTag]` property // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag setToStringTag($Symbol, SYMBOL); hiddenKeys[HIDDEN] = true; - var defineProperty$2 = objectDefineProperty.f; + var defineProperty$4 = objectDefineProperty.f; var NativeSymbol = global_1.Symbol; @@ -1608,7 +2054,7 @@ typeof navigator === "object" && (function () { var symbolToString = symbolPrototype.toString; var native = String(NativeSymbol('test')) == 'Symbol(test)'; var regexp = /^Symbol\((.*)\)[^)]+$/; - defineProperty$2(symbolPrototype, 'description', { + defineProperty$4(symbolPrototype, 'description', { configurable: true, get: function description() { var symbol = isObject(this) ? this.valueOf() : this; @@ -1628,25 +2074,29 @@ typeof navigator === "object" && (function () { // https://tc39.github.io/ecma262/#sec-symbol.iterator defineWellKnownSymbol('iterator'); - var internalIndexOf = arrayIncludes(false); + var $indexOf = arrayIncludes.indexOf; + + + var nativeIndexOf = [].indexOf; var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; - var SLOPPY_METHOD$1 = sloppyArrayMethod('indexOf'); + var STRICT_METHOD$1 = arrayMethodIsStrict('indexOf'); + var USES_TO_LENGTH$3 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - _export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD$1 }, { + _export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD$1 || !USES_TO_LENGTH$3 }, { indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { return NEGATIVE_ZERO // convert -0 to +0 ? nativeIndexOf.apply(this, arguments) || 0 - : internalIndexOf(this, searchElement, arguments[1]); + : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); } }); var ARRAY_ITERATOR = 'Array Iterator'; - var setInternalState$2 = internalState.set; + var setInternalState$3 = internalState.set; var getInternalState$2 = internalState.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method @@ -1660,7 +2110,7 @@ typeof navigator === "object" && (function () { // `CreateArrayIterator` internal method // https://tc39.github.io/ecma262/#sec-createarrayiterator var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) { - setInternalState$2(this, { + setInternalState$3(this, { type: ARRAY_ITERATOR, target: toIndexedObject(iterated), // target index: 0, // next index @@ -1695,39 +2145,27 @@ typeof navigator === "object" && (function () { var nativeJoin = [].join; var ES3_STRINGS = indexedObject != Object; - var SLOPPY_METHOD$2 = sloppyArrayMethod('join', ','); + var STRICT_METHOD$2 = arrayMethodIsStrict('join', ','); // `Array.prototype.join` method // https://tc39.github.io/ecma262/#sec-array.prototype.join - _export({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD$2 }, { + _export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD$2 }, { join: function join(separator) { return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); } }); - var SPECIES$1 = wellKnownSymbol('species'); - - var arrayMethodHasSpeciesSupport = function (METHOD_NAME) { - return !fails(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES$1] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; + var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('slice'); + var USES_TO_LENGTH$4 = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 }); - var SPECIES$2 = wellKnownSymbol('species'); + var SPECIES$3 = wellKnownSymbol('species'); var nativeSlice = [].slice; var max$1 = Math.max; - var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); - // `Array.prototype.slice` method // https://tc39.github.io/ecma262/#sec-array.prototype.slice // fallback for not array-like ES3 strings and DOM objects - _export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, { + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$4 }, { slice: function slice(start, end) { var O = toIndexedObject(this); var length = toLength(O.length); @@ -1741,7 +2179,7 @@ typeof navigator === "object" && (function () { if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { Constructor = undefined; } else if (isObject(Constructor)) { - Constructor = Constructor[SPECIES$2]; + Constructor = Constructor[SPECIES$3]; if (Constructor === null) Constructor = undefined; } if (Constructor === Array || Constructor === undefined) { @@ -1755,115 +2193,27 @@ typeof navigator === "object" && (function () { } }); - var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$2] = 'z'; - // `Object.prototype.toString` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - var objectToString = String(test) !== '[object z]' ? function toString() { + var objectToString = toStringTagSupport ? {}.toString : function toString() { return '[object ' + classof(this) + ']'; - } : test.toString; - - var ObjectPrototype$2 = Object.prototype; + }; // `Object.prototype.toString` method // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - if (objectToString !== ObjectPrototype$2.toString) { - redefine(ObjectPrototype$2, 'toString', objectToString, { unsafe: true }); + if (!toStringTagSupport) { + redefine(Object.prototype, 'toString', objectToString, { unsafe: true }); } - // `RegExp.prototype.flags` getter implementation - // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags - var regexpFlags = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; - }; - - var nativeExec = RegExp.prototype.exec; - // This always refers to the native implementation, because the - // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, - // which loads this file before patching the method. - var nativeReplace = String.prototype.replace; - - var patchedExec = nativeExec; - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; - - if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = nativeExec.call(re, str); - - if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } + // TODO: Remove from `core-js@4` since it's moved to entry points - return match; - }; - } - var regexpExec = patchedExec; - _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, { - exec: regexpExec - }); - var TO_STRING = 'toString'; - var nativeToString = /./[TO_STRING]; - var RegExpPrototype = RegExp.prototype; - var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); - // FF44- RegExp#toString has a wrong name - var INCORRECT_NAME = nativeToString.name != TO_STRING; - // `RegExp.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring - if (NOT_GENERIC || INCORRECT_NAME) { - redefine(RegExp.prototype, TO_STRING, function toString() { - var R = anObject(this); - var p = String(R.source); - var rf = R.flags; - var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf); - return '/' + p + '/' + f; - }, { unsafe: true }); - } - var SPECIES$3 = wellKnownSymbol('species'); + var SPECIES$4 = wellKnownSymbol('species'); var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { // #replace needs built-in support for named groups. @@ -1878,6 +2228,21 @@ typeof navigator === "object" && (function () { return ''.replace(re, '$<a>') !== '7'; }); + // IE <= 11 replaces $0 with the whole match, as if it was $& + // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + var REPLACE_KEEPS_$0 = (function () { + return 'a'.replace(/./, '$0') === '$0'; + })(); + + var REPLACE = wellKnownSymbol('replace'); + // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; + })(); + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec // Weex JS has frozen built-in prototypes, so use try / catch wrapper var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { @@ -1902,15 +2267,22 @@ typeof navigator === "object" && (function () { // Symbol-named RegExp methods call .exec var execCalled = false; var re = /a/; - re.exec = function () { execCalled = true; return null; }; if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates // a new one. We need to return the patched regex when creating the new one. re.constructor = {}; - re.constructor[SPECIES$3] = function () { return re; }; + re.constructor[SPECIES$4] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; } + re.exec = function () { execCalled = true; return null; }; + re[SYMBOL](''); return !execCalled; }); @@ -1918,7 +2290,11 @@ typeof navigator === "object" && (function () { if ( !DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || - (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'replace' && !( + REPLACE_SUPPORTS_NAMED_GROUPS && + REPLACE_KEEPS_$0 && + !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + )) || (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) ) { var nativeRegExpMethod = /./[SYMBOL]; @@ -1933,6 +2309,9 @@ typeof navigator === "object" && (function () { return { done: true, value: nativeMethod.call(str, regexp, arg2) }; } return { done: false }; + }, { + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE }); var stringMethod = methods[0]; var regexMethod = methods[1]; @@ -1946,14 +2325,17 @@ typeof navigator === "object" && (function () { // 21.2.5.9 RegExp.prototype[@@search](string) : function (string) { return regexMethod.call(string, this); } ); - if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true); } + + if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); }; + var charAt$1 = stringMultibyte.charAt; + // `AdvanceStringIndex` abstract operation // https://tc39.github.io/ecma262/#sec-advancestringindex var advanceStringIndex = function (S, index, unicode) { - return index + (unicode ? stringAt(S, index, true).length : 1); + return index + (unicode ? charAt$1(S, index).length : 1); }; // `RegExpExec` abstract operation @@ -1986,7 +2368,11 @@ typeof navigator === "object" && (function () { }; // @@replace logic - fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) { + fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; + var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + return [ // `String.prototype.replace` method // https://tc39.github.io/ecma262/#sec-string.prototype.replace @@ -2000,8 +2386,13 @@ typeof navigator === "object" && (function () { // `RegExp.prototype[@@replace]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace function (regexp, replaceValue) { - var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); - if (res.done) return res.value; + if ( + (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) || + (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) + ) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) return res.value; + } var rx = anObject(regexp); var S = String(this); @@ -2127,14 +2518,14 @@ typeof navigator === "object" && (function () { ]; }); - var SPECIES$4 = wellKnownSymbol('species'); + var SPECIES$5 = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation // https://tc39.github.io/ecma262/#sec-speciesconstructor var speciesConstructor = function (O, defaultConstructor) { var C = anObject(O).constructor; var S; - return C === undefined || (S = anObject(C)[SPECIES$4]) == undefined ? defaultConstructor : aFunction(S); + return C === undefined || (S = anObject(C)[SPECIES$5]) == undefined ? defaultConstructor : aFunction$1(S); }; var arrayPush = [].push; @@ -2270,15 +2661,17 @@ typeof navigator === "object" && (function () { if (CollectionPrototype$1) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$1[ITERATOR$5] !== ArrayValues) try { - hide(CollectionPrototype$1, ITERATOR$5, ArrayValues); + createNonEnumerableProperty(CollectionPrototype$1, ITERATOR$5, ArrayValues); } catch (error) { CollectionPrototype$1[ITERATOR$5] = ArrayValues; } - if (!CollectionPrototype$1[TO_STRING_TAG$3]) hide(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1); + if (!CollectionPrototype$1[TO_STRING_TAG$3]) { + createNonEnumerableProperty(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1); + } if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try { - hide(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]); + createNonEnumerableProperty(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]); } catch (error) { CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME]; } @@ -2289,13 +2682,18 @@ typeof navigator === "object" && (function () { var ITERATOR$6 = wellKnownSymbol('iterator'); var nativeUrl = !fails(function () { - var url = new URL('b?e=1', 'http://a'); + var url = new URL('b?a=1&b=2&c=3', 'http://a'); var searchParams = url.searchParams; + var result = ''; url.pathname = 'c%20d'; + searchParams.forEach(function (value, key) { + searchParams['delete']('b'); + result += key + value; + }); return (isPure && !url.toJSON) || !searchParams.sort - || url.href !== 'http://a/c%20d?e=1' - || searchParams.get('e') !== '1' + || url.href !== 'http://a/c%20d?a=1&c=3' + || searchParams.get('c') !== '3' || String(new URLSearchParams('?a=1')) !== 'a=1' || !searchParams[ITERATOR$6] // throws in Edge @@ -2304,7 +2702,11 @@ typeof navigator === "object" && (function () { // not punycoded in Edge || new URL('http://тест').host !== 'xn--e1aybc' // not escaped in Chrome 62- - || new URL('http://a#б').hash !== '#%D0%B1'; + || new URL('http://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('http://x', undefined).host !== 'x'; }); var anInstance = function (it, Constructor, name) { @@ -2314,10 +2716,22 @@ typeof navigator === "object" && (function () { }; var nativeAssign = Object.assign; + var defineProperty$5 = Object.defineProperty; - // 19.1.2.1 Object.assign(target, source, ...) - // should work with symbols and should have deterministic property order (V8 bug) + // `Object.assign` method + // https://tc39.github.io/ecma262/#sec-object.assign var objectAssign = !nativeAssign || fails(function () { + // should have correct order of operations (Edge bug) + if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty$5({}, 'a', { + enumerable: true, + get: function () { + defineProperty$5(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) var A = {}; var B = {}; // eslint-disable-next-line no-undef @@ -2410,7 +2824,7 @@ typeof navigator === "object" && (function () { var k = 0; delta = firstTime ? floor$2(delta / damp) : delta >> 1; delta += floor$2(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + for (; delta > baseMinusTMin * tMax >> 1; k += base) { delta = floor$2(delta / baseMinusTMin); } return floor$2(k + (baseMinusTMin + 1) * delta / (delta + skew)); @@ -2482,9 +2896,7 @@ typeof navigator === "object" && (function () { var q = delta; for (var k = base; /* no condition */; k += base) { var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } + if (q < t) break; var qMinusT = q - t; var baseMinusT = base - t; output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT))); @@ -2504,7 +2916,7 @@ typeof navigator === "object" && (function () { return output.join(''); }; - var punycodeToAscii = function (input) { + var stringPunycodeToAscii = function (input) { var encoded = []; var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.'); var i, label; @@ -2527,10 +2939,34 @@ typeof navigator === "object" && (function () { } return anObject(iteratorMethod.call(it)); }; + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + + + + + + + + + + + + + + + + + + var $fetch = getBuiltIn('fetch'); + var Headers$1 = getBuiltIn('Headers'); var ITERATOR$7 = wellKnownSymbol('iterator'); var URL_SEARCH_PARAMS = 'URLSearchParams'; var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; - var setInternalState$3 = internalState.set; + var setInternalState$4 = internalState.set; var getInternalParamsState = internalState.getterFor(URL_SEARCH_PARAMS); var getInternalIteratorState = internalState.getterFor(URL_SEARCH_PARAMS_ITERATOR); @@ -2584,10 +3020,10 @@ typeof navigator === "object" && (function () { var parseSearchParams = function (result, query) { if (query) { var attributes = query.split('&'); - var i = 0; + var index = 0; var attribute, entry; - while (i < attributes.length) { - attribute = attributes[i++]; + while (index < attributes.length) { + attribute = attributes[index++]; if (attribute.length) { entry = attribute.split('='); result.push({ @@ -2596,7 +3032,7 @@ typeof navigator === "object" && (function () { }); } } - } return result; + } }; var updateSearchParams = function (query) { @@ -2609,7 +3045,7 @@ typeof navigator === "object" && (function () { }; var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { - setInternalState$3(this, { + setInternalState$4(this, { type: URL_SEARCH_PARAMS_ITERATOR, iterator: getIterator(getInternalParamsState(params).entries), kind: kind @@ -2631,12 +3067,12 @@ typeof navigator === "object" && (function () { var init = arguments.length > 0 ? arguments[0] : undefined; var that = this; var entries = []; - var iteratorMethod, iterator, step, entryIterator, first, second, key; + var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key; - setInternalState$3(that, { + setInternalState$4(that, { type: URL_SEARCH_PARAMS, entries: entries, - updateURL: null, + updateURL: function () { /* empty */ }, updateSearchParams: updateSearchParams }); @@ -2645,12 +3081,14 @@ typeof navigator === "object" && (function () { iteratorMethod = getIteratorMethod(init); if (typeof iteratorMethod === 'function') { iterator = iteratorMethod.call(init); - while (!(step = iterator.next()).done) { + next = iterator.next; + while (!(step = next.call(iterator)).done) { entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; if ( - (first = entryIterator.next()).done || - (second = entryIterator.next()).done || - !entryIterator.next().done + (first = entryNext.call(entryIterator)).done || + (second = entryNext.call(entryIterator)).done || + !entryNext.call(entryIterator).done ) throw TypeError('Expected sequence with length 2'); entries.push({ key: first.value + '', value: second.value + '' }); } @@ -2670,7 +3108,7 @@ typeof navigator === "object" && (function () { validateArgumentsLength(arguments.length, 2); var state = getInternalParamsState(this); state.entries.push({ key: name + '', value: value + '' }); - if (state.updateURL) state.updateURL(); + state.updateURL(); }, // `URLSearchParams.prototype.delete` method // https://url.spec.whatwg.org/#dom-urlsearchparams-delete @@ -2679,12 +3117,12 @@ typeof navigator === "object" && (function () { var state = getInternalParamsState(this); var entries = state.entries; var key = name + ''; - var i = 0; - while (i < entries.length) { - if (entries[i].key === key) entries.splice(i, 1); - else i++; + var index = 0; + while (index < entries.length) { + if (entries[index].key === key) entries.splice(index, 1); + else index++; } - if (state.updateURL) state.updateURL(); + state.updateURL(); }, // `URLSearchParams.prototype.get` method // https://url.spec.whatwg.org/#dom-urlsearchparams-get @@ -2692,8 +3130,10 @@ typeof navigator === "object" && (function () { validateArgumentsLength(arguments.length, 1); var entries = getInternalParamsState(this).entries; var key = name + ''; - var i = 0; - for (; i < entries.length; i++) if (entries[i].key === key) return entries[i].value; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } return null; }, // `URLSearchParams.prototype.getAll` method @@ -2703,8 +3143,10 @@ typeof navigator === "object" && (function () { var entries = getInternalParamsState(this).entries; var key = name + ''; var result = []; - var i = 0; - for (; i < entries.length; i++) if (entries[i].key === key) result.push(entries[i].value); + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) result.push(entries[index].value); + } return result; }, // `URLSearchParams.prototype.has` method @@ -2713,8 +3155,10 @@ typeof navigator === "object" && (function () { validateArgumentsLength(arguments.length, 1); var entries = getInternalParamsState(this).entries; var key = name + ''; - var i = 0; - while (i < entries.length) if (entries[i++].key === key) return true; + var index = 0; + while (index < entries.length) { + if (entries[index++].key === key) return true; + } return false; }, // `URLSearchParams.prototype.set` method @@ -2726,12 +3170,12 @@ typeof navigator === "object" && (function () { var found = false; var key = name + ''; var val = value + ''; - var i = 0; + var index = 0; var entry; - for (; i < entries.length; i++) { - entry = entries[i]; + for (; index < entries.length; index++) { + entry = entries[index]; if (entry.key === key) { - if (found) entries.splice(i--, 1); + if (found) entries.splice(index--, 1); else { found = true; entry.value = val; @@ -2739,7 +3183,7 @@ typeof navigator === "object" && (function () { } } if (!found) entries.push({ key: key, value: val }); - if (state.updateURL) state.updateURL(); + state.updateURL(); }, // `URLSearchParams.prototype.sort` method // https://url.spec.whatwg.org/#dom-urlsearchparams-sort @@ -2748,26 +3192,28 @@ typeof navigator === "object" && (function () { var entries = state.entries; // Array#sort is not stable in some engines var slice = entries.slice(); - var entry, i, j; + var entry, entriesIndex, sliceIndex; entries.length = 0; - for (i = 0; i < slice.length; i++) { - entry = slice[i]; - for (j = 0; j < i; j++) if (entries[j].key > entry.key) { - entries.splice(j, 0, entry); - break; + for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) { + entry = slice[sliceIndex]; + for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) { + if (entries[entriesIndex].key > entry.key) { + entries.splice(entriesIndex, 0, entry); + break; + } } - if (j === i) entries.push(entry); + if (entriesIndex === sliceIndex) entries.push(entry); } - if (state.updateURL) state.updateURL(); + state.updateURL(); }, // `URLSearchParams.prototype.forEach` method forEach: function forEach(callback /* , thisArg */) { var entries = getInternalParamsState(this).entries; - var boundFunction = bindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3); - var i = 0; + var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var index = 0; var entry; - while (i < entries.length) { - entry = entries[i++]; + while (index < entries.length) { + entry = entries[index++]; boundFunction(entry.value, entry.key, this); } }, @@ -2793,10 +3239,10 @@ typeof navigator === "object" && (function () { redefine(URLSearchParamsPrototype, 'toString', function toString() { var entries = getInternalParamsState(this).entries; var result = []; - var i = 0; + var index = 0; var entry; - while (i < entries.length) { - entry = entries[i++]; + while (index < entries.length) { + entry = entries[index++]; result.push(serialize(entry.key) + '=' + serialize(entry.value)); } return result.join('&'); }, { enumerable: true }); @@ -2807,16 +3253,63 @@ typeof navigator === "object" && (function () { URLSearchParams: URLSearchParamsConstructor }); + // Wrap `fetch` for correct work with polyfilled `URLSearchParams` + // https://github.com/zloirock/core-js/issues/674 + if (!nativeUrl && typeof $fetch == 'function' && typeof Headers$1 == 'function') { + _export({ global: true, enumerable: true, forced: true }, { + fetch: function fetch(input /* , init */) { + var args = [input]; + var init, body, headers; + if (arguments.length > 1) { + init = arguments[1]; + if (isObject(init)) { + body = init.body; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers$1(init.headers) : new Headers$1(); + if (!headers.has('content-type')) { + headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + init = objectCreate(init, { + body: createPropertyDescriptor(0, String(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } + args.push(init); + } return $fetch.apply(this, args); + } + }); + } + var web_urlSearchParams = { URLSearchParams: URLSearchParamsConstructor, getState: getInternalParamsState }; + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + + + + + + + + var codeAt = stringMultibyte.codeAt; + + + + + var NativeURL = global_1.URL; var URLSearchParams$1 = web_urlSearchParams.URLSearchParams; var getInternalSearchParamsState = web_urlSearchParams.getState; - var setInternalState$4 = internalState.set; + var setInternalState$5 = internalState.set; var getInternalURLState = internalState.getterFor('URL'); + var floor$3 = Math.floor; var pow = Math.pow; var INVALID_AUTHORITY = 'Invalid authority'; @@ -2825,7 +3318,7 @@ typeof navigator === "object" && (function () { var INVALID_PORT = 'Invalid port'; var ALPHA = /[A-Za-z]/; - var ALPHANUMERIC = /[\d+\-.A-Za-z]/; + var ALPHANUMERIC = /[\d+-.A-Za-z]/; var DIGIT = /\d/; var HEX_START = /^(0x|0X)/; var OCT = /^[0-7]+$/; @@ -2842,7 +3335,7 @@ typeof navigator === "object" && (function () { var EOF; var parseHost = function (url, input) { - var result, codePoints, i; + var result, codePoints, index; if (input.charAt(0) == '[') { if (input.charAt(input.length - 1) != ']') return INVALID_HOST; result = parseIPv6(input.slice(1, -1)); @@ -2853,10 +3346,12 @@ typeof navigator === "object" && (function () { if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST; result = ''; codePoints = arrayFrom(input); - for (i = 0; i < codePoints.length; i++) result += percentEncode(codePoints[i], C0ControlPercentEncodeSet); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } url.host = result; } else { - input = punycodeToAscii(input); + input = stringPunycodeToAscii(input); if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST; result = parseIPv4(input); if (result === null) return INVALID_HOST; @@ -2866,38 +3361,38 @@ typeof navigator === "object" && (function () { var parseIPv4 = function (input) { var parts = input.split('.'); - var partsLength, numbers, i, part, R, n, ipv4; - if (parts[parts.length - 1] == '') { - if (parts.length) parts.pop(); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] == '') { + parts.pop(); } partsLength = parts.length; if (partsLength > 4) return input; numbers = []; - for (i = 0; i < partsLength; i++) { - part = parts[i]; + for (index = 0; index < partsLength; index++) { + part = parts[index]; if (part == '') return input; - R = 10; + radix = 10; if (part.length > 1 && part.charAt(0) == '0') { - R = HEX_START.test(part) ? 16 : 8; - part = part.slice(R == 8 ? 1 : 2); + radix = HEX_START.test(part) ? 16 : 8; + part = part.slice(radix == 8 ? 1 : 2); } if (part === '') { - n = 0; + number = 0; } else { - if (!(R == 10 ? DEC : R == 8 ? OCT : HEX).test(part)) return input; - n = parseInt(part, R); + if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input; + number = parseInt(part, radix); } - numbers.push(n); + numbers.push(number); } - for (i = 0; i < partsLength; i++) { - n = numbers[i]; - if (i == partsLength - 1) { - if (n >= pow(256, 5 - partsLength)) return null; - } else if (n > 255) return null; + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index == partsLength - 1) { + if (number >= pow(256, 5 - partsLength)) return null; + } else if (number > 255) return null; } ipv4 = numbers.pop(); - for (i = 0; i < numbers.length; i++) { - ipv4 += numbers[i] * pow(256, 3 - i); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow(256, 3 - index); } return ipv4; }; @@ -2984,9 +3479,9 @@ typeof navigator === "object" && (function () { var maxLength = 1; var currStart = null; var currLength = 0; - var i = 0; - for (; i < 8; i++) { - if (ipv6[i] !== 0) { + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { if (currLength > maxLength) { maxIndex = currStart; maxLength = currLength; @@ -2994,7 +3489,7 @@ typeof navigator === "object" && (function () { currStart = null; currLength = 0; } else { - if (currStart === null) currStart = i; + if (currStart === null) currStart = index; ++currLength; } } @@ -3006,27 +3501,27 @@ typeof navigator === "object" && (function () { }; var serializeHost = function (host) { - var result, i, compress, ignore0; + var result, index, compress, ignore0; // ipv4 if (typeof host == 'number') { result = []; - for (i = 0; i < 4; i++) { + for (index = 0; index < 4; index++) { result.unshift(host % 256); - host = Math.floor(host / 256); + host = floor$3(host / 256); } return result.join('.'); // ipv6 } else if (typeof host == 'object') { result = ''; compress = findLongestZeroSequence(host); - for (i = 0; i < 8; i++) { - if (ignore0 && host[i] === 0) continue; + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; if (ignore0) ignore0 = false; - if (compress === i) { - result += i ? ':' : '::'; + if (compress === index) { + result += index ? ':' : '::'; ignore0 = true; } else { - result += host[i].toString(16); - if (i < 7) result += ':'; + result += host[index].toString(16); + if (index < 7) result += ':'; } } return '[' + result + ']'; @@ -3045,14 +3540,13 @@ typeof navigator === "object" && (function () { }); var percentEncode = function (char, set) { - var code = stringAt(char, 0); + var code = codeAt(char, 0); return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char); }; var specialSchemes = { ftp: 21, file: null, - gopher: 70, http: 80, https: 443, ws: 80, @@ -3169,13 +3663,11 @@ typeof navigator === "object" && (function () { if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) { buffer += char.toLowerCase(); } else if (char == ':') { - if (stateOverride) { - if ( - (isSpecial(url) != has(specialSchemes, buffer)) || - (buffer == 'file' && (includesCredentials(url) || url.port !== null)) || - (url.scheme == 'file' && !url.host) - ) return; - } + if (stateOverride && ( + (isSpecial(url) != has(specialSchemes, buffer)) || + (buffer == 'file' && (includesCredentials(url) || url.port !== null)) || + (url.scheme == 'file' && !url.host) + )) return; url.scheme = buffer; if (stateOverride) { if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null; @@ -3532,7 +4024,7 @@ typeof navigator === "object" && (function () { var that = anInstance(this, URLConstructor, 'URL'); var base = arguments.length > 1 ? arguments[1] : undefined; var urlString = String(url); - var state = setInternalState$4(that, { type: 'URL' }); + var state = setInternalState$5(that, { type: 'URL' }); var baseState, failure; if (base !== undefined) { if (base instanceof URLConstructor) baseState = getInternalURLState(base); @@ -3888,6 +4380,42 @@ typeof navigator === "object" && (function () { return target; } + function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; + } + + function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + + var target = _objectWithoutPropertiesLoose(source, excluded); + + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; + } + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } @@ -4134,7 +4662,16 @@ typeof navigator === "object" && (function () { global.URLSearchParams = URLSearchParams; }; - if (!('URLSearchParams' in global) || new global.URLSearchParams('?a=1').toString() !== 'a=1') { + var checkIfURLSearchParamsSupported = function checkIfURLSearchParamsSupported() { + try { + var URLSearchParams = global.URLSearchParams; + return new URLSearchParams('?a=1').toString() === 'a=1' && typeof URLSearchParams.prototype.set === 'function'; + } catch (e) { + return false; + } + }; + + if (!checkIfURLSearchParamsSupported()) { polyfillURLSearchParams(); } @@ -4215,7 +4752,7 @@ typeof navigator === "object" && (function () { var checkIfURLIsSupported = function checkIfURLIsSupported() { try { var u = new global.URL('b', 'http://a'); - u.pathname = 'c%20d'; + u.pathname = 'c d'; return u.href === 'http://a/c%20d' && u.searchParams; } catch (e) { return false; @@ -4429,17 +4966,24 @@ typeof navigator === "object" && (function () { } })(typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : commonjsGlobal); + // `Symbol.asyncIterator` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.asynciterator + defineWellKnownSymbol('asyncIterator'); + var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; - var IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/679 + var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () { var array = []; array[IS_CONCAT_SPREADABLE] = false; return array.concat()[0] !== array; }); - var SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('concat'); + var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); var isConcatSpreadable = function (O) { if (!isObject(O)) return false; @@ -4447,12 +4991,12 @@ typeof navigator === "object" && (function () { return spreadable !== undefined ? !!spreadable : isArray(O); }; - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT$1; + var FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method // https://tc39.github.io/ecma262/#sec-array.prototype.concat // with adding support of @@isConcatSpreadable and @@species - _export({ target: 'Array', proto: true, forced: FORCED }, { + _export({ target: 'Array', proto: true, forced: FORCED$1 }, { concat: function concat(arg) { // eslint-disable-line no-unused-vars var O = toObject(this); var A = arraySpeciesCreate(O, 0); @@ -4474,100 +5018,39 @@ typeof navigator === "object" && (function () { } }); - // `Array.prototype.fill` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.fill - var arrayFill = function fill(value /* , start = 0, end = @length */) { - var O = toObject(this); - var length = toLength(O.length); - var argumentsLength = arguments.length; - var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); - var end = argumentsLength > 2 ? arguments[2] : undefined; - var endPos = end === undefined ? length : toAbsoluteIndex(end, length); - while (endPos > index) O[index++] = value; - return O; - }; - - // `Array.prototype.fill` method - // https://tc39.github.io/ecma262/#sec-array.prototype.fill - _export({ target: 'Array', proto: true }, { fill: arrayFill }); - - // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables('fill'); - - var nativeLastIndexOf = [].lastIndexOf; - var NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; - var SLOPPY_METHOD$3 = sloppyArrayMethod('lastIndexOf'); - - // `Array.prototype.lastIndexOf` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - var arrayLastIndexOf = (NEGATIVE_ZERO$1 || SLOPPY_METHOD$3) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { - // convert -0 to +0 - if (NEGATIVE_ZERO$1) return nativeLastIndexOf.apply(this, arguments) || 0; - var O = toIndexedObject(this); - var length = toLength(O.length); - var index = length - 1; - if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1])); - if (index < 0) index = length + index; - for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0; - return -1; - } : nativeLastIndexOf; - - // `Array.prototype.lastIndexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - _export({ target: 'Array', proto: true, forced: arrayLastIndexOf !== [].lastIndexOf }, { - lastIndexOf: arrayLastIndexOf + // `Object.assign` method + // https://tc39.github.io/ecma262/#sec-object.assign + _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { + assign: objectAssign }); - var defineProperty$3 = objectDefineProperty.f; - - var FunctionPrototype = Function.prototype; - var FunctionPrototypeToString = FunctionPrototype.toString; - var nameRE = /^\s*function ([^ (]*)/; - var NAME = 'name'; + var nativeGetOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; - // Function instances `.name` property - // https://tc39.github.io/ecma262/#sec-function-instances-name - if (descriptors && !(NAME in FunctionPrototype)) { - defineProperty$3(FunctionPrototype, NAME, { - configurable: true, - get: function () { - try { - return FunctionPrototypeToString.call(this).match(nameRE)[1]; - } catch (error) { - return ''; - } - } - }); - } - var aFunction$1 = function (variable) { - return typeof variable == 'function' ? variable : undefined; - }; + var FAILS_ON_PRIMITIVES$1 = fails(function () { nativeGetOwnPropertyDescriptor$2(1); }); + var FORCED$2 = !descriptors || FAILS_ON_PRIMITIVES$1; - var getBuiltIn = function (namespace, method) { - return arguments.length < 2 ? aFunction$1(path[namespace]) || aFunction$1(global_1[namespace]) - : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; - }; + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor + _export({ target: 'Object', stat: true, forced: FORCED$2, sham: !descriptors }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor$2(toIndexedObject(it), key); + } + }); - var SPECIES$5 = wellKnownSymbol('species'); + var nativePromiseConstructor = global_1.Promise; - var setSpecies = function (CONSTRUCTOR_NAME) { - var C = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = objectDefineProperty.f; - if (descriptors && C && !C[SPECIES$5]) defineProperty(C, SPECIES$5, { - configurable: true, - get: function () { return this; } - }); + var iterate_1 = createCommonjsModule(function (module) { + var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; }; - var iterate = createCommonjsModule(function (module) { - var BREAK = {}; - - var exports = module.exports = function (iterable, fn, that, ENTRIES, ITERATOR) { - var boundFunction = bindContext(fn, that, ENTRIES ? 2 : 1); - var iterator, iterFn, index, length, result, step; + var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { + var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1); + var iterator, iterFn, index, length, result, next, step; - if (ITERATOR) { + if (IS_ITERATOR) { iterator = iterable; } else { iterFn = getIteratorMethod(iterable); @@ -4575,25 +5058,33 @@ typeof navigator === "object" && (function () { // optimisation for array iterators if (isArrayIteratorMethod(iterFn)) { for (index = 0, length = toLength(iterable.length); length > index; index++) { - result = ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); - if (result === BREAK) return BREAK; - } return; + result = AS_ENTRIES + ? boundFunction(anObject(step = iterable[index])[0], step[1]) + : boundFunction(iterable[index]); + if (result && result instanceof Result) return result; + } return new Result(false); } iterator = iterFn.call(iterable); } - while (!(step = iterator.next()).done) { - if (callWithSafeIterationClosing(iterator, boundFunction, step.value, ENTRIES) === BREAK) return BREAK; - } + next = iterator.next; + while (!(step = next.call(iterator)).done) { + result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); + if (typeof result == 'object' && result && result instanceof Result) return result; + } return new Result(false); }; - exports.BREAK = BREAK; + iterate.stop = function (result) { + return new Result(true, result); + }; }); + var engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent); + var location = global_1.location; var set$1 = global_1.setImmediate; var clear = global_1.clearImmediate; - var process = global_1.process; + var process$2 = global_1.process; var MessageChannel = global_1.MessageChannel; var Dispatch = global_1.Dispatch; var counter = 0; @@ -4642,9 +5133,9 @@ typeof navigator === "object" && (function () { delete queue[id]; }; // Node.js 0.8- - if (classofRaw(process) == 'process') { + if (classofRaw(process$2) == 'process') { defer = function (id) { - process.nextTick(runner(id)); + process$2.nextTick(runner(id)); }; // Sphere (JS game engine) Dispatch API } else if (Dispatch && Dispatch.now) { @@ -4652,14 +5143,21 @@ typeof navigator === "object" && (function () { Dispatch.now(runner(id)); }; // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !engineIsIos) { channel = new MessageChannel(); port = channel.port2; channel.port1.onmessage = listener; - defer = bindContext(port.postMessage, port, 1); + defer = functionBindContext(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post)) { + } else if ( + global_1.addEventListener && + typeof postMessage == 'function' && + !global_1.importScripts && + !fails(post) && + location.protocol !== 'file:' + ) { defer = post; global_1.addEventListener('message', listener, false); // IE8- @@ -4683,30 +5181,26 @@ typeof navigator === "object" && (function () { clear: clear }; - var navigator$1 = global_1.navigator; - - var userAgent = navigator$1 && navigator$1.userAgent || ''; - var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; var macrotask = task.set; var MutationObserver$1 = global_1.MutationObserver || global_1.WebKitMutationObserver; - var process$1 = global_1.process; + var process$3 = global_1.process; var Promise$1 = global_1.Promise; - var IS_NODE = classofRaw(process$1) == 'process'; + var IS_NODE = classofRaw(process$3) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` var queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(global_1, 'queueMicrotask'); var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; - var flush, head, last, notify, toggle, node, promise; + var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method if (!queueMicrotask) { flush = function () { var parent, fn; - if (IS_NODE && (parent = process$1.domain)) parent.exit(); + if (IS_NODE && (parent = process$3.domain)) parent.exit(); while (head) { fn = head.fn; head = head.next; @@ -4724,13 +5218,13 @@ typeof navigator === "object" && (function () { // Node.js if (IS_NODE) { notify = function () { - process$1.nextTick(flush); + process$3.nextTick(flush); }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 - } else if (MutationObserver$1 && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) { + } else if (MutationObserver$1 && !engineIsIos) { toggle = true; node = document.createTextNode(''); - new MutationObserver$1(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + new MutationObserver$1(flush).observe(node, { characterData: true }); notify = function () { node.data = toggle = !toggle; }; @@ -4738,8 +5232,9 @@ typeof navigator === "object" && (function () { } else if (Promise$1 && Promise$1.resolve) { // Promise.resolve without an argument throws an error in LG WebOS 2 promise = Promise$1.resolve(undefined); + then = promise.then; notify = function () { - promise.then(flush); + then.call(promise, flush); }; // for other environments - macrotask based on: // - setImmediate @@ -4771,8 +5266,8 @@ typeof navigator === "object" && (function () { resolve = $$resolve; reject = $$reject; }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); + this.resolve = aFunction$1(resolve); + this.reject = aFunction$1(reject); }; // 25.4.1.5 NewPromiseCapability(C) @@ -4822,19 +5317,17 @@ typeof navigator === "object" && (function () { var SPECIES$6 = wellKnownSymbol('species'); var PROMISE = 'Promise'; var getInternalState$3 = internalState.get; - var setInternalState$5 = internalState.set; + var setInternalState$6 = internalState.set; var getInternalPromiseState = internalState.getterFor(PROMISE); - var PromiseConstructor = global_1[PROMISE]; + var PromiseConstructor = nativePromiseConstructor; var TypeError$1 = global_1.TypeError; - var document$3 = global_1.document; - var process$2 = global_1.process; - var $fetch = global_1.fetch; - var versions = process$2 && process$2.versions; - var v8 = versions && versions.v8 || ''; + var document$2 = global_1.document; + var process$4 = global_1.process; + var $fetch$1 = getBuiltIn('fetch'); var newPromiseCapability$1 = newPromiseCapability.f; var newGenericPromiseCapability = newPromiseCapability$1; - var IS_NODE$1 = classofRaw(process$2) == 'process'; - var DISPATCH_EVENT = !!(document$3 && document$3.createEvent && global_1.dispatchEvent); + var IS_NODE$1 = classofRaw(process$4) == 'process'; + var DISPATCH_EVENT = !!(document$2 && document$2.createEvent && global_1.dispatchEvent); var UNHANDLED_REJECTION = 'unhandledrejection'; var REJECTION_HANDLED = 'rejectionhandled'; var PENDING = 0; @@ -4842,27 +5335,33 @@ typeof navigator === "object" && (function () { var REJECTED = 2; var HANDLED = 1; var UNHANDLED = 2; - var Internal, OwnPromiseCapability, PromiseWrapper; + var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; - var FORCED$1 = isForced_1(PROMISE, function () { - // correct subclassing with @@species support - var promise = PromiseConstructor.resolve(1); - var empty = function () { /* empty */ }; - var FakePromise = (promise.constructor = {})[SPECIES$6] = function (exec) { - exec(empty, empty); - }; - // unhandled rejections tracking support, NodeJS Promise without it fails @@species test - return !((IS_NODE$1 || typeof PromiseRejectionEvent == 'function') - && (!isPure ) - && promise.then(empty) instanceof FakePromise - // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + var FORCED$3 = isForced_1(PROMISE, function () { + var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); + if (!GLOBAL_CORE_JS_PROMISE) { + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 - // we can't detect it synchronously, so just check versions - && v8.indexOf('6.6') !== 0 - && userAgent.indexOf('Chrome/66') === -1); + // We can't detect it synchronously, so just check versions + if (engineV8Version === 66) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + if (!IS_NODE$1 && typeof PromiseRejectionEvent != 'function') return true; + } + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) return false; + // Detect correctness of subclassing with @@species support + var promise = PromiseConstructor.resolve(1); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES$6] = FakePromise; + return !(promise.then(function () { /* empty */ }) instanceof FakePromise); }); - var INCORRECT_ITERATION$1 = FORCED$1 || !checkCorrectnessOfIteration(function (iterable) { + var INCORRECT_ITERATION$1 = FORCED$3 || !checkCorrectnessOfIteration(function (iterable) { PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); }); @@ -4879,8 +5378,10 @@ typeof navigator === "object" && (function () { microtask(function () { var value = state.value; var ok = state.state == FULFILLED; - var i = 0; - var run = function (reaction) { + var index = 0; + // variable length - can't use forEach + while (chain.length > index) { + var reaction = chain[index++]; var handler = ok ? reaction.ok : reaction.fail; var resolve = reaction.resolve; var reject = reaction.reject; @@ -4895,7 +5396,7 @@ typeof navigator === "object" && (function () { if (handler === true) result = value; else { if (domain) domain.enter(); - result = handler(value); // may throw + result = handler(value); // can throw if (domain) { domain.exit(); exited = true; @@ -4911,8 +5412,7 @@ typeof navigator === "object" && (function () { if (domain && !exited) domain.exit(); reject(error); } - }; - while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + } state.reactions = []; state.notified = false; if (isReject && !state.rejection) onUnhandled(promise, state); @@ -4922,7 +5422,7 @@ typeof navigator === "object" && (function () { var dispatchEvent = function (name, promise, reason) { var event, handler; if (DISPATCH_EVENT) { - event = document$3.createEvent('Event'); + event = document$2.createEvent('Event'); event.promise = promise; event.reason = reason; event.initEvent(name, false, true); @@ -4940,7 +5440,7 @@ typeof navigator === "object" && (function () { if (IS_UNHANDLED) { result = perform(function () { if (IS_NODE$1) { - process$2.emit('unhandledRejection', value, promise); + process$4.emit('unhandledRejection', value, promise); } else dispatchEvent(UNHANDLED_REJECTION, promise, value); }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should @@ -4957,7 +5457,7 @@ typeof navigator === "object" && (function () { var onHandleUnhandled = function (promise, state) { task$1.call(global_1, function () { if (IS_NODE$1) { - process$2.emit('rejectionHandled', promise); + process$4.emit('rejectionHandled', promise); } else dispatchEvent(REJECTION_HANDLED, promise, state.value); }); }; @@ -5007,11 +5507,11 @@ typeof navigator === "object" && (function () { }; // constructor polyfill - if (FORCED$1) { + if (FORCED$3) { // 25.4.3.1 Promise(executor) PromiseConstructor = function Promise(executor) { anInstance(this, PromiseConstructor, PROMISE); - aFunction(executor); + aFunction$1(executor); Internal.call(this); var state = getInternalState$3(this); try { @@ -5022,7 +5522,7 @@ typeof navigator === "object" && (function () { }; // eslint-disable-next-line no-unused-vars Internal = function Promise(executor) { - setInternalState$5(this, { + setInternalState$6(this, { type: PROMISE, done: false, notified: false, @@ -5041,7 +5541,7 @@ typeof navigator === "object" && (function () { var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor)); reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = IS_NODE$1 ? process$2.domain : undefined; + reaction.domain = IS_NODE$1 ? process$4.domain : undefined; state.parent = true; state.reactions.push(reaction); if (state.state != PENDING) notify$1(this, state, false); @@ -5066,26 +5566,39 @@ typeof navigator === "object" && (function () { : newGenericPromiseCapability(C); }; - // wrap fetch result - if ( typeof $fetch == 'function') _export({ global: true, enumerable: true, forced: true }, { - // eslint-disable-next-line no-unused-vars - fetch: function fetch(input) { - return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments)); - } - }); + if ( typeof nativePromiseConstructor == 'function') { + nativeThen = nativePromiseConstructor.prototype.then; + + // wrap native Promise#then for native async functions + redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + nativeThen.call(that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + + // wrap fetch result + if (typeof $fetch$1 == 'function') _export({ global: true, enumerable: true, forced: true }, { + // eslint-disable-next-line no-unused-vars + fetch: function fetch(input /* , init */) { + return promiseResolve(PromiseConstructor, $fetch$1.apply(global_1, arguments)); + } + }); + } } - _export({ global: true, wrap: true, forced: FORCED$1 }, { + _export({ global: true, wrap: true, forced: FORCED$3 }, { Promise: PromiseConstructor }); setToStringTag(PromiseConstructor, PROMISE, false); setSpecies(PROMISE); - PromiseWrapper = path[PROMISE]; + PromiseWrapper = getBuiltIn(PROMISE); // statics - _export({ target: PROMISE, stat: true, forced: FORCED$1 }, { + _export({ target: PROMISE, stat: true, forced: FORCED$3 }, { // `Promise.reject` method // https://tc39.github.io/ecma262/#sec-promise.reject reject: function reject(r) { @@ -5095,7 +5608,7 @@ typeof navigator === "object" && (function () { } }); - _export({ target: PROMISE, stat: true, forced: FORCED$1 }, { + _export({ target: PROMISE, stat: true, forced: FORCED$3 }, { // `Promise.resolve` method // https://tc39.github.io/ecma262/#sec-promise.resolve resolve: function resolve(x) { @@ -5112,11 +5625,11 @@ typeof navigator === "object" && (function () { var resolve = capability.resolve; var reject = capability.reject; var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); + var $promiseResolve = aFunction$1(C.resolve); var values = []; var counter = 0; var remaining = 1; - iterate(iterable, function (promise) { + iterate_1(iterable, function (promise) { var index = counter++; var alreadyCalled = false; values.push(undefined); @@ -5140,8 +5653,8 @@ typeof navigator === "object" && (function () { var capability = newPromiseCapability$1(C); var reject = capability.reject; var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - iterate(iterable, function (promise) { + var $promiseResolve = aFunction$1(C.resolve); + iterate_1(iterable, function (promise) { $promiseResolve.call(C, promise).then(capability.resolve, reject); }); }); @@ -5150,64 +5663,465 @@ typeof navigator === "object" && (function () { } }); - var max$3 = Math.max; - var min$4 = Math.min; - var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF; - var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + /*! *****************************************************************************
+ Copyright (c) Microsoft Corporation. All rights reserved.
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0
+
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+ MERCHANTABLITY OR NON-INFRINGEMENT.
+
+ See the Apache Version 2.0 License for specific language governing permissions
+ and limitations under the License.
+ ***************************************************************************** */ + + /* global Reflect, Promise */ + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; - var SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('splice'); + return _extendStatics(d, b); + }; - // `Array.prototype.splice` method - // https://tc39.github.io/ecma262/#sec-array.prototype.splice - // with adding support of @@species - _export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT$2 }, { - splice: function splice(start, deleteCount /* , ...items */) { - var O = toObject(this); - var len = toLength(O.length); - var actualStart = toAbsoluteIndex(start, len); - var argumentsLength = arguments.length; - var insertCount, actualDeleteCount, A, k, from, to; - if (argumentsLength === 0) { - insertCount = actualDeleteCount = 0; - } else if (argumentsLength === 1) { - insertCount = 0; - actualDeleteCount = len - actualStart; - } else { - insertCount = argumentsLength - 2; - actualDeleteCount = min$4(max$3(toInteger(deleteCount), 0), len - actualStart); + function __extends(d, b) { + _extendStatics(d, b); + + function __() { + this.constructor = d; + } + + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var _assign = function __assign() { + _assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + + for (var p in s) { + if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } } - if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) { - throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + + return t; + }; + + return _assign.apply(this, arguments); + }; + function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, + m = s && o[s], + i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function next() { + if (o && i >= o.length) o = void 0; + return { + value: o && o[i++], + done: !o + }; } - A = arraySpeciesCreate(O, actualDeleteCount); - for (k = 0; k < actualDeleteCount; k++) { - from = actualStart + k; - if (from in O) createProperty(A, k, O[from]); + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + } + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), + r, + ar = [], + e; + + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { + ar.push(r.value); } - A.length = actualDeleteCount; - if (insertCount < actualDeleteCount) { - for (k = actualStart; k < len - actualDeleteCount; k++) { - from = k + actualDeleteCount; - to = k + insertCount; - if (from in O) O[to] = O[from]; - else delete O[to]; - } - for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; - } else if (insertCount > actualDeleteCount) { - for (k = len - actualDeleteCount; k > actualStart; k--) { - from = k + actualDeleteCount - 1; - to = k + insertCount - 1; - if (from in O) O[to] = O[from]; - else delete O[to]; + } catch (error) { + e = { + error: error + }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + + return ar; + } + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) { + ar = ar.concat(__read(arguments[i])); + } + + return ar; + } + + /** JSDoc */ + var Severity; + + (function (Severity) { + /** JSDoc */ + Severity["Fatal"] = "fatal"; + /** JSDoc */ + + Severity["Error"] = "error"; + /** JSDoc */ + + Severity["Warning"] = "warning"; + /** JSDoc */ + + Severity["Log"] = "log"; + /** JSDoc */ + + Severity["Info"] = "info"; + /** JSDoc */ + + Severity["Debug"] = "debug"; + /** JSDoc */ + + Severity["Critical"] = "critical"; + })(Severity || (Severity = {})); // tslint:disable:completed-docs + // tslint:disable:no-unnecessary-qualifier no-namespace + + + (function (Severity) { + /** + * Converts a string-based level into a {@link Severity}. + * + * @param level string representation of Severity + * @returns Severity + */ + function fromString(level) { + switch (level) { + case 'debug': + return Severity.Debug; + + case 'info': + return Severity.Info; + + case 'warn': + case 'warning': + return Severity.Warning; + + case 'error': + return Severity.Error; + + case 'fatal': + return Severity.Fatal; + + case 'critical': + return Severity.Critical; + + case 'log': + default: + return Severity.Log; + } + } + + Severity.fromString = fromString; + })(Severity || (Severity = {})); + + /** The status of an event. */ + var Status; + + (function (Status) { + /** The status could not be determined. */ + Status["Unknown"] = "unknown"; + /** The event was skipped due to configuration or callbacks. */ + + Status["Skipped"] = "skipped"; + /** The event was sent to Sentry successfully. */ + + Status["Success"] = "success"; + /** The client is currently rate limited and will try again later. */ + + Status["RateLimit"] = "rate_limit"; + /** The event could not be processed. */ + + Status["Invalid"] = "invalid"; + /** A server-side error ocurred during submission. */ + + Status["Failed"] = "failed"; + })(Status || (Status = {})); // tslint:disable:completed-docs + // tslint:disable:no-unnecessary-qualifier no-namespace + + + (function (Status) { + /** + * Converts a HTTP status code into a {@link Status}. + * + * @param code The HTTP response status code. + * @returns The send status or {@link Status.Unknown}. + */ + function fromHttpCode(code) { + if (code >= 200 && code < 300) { + return Status.Success; + } + + if (code === 429) { + return Status.RateLimit; + } + + if (code >= 400 && code < 500) { + return Status.Invalid; + } + + if (code >= 500) { + return Status.Failed; + } + + return Status.Unknown; + } + + Status.fromHttpCode = fromHttpCode; + })(Status || (Status = {})); + + var defineProperty$6 = objectDefineProperty.f; + + var FunctionPrototype = Function.prototype; + var FunctionPrototypeToString = FunctionPrototype.toString; + var nameRE = /^\s*function ([^ (]*)/; + var NAME = 'name'; + + // Function instances `.name` property + // https://tc39.github.io/ecma262/#sec-function-instances-name + if (descriptors && !(NAME in FunctionPrototype)) { + defineProperty$6(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return FunctionPrototypeToString.call(this).match(nameRE)[1]; + } catch (error) { + return ''; } } - for (k = 0; k < insertCount; k++) { - O[k + actualStart] = arguments[k + 2]; + }); + } + + var setPrototypeOf = Object.setPrototypeOf || ({ + __proto__: [] + } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method + + /** + * setPrototypeOf polyfill using __proto__ + */ + + function setProtoOf(obj, proto) { + // @ts-ignore + obj.__proto__ = proto; + return obj; + } + /** + * setPrototypeOf polyfill using mixin + */ + + + function mixinProperties(obj, proto) { + for (var prop in proto) { + if (!obj.hasOwnProperty(prop)) { + // @ts-ignore + obj[prop] = proto[prop]; } - O.length = len - actualDeleteCount + insertCount; - return A; } - }); + + return obj; + } + + /** An error emitted by Sentry SDKs and related utilities. */ + + var SentryError = + /** @class */ + function (_super) { + __extends(SentryError, _super); + + function SentryError(message) { + var _newTarget = this.constructor; + + var _this = _super.call(this, message) || this; + + _this.message = message; // tslint:disable:no-unsafe-any + + _this.name = _newTarget.prototype.constructor.name; + setPrototypeOf(_this, _newTarget.prototype); + return _this; + } + + return SentryError; + }(Error); + + /** + * Checks whether given value's type is one of a few Error or Error-like + * {@link isError}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + function isError(wat) { + switch (Object.prototype.toString.call(wat)) { + case '[object Error]': + return true; + + case '[object Exception]': + return true; + + case '[object DOMException]': + return true; + + default: + return isInstanceOf(wat, Error); + } + } + /** + * Checks whether given value's type is ErrorEvent + * {@link isErrorEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isErrorEvent(wat) { + return Object.prototype.toString.call(wat) === '[object ErrorEvent]'; + } + /** + * Checks whether given value's type is DOMError + * {@link isDOMError}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isDOMError(wat) { + return Object.prototype.toString.call(wat) === '[object DOMError]'; + } + /** + * Checks whether given value's type is DOMException + * {@link isDOMException}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isDOMException(wat) { + return Object.prototype.toString.call(wat) === '[object DOMException]'; + } + /** + * Checks whether given value's type is a string + * {@link isString}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isString(wat) { + return Object.prototype.toString.call(wat) === '[object String]'; + } + /** + * Checks whether given value's is a primitive (undefined, null, number, boolean, string) + * {@link isPrimitive}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isPrimitive(wat) { + return wat === null || _typeof(wat) !== 'object' && typeof wat !== 'function'; + } + /** + * Checks whether given value's type is an object literal + * {@link isPlainObject}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isPlainObject(wat) { + return Object.prototype.toString.call(wat) === '[object Object]'; + } + /** + * Checks whether given value's type is an Event instance + * {@link isEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isEvent(wat) { + // tslint:disable-next-line:strict-type-predicates + return typeof Event !== 'undefined' && isInstanceOf(wat, Event); + } + /** + * Checks whether given value's type is an Element instance + * {@link isElement}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isElement(wat) { + // tslint:disable-next-line:strict-type-predicates + return typeof Element !== 'undefined' && isInstanceOf(wat, Element); + } + /** + * Checks whether given value's type is an regexp + * {@link isRegExp}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isRegExp(wat) { + return Object.prototype.toString.call(wat) === '[object RegExp]'; + } + /** + * Checks whether given value has a then function. + * @param wat A value to be checked. + */ + + function isThenable$1(wat) { + // tslint:disable:no-unsafe-any + return Boolean(wat && wat.then && typeof wat.then === 'function'); // tslint:enable:no-unsafe-any + } + /** + * Checks whether given value's type is a SyntheticEvent + * {@link isSyntheticEvent}. + * + * @param wat A value to be checked. + * @returns A boolean representing the result. + */ + + function isSyntheticEvent(wat) { + // tslint:disable-next-line:no-unsafe-any + return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat; + } + /** + * Checks whether given value's type is an instance of provided constructor. + * {@link isInstanceOf}. + * + * @param wat A value to be checked. + * @param base A constructor to be used in a check. + * @returns A boolean representing the result. + */ + + function isInstanceOf(wat, base) { + try { + // tslint:disable-next-line:no-unsafe-any + return wat instanceof base; + } catch (_e) { + return false; + } + } // @@match logic fixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { @@ -5246,164 +6160,27 @@ typeof navigator === "object" && (function () { ]; }); - var internalFilter = arrayMethods(2); - var SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport('filter'); - - // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - // with adding support of @@species - _export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT$3 }, { - filter: function filter(callbackfn /* , thisArg */) { - return internalFilter(this, callbackfn, arguments[1]); - } - }); - - var internalMap = arrayMethods(1); - var SPECIES_SUPPORT$4 = arrayMethodHasSpeciesSupport('map'); - - // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - // with adding support of @@species - _export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT$4 }, { - map: function map(callbackfn /* , thisArg */) { - return internalMap(this, callbackfn, arguments[1]); - } - }); - - // `Array.prototype.{ reduce, reduceRight }` methods implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright - var arrayReduce = function (that, callbackfn, argumentsLength, memo, isRight) { - aFunction(callbackfn); - var O = toObject(that); - var self = indexedObject(O); - var length = toLength(O.length); - var index = isRight ? length - 1 : 0; - var i = isRight ? -1 : 1; - if (argumentsLength < 2) while (true) { - if (index in self) { - memo = self[index]; - index += i; - break; - } - index += i; - if (isRight ? index < 0 : length <= index) { - throw TypeError('Reduce of empty array with no initial value'); - } - } - for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { - memo = callbackfn(memo, self[index], index, O); - } - return memo; - }; - - var SLOPPY_METHOD$4 = sloppyArrayMethod('reduce'); - - // `Array.prototype.reduce` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - _export({ target: 'Array', proto: true, forced: SLOPPY_METHOD$4 }, { - reduce: function reduce(callbackfn /* , initialValue */) { - return arrayReduce(this, callbackfn, arguments.length, arguments[1], false); - } - }); - - var nativeIsFrozen = Object.isFrozen; - var FAILS_ON_PRIMITIVES$1 = fails(function () { nativeIsFrozen(1); }); - - // `Object.isFrozen` method - // https://tc39.github.io/ecma262/#sec-object.isfrozen - _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$1 }, { - isFrozen: function isFrozen(it) { - return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; - } - }); - - var inheritIfRequired = function (that, target, C) { - var S = target.constructor; - var P; - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && objectSetPrototypeOf) { - objectSetPrototypeOf(that, P); - } return that; - }; - - var defineProperty$4 = objectDefineProperty.f; - var getOwnPropertyNames = objectGetOwnPropertyNames.f; - - - - - - - - var MATCH$2 = wellKnownSymbol('match'); - var NativeRegExp = global_1.RegExp; - var RegExpPrototype$1 = NativeRegExp.prototype; - var re1 = /a/g; - var re2 = /a/g; - - // "new" should create a new object, old webkit bug - var CORRECT_NEW = new NativeRegExp(re1) !== re1; - - var FORCED$2 = isForced_1('RegExp', descriptors && (!CORRECT_NEW || fails(function () { - re2[MATCH$2] = false; - // RegExp constructor can alter flags and IsRegExp works correct with @@match - return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; - }))); - - // `RegExp` constructor - // https://tc39.github.io/ecma262/#sec-regexp-constructor - if (FORCED$2) { - var RegExpWrapper = function RegExp(pattern, flags) { - var thisIsRegExp = this instanceof RegExpWrapper; - var patternIsRegExp = isRegexp(pattern); - var flagsAreUndefined = flags === undefined; - return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern - : inheritIfRequired(CORRECT_NEW - ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags) - : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper) - ? pattern.source - : pattern, patternIsRegExp && flagsAreUndefined ? regexpFlags.call(pattern) : flags) - , thisIsRegExp ? this : RegExpPrototype$1, RegExpWrapper); - }; - var proxy = function (key) { - key in RegExpWrapper || defineProperty$4(RegExpWrapper, key, { - configurable: true, - get: function () { return NativeRegExp[key]; }, - set: function (it) { NativeRegExp[key] = it; } - }); - }; - var keys$1 = getOwnPropertyNames(NativeRegExp); - var i = 0; - while (i < keys$1.length) proxy(keys$1[i++]); - RegExpPrototype$1.constructor = RegExpWrapper; - RegExpWrapper.prototype = RegExpPrototype$1; - redefine(global_1, 'RegExp', RegExpWrapper); - } - - // https://tc39.github.io/ecma262/#sec-get-regexp-@@species - setSpecies('RegExp'); + var arrayBufferNative = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined'; - var defineProperty$5 = objectDefineProperty.f; + var defineProperty$7 = objectDefineProperty.f; - var DataView = global_1.DataView; - var DataViewPrototype = DataView && DataView.prototype; var Int8Array$1 = global_1.Int8Array; var Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype; var Uint8ClampedArray = global_1.Uint8ClampedArray; var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; var TypedArray = Int8Array$1 && objectGetPrototypeOf(Int8Array$1); var TypedArrayPrototype = Int8ArrayPrototype && objectGetPrototypeOf(Int8ArrayPrototype); - var ObjectPrototype$3 = Object.prototype; - var isPrototypeOf = ObjectPrototype$3.isPrototypeOf; + var ObjectPrototype$2 = Object.prototype; + var isPrototypeOf = ObjectPrototype$2.isPrototypeOf; var TO_STRING_TAG$4 = wellKnownSymbol('toStringTag'); var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); - var NATIVE_ARRAY_BUFFER = !!(global_1.ArrayBuffer && global_1.DataView); - var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!objectSetPrototypeOf; + // Fixing native typed arrays in Opera Presto crashes the browser, see #595 + var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferNative && !!objectSetPrototypeOf && classof(global_1.opera) !== 'Opera'; var TYPED_ARRAY_TAG_REQIRED = false; var NAME$1; @@ -5444,7 +6221,7 @@ typeof navigator === "object" && (function () { } throw TypeError('Target is not a typed array constructor'); }; - var exportProto = function (KEY, property, forced) { + var exportTypedArrayMethod = function (KEY, property, forced) { if (!descriptors) return; if (forced) for (var ARRAY in TypedArrayConstructorsList) { var TypedArrayConstructor = global_1[ARRAY]; @@ -5458,7 +6235,7 @@ typeof navigator === "object" && (function () { } }; - var exportStatic = function (KEY, property, forced) { + var exportTypedArrayStaticMethod = function (KEY, property, forced) { var ARRAY, TypedArrayConstructor; if (!descriptors) return; if (objectSetPrototypeOf) { @@ -5498,7 +6275,7 @@ typeof navigator === "object" && (function () { } } - if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype$3) { + if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype$2) { TypedArrayPrototype = TypedArray.prototype; if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) { if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1].prototype, TypedArrayPrototype); @@ -5512,27 +6289,21 @@ typeof navigator === "object" && (function () { if (descriptors && !has(TypedArrayPrototype, TO_STRING_TAG$4)) { TYPED_ARRAY_TAG_REQIRED = true; - defineProperty$5(TypedArrayPrototype, TO_STRING_TAG$4, { get: function () { + defineProperty$7(TypedArrayPrototype, TO_STRING_TAG$4, { get: function () { return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; } }); for (NAME$1 in TypedArrayConstructorsList) if (global_1[NAME$1]) { - hide(global_1[NAME$1], TYPED_ARRAY_TAG, NAME$1); + createNonEnumerableProperty(global_1[NAME$1], TYPED_ARRAY_TAG, NAME$1); } } - // WebKit bug - the same parent prototype for typed arrays and data view - if (NATIVE_ARRAY_BUFFER && objectSetPrototypeOf && objectGetPrototypeOf(DataViewPrototype) !== ObjectPrototype$3) { - objectSetPrototypeOf(DataViewPrototype, ObjectPrototype$3); - } - var arrayBufferViewCore = { - NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER, NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG, aTypedArray: aTypedArray, aTypedArrayConstructor: aTypedArrayConstructor, - exportProto: exportProto, - exportStatic: exportStatic, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, isView: isView, isTypedArray: isTypedArray, TypedArray: TypedArray, @@ -5545,10 +6316,10 @@ typeof navigator === "object" && (function () { var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; - var ArrayBuffer = global_1.ArrayBuffer; + var ArrayBuffer$1 = global_1.ArrayBuffer; var Int8Array$2 = global_1.Int8Array; - var typedArraysConstructorsRequiresWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails(function () { + var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails(function () { Int8Array$2(1); }) || !fails(function () { new Int8Array$2(-1); @@ -5558,8 +6329,8 @@ typeof navigator === "object" && (function () { new Int8Array$2(1.5); new Int8Array$2(iterable); }, true) || fails(function () { - // Safari 11 bug - return new Int8Array$2(new ArrayBuffer(2), 1, undefined).length !== 1; + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array$2(new ArrayBuffer$1(2), 1, undefined).length !== 1; }); // `ToIndex` abstract operation @@ -5572,69 +6343,40 @@ typeof navigator === "object" && (function () { return length; }; - var arrayBuffer = createCommonjsModule(function (module, exports) { - - - var NATIVE_ARRAY_BUFFER = arrayBufferViewCore.NATIVE_ARRAY_BUFFER; - - - - - - - - var getOwnPropertyNames = objectGetOwnPropertyNames.f; - var defineProperty = objectDefineProperty.f; - - - - - var getInternalState = internalState.get; - var setInternalState = internalState.set; - var ARRAY_BUFFER = 'ArrayBuffer'; - var DATA_VIEW = 'DataView'; - var PROTOTYPE = 'prototype'; - var WRONG_LENGTH = 'Wrong length'; - var WRONG_INDEX = 'Wrong index'; - var NativeArrayBuffer = global_1[ARRAY_BUFFER]; - var $ArrayBuffer = NativeArrayBuffer; - var $DataView = global_1[DATA_VIEW]; - var Math = global_1.Math; - var RangeError = global_1.RangeError; + // IEEE754 conversions based on https://github.com/feross/ieee754 // eslint-disable-next-line no-shadow-restricted-names - var Infinity = 1 / 0; + var Infinity$1 = 1 / 0; var abs = Math.abs; - var pow = Math.pow; - var floor = Math.floor; + var pow$1 = Math.pow; + var floor$4 = Math.floor; var log = Math.log; var LN2 = Math.LN2; - // IEEE754 conversions based on https://github.com/feross/ieee754 - var packIEEE754 = function (number, mantissaLength, bytes) { + var pack = function (number, mantissaLength, bytes) { var buffer = new Array(bytes); var exponentLength = bytes * 8 - mantissaLength - 1; var eMax = (1 << exponentLength) - 1; var eBias = eMax >> 1; - var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0; + var rt = mantissaLength === 23 ? pow$1(2, -24) - pow$1(2, -77) : 0; var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; var index = 0; var exponent, mantissa, c; number = abs(number); // eslint-disable-next-line no-self-compare - if (number != number || number === Infinity) { + if (number != number || number === Infinity$1) { // eslint-disable-next-line no-self-compare mantissa = number != number ? 1 : 0; exponent = eMax; } else { - exponent = floor(log(number) / LN2); - if (number * (c = pow(2, -exponent)) < 1) { + exponent = floor$4(log(number) / LN2); + if (number * (c = pow$1(2, -exponent)) < 1) { exponent--; c *= 2; } if (exponent + eBias >= 1) { number += rt / c; } else { - number += rt * pow(2, 1 - eBias); + number += rt * pow$1(2, 1 - eBias); } if (number * c >= 2) { exponent++; @@ -5644,10 +6386,10 @@ typeof navigator === "object" && (function () { mantissa = 0; exponent = eMax; } else if (exponent + eBias >= 1) { - mantissa = (number * c - 1) * pow(2, mantissaLength); + mantissa = (number * c - 1) * pow$1(2, mantissaLength); exponent = exponent + eBias; } else { - mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength); + mantissa = number * pow$1(2, eBias - 1) * pow$1(2, mantissaLength); exponent = 0; } } @@ -5659,7 +6401,7 @@ typeof navigator === "object" && (function () { return buffer; }; - var unpackIEEE754 = function (buffer, mantissaLength) { + var unpack = function (buffer, mantissaLength) { var bytes = buffer.length; var exponentLength = bytes * 8 - mantissaLength - 1; var eMax = (1 << exponentLength) - 1; @@ -5678,17 +6420,54 @@ typeof navigator === "object" && (function () { if (exponent === 0) { exponent = 1 - eBias; } else if (exponent === eMax) { - return mantissa ? NaN : sign ? -Infinity : Infinity; + return mantissa ? NaN : sign ? -Infinity$1 : Infinity$1; } else { - mantissa = mantissa + pow(2, mantissaLength); + mantissa = mantissa + pow$1(2, mantissaLength); exponent = exponent - eBias; - } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength); + } return (sign ? -1 : 1) * mantissa * pow$1(2, exponent - mantissaLength); }; - var unpackInt32 = function (buffer) { - return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; + var ieee754 = { + pack: pack, + unpack: unpack + }; + + // `Array.prototype.fill` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.fill + var arrayFill = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; }; + var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var defineProperty$8 = objectDefineProperty.f; + + + + + var getInternalState$4 = internalState.get; + var setInternalState$7 = internalState.set; + var ARRAY_BUFFER = 'ArrayBuffer'; + var DATA_VIEW = 'DataView'; + var PROTOTYPE$2 = 'prototype'; + var WRONG_LENGTH = 'Wrong length'; + var WRONG_INDEX = 'Wrong index'; + var NativeArrayBuffer = global_1[ARRAY_BUFFER]; + var $ArrayBuffer = NativeArrayBuffer; + var $DataView = global_1[DATA_VIEW]; + var $DataViewPrototype = $DataView && $DataView[PROTOTYPE$2]; + var ObjectPrototype$3 = Object.prototype; + var RangeError$1 = global_1.RangeError; + + var packIEEE754 = ieee754.pack; + var unpackIEEE754 = ieee754.unpack; + var packInt8 = function (number) { return [number & 0xFF]; }; @@ -5701,6 +6480,10 @@ typeof navigator === "object" && (function () { return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; }; + var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; + }; + var packFloat32 = function (number) { return packIEEE754(number, 23, 4); }; @@ -5710,36 +6493,34 @@ typeof navigator === "object" && (function () { }; var addGetter = function (Constructor, key) { - defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } }); + defineProperty$8(Constructor[PROTOTYPE$2], key, { get: function () { return getInternalState$4(this)[key]; } }); }; - var get = function (view, count, index, isLittleEndian) { - var numIndex = +index; - var intIndex = toIndex(numIndex); - var store = getInternalState(view); - if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); - var bytes = getInternalState(store.buffer).bytes; + var get$1 = function (view, count, index, isLittleEndian) { + var intIndex = toIndex(index); + var store = getInternalState$4(view); + if (intIndex + count > store.byteLength) throw RangeError$1(WRONG_INDEX); + var bytes = getInternalState$4(store.buffer).bytes; var start = intIndex + store.byteOffset; var pack = bytes.slice(start, start + count); return isLittleEndian ? pack : pack.reverse(); }; - var set = function (view, count, index, conversion, value, isLittleEndian) { - var numIndex = +index; - var intIndex = toIndex(numIndex); - var store = getInternalState(view); - if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); - var bytes = getInternalState(store.buffer).bytes; + var set$2 = function (view, count, index, conversion, value, isLittleEndian) { + var intIndex = toIndex(index); + var store = getInternalState$4(view); + if (intIndex + count > store.byteLength) throw RangeError$1(WRONG_INDEX); + var bytes = getInternalState$4(store.buffer).bytes; var start = intIndex + store.byteOffset; var pack = conversion(+value); for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1]; }; - if (!NATIVE_ARRAY_BUFFER) { + if (!arrayBufferNative) { $ArrayBuffer = function ArrayBuffer(length) { anInstance(this, $ArrayBuffer, ARRAY_BUFFER); var byteLength = toIndex(length); - setInternalState(this, { + setInternalState$7(this, { bytes: arrayFill.call(new Array(byteLength), 0), byteLength: byteLength }); @@ -5749,12 +6530,12 @@ typeof navigator === "object" && (function () { $DataView = function DataView(buffer, byteOffset, byteLength) { anInstance(this, $DataView, DATA_VIEW); anInstance(buffer, $ArrayBuffer, DATA_VIEW); - var bufferLength = getInternalState(buffer).byteLength; + var bufferLength = getInternalState$4(buffer).byteLength; var offset = toInteger(byteOffset); - if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset'); + if (offset < 0 || offset > bufferLength) throw RangeError$1('Wrong offset'); byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); - if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); - setInternalState(this, { + if (offset + byteLength > bufferLength) throw RangeError$1(WRONG_LENGTH); + setInternalState$7(this, { buffer: buffer, byteLength: byteLength, byteOffset: offset @@ -5773,56 +6554,56 @@ typeof navigator === "object" && (function () { addGetter($DataView, 'byteOffset'); } - redefineAll($DataView[PROTOTYPE], { + redefineAll($DataView[PROTOTYPE$2], { getInt8: function getInt8(byteOffset) { - return get(this, 1, byteOffset)[0] << 24 >> 24; + return get$1(this, 1, byteOffset)[0] << 24 >> 24; }, getUint8: function getUint8(byteOffset) { - return get(this, 1, byteOffset)[0]; + return get$1(this, 1, byteOffset)[0]; }, getInt16: function getInt16(byteOffset /* , littleEndian */) { - var bytes = get(this, 2, byteOffset, arguments[1]); + var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); return (bytes[1] << 8 | bytes[0]) << 16 >> 16; }, getUint16: function getUint16(byteOffset /* , littleEndian */) { - var bytes = get(this, 2, byteOffset, arguments[1]); + var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); return bytes[1] << 8 | bytes[0]; }, getInt32: function getInt32(byteOffset /* , littleEndian */) { - return unpackInt32(get(this, 4, byteOffset, arguments[1])); + return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)); }, getUint32: function getUint32(byteOffset /* , littleEndian */) { - return unpackInt32(get(this, 4, byteOffset, arguments[1])) >>> 0; + return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0; }, getFloat32: function getFloat32(byteOffset /* , littleEndian */) { - return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23); + return unpackIEEE754(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23); }, getFloat64: function getFloat64(byteOffset /* , littleEndian */) { - return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52); + return unpackIEEE754(get$1(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52); }, setInt8: function setInt8(byteOffset, value) { - set(this, 1, byteOffset, packInt8, value); + set$2(this, 1, byteOffset, packInt8, value); }, setUint8: function setUint8(byteOffset, value) { - set(this, 1, byteOffset, packInt8, value); + set$2(this, 1, byteOffset, packInt8, value); }, setInt16: function setInt16(byteOffset, value /* , littleEndian */) { - set(this, 2, byteOffset, packInt16, value, arguments[2]); + set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); }, setUint16: function setUint16(byteOffset, value /* , littleEndian */) { - set(this, 2, byteOffset, packInt16, value, arguments[2]); + set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); }, setInt32: function setInt32(byteOffset, value /* , littleEndian */) { - set(this, 4, byteOffset, packInt32, value, arguments[2]); + set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); }, setUint32: function setUint32(byteOffset, value /* , littleEndian */) { - set(this, 4, byteOffset, packInt32, value, arguments[2]); + set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); }, setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { - set(this, 4, byteOffset, packFloat32, value, arguments[2]); + set$2(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined); }, setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { - set(this, 8, byteOffset, packFloat64, value, arguments[2]); + set$2(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined); } }); } else { @@ -5840,18 +6621,26 @@ typeof navigator === "object" && (function () { anInstance(this, $ArrayBuffer); return new NativeArrayBuffer(toIndex(length)); }; - var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE]; - for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) { - if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, NativeArrayBuffer[key]); + var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE$2] = NativeArrayBuffer[PROTOTYPE$2]; + for (var keys$2 = getOwnPropertyNames$1(NativeArrayBuffer), j = 0, key; keys$2.length > j;) { + if (!((key = keys$2[j++]) in $ArrayBuffer)) { + createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]); + } } ArrayBufferPrototype.constructor = $ArrayBuffer; } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (objectSetPrototypeOf && objectGetPrototypeOf($DataViewPrototype) !== ObjectPrototype$3) { + objectSetPrototypeOf($DataViewPrototype, ObjectPrototype$3); + } + // iOS Safari 7.x bug var testView = new $DataView(new $ArrayBuffer(2)); - var nativeSetInt8 = $DataView[PROTOTYPE].setInt8; + var nativeSetInt8 = $DataViewPrototype.setInt8; testView.setInt8(0, 2147483648); testView.setInt8(1, 2147483649); - if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], { + if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, { setInt8: function setInt8(byteOffset, value) { nativeSetInt8.call(this, byteOffset, value << 24 >> 24); }, @@ -5863,13 +6652,21 @@ typeof navigator === "object" && (function () { setToStringTag($ArrayBuffer, ARRAY_BUFFER); setToStringTag($DataView, DATA_VIEW); - exports[ARRAY_BUFFER] = $ArrayBuffer; - exports[DATA_VIEW] = $DataView; - }); + + var arrayBuffer = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView + }; + + var toPositiveInteger = function (it) { + var result = toInteger(it); + if (result < 0) throw RangeError("The argument can't be less than 0"); + return result; + }; var toOffset = function (it, BYTES) { - var offset = toInteger(it); - if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset'); + var offset = toPositiveInteger(it); + if (offset % BYTES) throw RangeError('Wrong offset'); return offset; }; @@ -5881,16 +6678,17 @@ typeof navigator === "object" && (function () { var mapfn = argumentsLength > 1 ? arguments[1] : undefined; var mapping = mapfn !== undefined; var iteratorMethod = getIteratorMethod(O); - var i, length, result, step, iterator; + var i, length, result, step, iterator, next; if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) { iterator = iteratorMethod.call(O); + next = iterator.next; O = []; - while (!(step = iterator.next()).done) { + while (!(step = next.call(iterator)).done) { O.push(step.value); } } if (mapping && argumentsLength > 2) { - mapfn = bindContext(mapfn, arguments[2], 2); + mapfn = functionBindContext(mapfn, arguments[2], 2); } length = toLength(O.length); result = new (aTypedArrayConstructor$1(this))(length); @@ -5921,6 +6719,7 @@ typeof navigator === "object" && (function () { var getOwnPropertyNames = objectGetOwnPropertyNames.f; + var forEach = arrayIteration.forEach; @@ -5931,7 +6730,7 @@ typeof navigator === "object" && (function () { var setInternalState = internalState.set; var nativeDefineProperty = objectDefineProperty.f; var nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var forEach = arrayMethods(0); + var round = Math.round; var RangeError = global_1.RangeError; var ArrayBuffer = arrayBuffer.ArrayBuffer; var DataView = arrayBuffer.DataView; @@ -6007,8 +6806,8 @@ typeof navigator === "object" && (function () { defineProperty: wrappedDefineProperty }); - // eslint-disable-next-line max-statements - module.exports = function (TYPE, BYTES, wrapper, CLAMPED) { + module.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+$/)[0] / 8; var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; var GETTER = 'get' + TYPE; var SETTER = 'set' + TYPE; @@ -6024,7 +6823,7 @@ typeof navigator === "object" && (function () { var setter = function (that, index, value) { var data = getInternalState(that); - if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; + if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; data.view[SETTER](index * BYTES + data.byteOffset, value, true); }; @@ -6080,31 +6879,37 @@ typeof navigator === "object" && (function () { if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray); TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = objectCreate(TypedArrayPrototype); - } else if (typedArraysConstructorsRequiresWrappers) { - TypedArrayConstructor = wrapper(function (that, data, typedArrayOffset, $length) { - anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME); - if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); - if (isArrayBuffer(data)) return $length !== undefined - ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) - : typedArrayOffset !== undefined - ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) - : new NativeTypedArrayConstructor(data); - if (isTypedArray(data)) return fromList(TypedArrayConstructor, data); - return typedArrayFrom.call(TypedArrayConstructor, data); + } else if (typedArrayConstructorsRequireWrappers) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME); + return inheritIfRequired(function () { + if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return fromList(TypedArrayConstructor, data); + return typedArrayFrom.call(TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); }); if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray); forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { - if (!(key in TypedArrayConstructor)) hide(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } }); TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; } if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { - hide(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); } - if (TYPED_ARRAY_TAG) hide(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; @@ -6113,11 +6918,11 @@ typeof navigator === "object" && (function () { }, exported); if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { - hide(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); } if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { - hide(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); } setSpecies(CONSTRUCTOR_NAME); @@ -6127,12 +6932,14 @@ typeof navigator === "object" && (function () { // `Uint16Array` constructor // https://tc39.github.io/ecma262/#sec-typedarray-objects - typedArrayConstructor('Uint16', 2, function (init) { + typedArrayConstructor('Uint16', function (init) { return function Uint16Array(data, byteOffset, length) { return init(this, data, byteOffset, length); }; }); + var min$4 = Math.min; + // `Array.prototype.copyWithin` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin var arrayCopyWithin = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { @@ -6141,7 +6948,7 @@ typeof navigator === "object" && (function () { var to = toAbsoluteIndex(target, len); var from = toAbsoluteIndex(start, len); var end = arguments.length > 2 ? arguments[2] : undefined; - var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var count = min$4((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); var inc = 1; if (from < to && to < from + count) { inc = -1; @@ -6157,39 +6964,46 @@ typeof navigator === "object" && (function () { }; var aTypedArray$1 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$1 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.copyWithin` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin - arrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) { + exportTypedArrayMethod$1('copyWithin', function copyWithin(target, start /* , end */) { return arrayCopyWithin.call(aTypedArray$1(this), target, start, arguments.length > 2 ? arguments[2] : undefined); }); - var arrayEvery = arrayMethods(4); + var $every = arrayIteration.every; + var aTypedArray$2 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$2 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.every` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every - arrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) { - return arrayEvery(aTypedArray$2(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$2('every', function every(callbackfn /* , thisArg */) { + return $every(aTypedArray$2(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); }); var aTypedArray$3 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$3 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.fill` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill // eslint-disable-next-line no-unused-vars - arrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) { + exportTypedArrayMethod$3('fill', function fill(value /* , start, end */) { return arrayFill.apply(aTypedArray$3(this), arguments); }); - var arrayFilter = arrayMethods(2); + var $filter = arrayIteration.filter; + + var aTypedArray$4 = arrayBufferViewCore.aTypedArray; var aTypedArrayConstructor$2 = arrayBufferViewCore.aTypedArrayConstructor; + var exportTypedArrayMethod$4 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.filter` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter - arrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) { - var list = arrayFilter(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$4('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); var C = speciesConstructor(this, this.constructor); var index = 0; var length = list.length; @@ -6198,49 +7012,59 @@ typeof navigator === "object" && (function () { return result; }); - var arrayFind = arrayMethods(5); + var $find = arrayIteration.find; + var aTypedArray$5 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$5 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.find` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find - arrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) { - return arrayFind(aTypedArray$5(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$5('find', function find(predicate /* , thisArg */) { + return $find(aTypedArray$5(this), predicate, arguments.length > 1 ? arguments[1] : undefined); }); - var arrayFindIndex = arrayMethods(6); + var $findIndex = arrayIteration.findIndex; + var aTypedArray$6 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex - arrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) { - return arrayFindIndex(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$6('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined); }); - var arrayForEach$1 = arrayMethods(0); + var $forEach$2 = arrayIteration.forEach; + var aTypedArray$7 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$7 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach - arrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) { - arrayForEach$1(aTypedArray$7(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$7('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach$2(aTypedArray$7(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); }); + var $includes$1 = arrayIncludes.includes; + var aTypedArray$8 = arrayBufferViewCore.aTypedArray; - var arrayIncludes$1 = arrayIncludes(true); + var exportTypedArrayMethod$8 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.includes` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes - arrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) { - return arrayIncludes$1(aTypedArray$8(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$8('includes', function includes(searchElement /* , fromIndex */) { + return $includes$1(aTypedArray$8(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); }); + var $indexOf$1 = arrayIncludes.indexOf; + var aTypedArray$9 = arrayBufferViewCore.aTypedArray; - var arrayIndexOf$1 = arrayIncludes(false); + var exportTypedArrayMethod$9 = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof - arrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) { - return arrayIndexOf$1(aTypedArray$9(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$9('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf$1(aTypedArray$9(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); }); var ITERATOR$8 = wellKnownSymbol('iterator'); @@ -6249,7 +7073,7 @@ typeof navigator === "object" && (function () { var arrayKeys = es_array_iterator.keys; var arrayEntries = es_array_iterator.entries; var aTypedArray$a = arrayBufferViewCore.aTypedArray; - var exportProto$1 = arrayBufferViewCore.exportProto; + var exportTypedArrayMethod$a = arrayBufferViewCore.exportTypedArrayMethod; var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR$8]; var CORRECT_ITER_NAME = !!nativeTypedArrayIterator @@ -6261,77 +7085,147 @@ typeof navigator === "object" && (function () { // `%TypedArray%.prototype.entries` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries - exportProto$1('entries', function entries() { + exportTypedArrayMethod$a('entries', function entries() { return arrayEntries.call(aTypedArray$a(this)); }); // `%TypedArray%.prototype.keys` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys - exportProto$1('keys', function keys() { + exportTypedArrayMethod$a('keys', function keys() { return arrayKeys.call(aTypedArray$a(this)); }); // `%TypedArray%.prototype.values` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values - exportProto$1('values', typedArrayValues, !CORRECT_ITER_NAME); + exportTypedArrayMethod$a('values', typedArrayValues, !CORRECT_ITER_NAME); // `%TypedArray%.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator - exportProto$1(ITERATOR$8, typedArrayValues, !CORRECT_ITER_NAME); + exportTypedArrayMethod$a(ITERATOR$8, typedArrayValues, !CORRECT_ITER_NAME); var aTypedArray$b = arrayBufferViewCore.aTypedArray; - var arrayJoin = [].join; + var exportTypedArrayMethod$b = arrayBufferViewCore.exportTypedArrayMethod; + var $join = [].join; // `%TypedArray%.prototype.join` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join // eslint-disable-next-line no-unused-vars - arrayBufferViewCore.exportProto('join', function join(separator) { - return arrayJoin.apply(aTypedArray$b(this), arguments); + exportTypedArrayMethod$b('join', function join(separator) { + return $join.apply(aTypedArray$b(this), arguments); }); + var min$5 = Math.min; + var nativeLastIndexOf = [].lastIndexOf; + var NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; + var STRICT_METHOD$3 = arrayMethodIsStrict('lastIndexOf'); + // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method + var USES_TO_LENGTH$5 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + var FORCED$4 = NEGATIVE_ZERO$1 || !STRICT_METHOD$3 || !USES_TO_LENGTH$5; + + // `Array.prototype.lastIndexOf` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof + var arrayLastIndexOf = FORCED$4 ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO$1) return nativeLastIndexOf.apply(this, arguments) || 0; + var O = toIndexedObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = min$5(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; + } : nativeLastIndexOf; + var aTypedArray$c = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$c = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.lastIndexOf` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof // eslint-disable-next-line no-unused-vars - arrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + exportTypedArrayMethod$c('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { return arrayLastIndexOf.apply(aTypedArray$c(this), arguments); }); + var $map$1 = arrayIteration.map; + + var aTypedArray$d = arrayBufferViewCore.aTypedArray; var aTypedArrayConstructor$3 = arrayBufferViewCore.aTypedArrayConstructor; - - var internalTypedArrayMap = arrayMethods(1, function (O, length) { - return new (aTypedArrayConstructor$3(speciesConstructor(O, O.constructor)))(length); - }); + var exportTypedArrayMethod$d = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.map` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map - arrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) { - return internalTypedArrayMap(aTypedArray$d(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$d('map', function map(mapfn /* , thisArg */) { + return $map$1(aTypedArray$d(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (aTypedArrayConstructor$3(speciesConstructor(O, O.constructor)))(length); + }); }); + // `Array.prototype.{ reduce, reduceRight }` methods implementation + var createMethod$3 = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aFunction$1(callbackfn); + var O = toObject(that); + var self = indexedObject(O); + var length = toLength(O.length); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; + }; + + var arrayReduce = { + // `Array.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduce + left: createMethod$3(false), + // `Array.prototype.reduceRight` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright + right: createMethod$3(true) + }; + + var $reduce = arrayReduce.left; + var aTypedArray$e = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$e = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.reduce` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce - arrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) { - return arrayReduce(aTypedArray$e(this), callbackfn, arguments.length, arguments[1], false); + exportTypedArrayMethod$e('reduce', function reduce(callbackfn /* , initialValue */) { + return $reduce(aTypedArray$e(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); }); + var $reduceRight = arrayReduce.right; + var aTypedArray$f = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$f = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.reduceRicht` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright - arrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) { - return arrayReduce(aTypedArray$f(this), callbackfn, arguments.length, arguments[1], true); + exportTypedArrayMethod$f('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight(aTypedArray$f(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); }); var aTypedArray$g = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$g = arrayBufferViewCore.exportTypedArrayMethod; + var floor$5 = Math.floor; // `%TypedArray%.prototype.reverse` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse - arrayBufferViewCore.exportProto('reverse', function reverse() { + exportTypedArrayMethod$g('reverse', function reverse() { var that = this; var length = aTypedArray$g(that).length; - var middle = Math.floor(length / 2); + var middle = floor$5(length / 2); var index = 0; var value; while (index < middle) { @@ -6342,69 +7236,75 @@ typeof navigator === "object" && (function () { }); var aTypedArray$h = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$h = arrayBufferViewCore.exportTypedArrayMethod; - var FORCED$3 = fails(function () { + var FORCED$5 = fails(function () { // eslint-disable-next-line no-undef new Int8Array(1).set({}); }); // `%TypedArray%.prototype.set` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set - arrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) { + exportTypedArrayMethod$h('set', function set(arrayLike /* , offset */) { aTypedArray$h(this); - var offset = toOffset(arguments[1], 1); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); var length = this.length; var src = toObject(arrayLike); var len = toLength(src.length); var index = 0; if (len + offset > length) throw RangeError('Wrong length'); while (index < len) this[offset + index] = src[index++]; - }, FORCED$3); + }, FORCED$5); var aTypedArray$i = arrayBufferViewCore.aTypedArray; var aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor; - var arraySlice = [].slice; + var exportTypedArrayMethod$i = arrayBufferViewCore.exportTypedArrayMethod; + var $slice = [].slice; - var FORCED$4 = fails(function () { + var FORCED$6 = fails(function () { // eslint-disable-next-line no-undef new Int8Array(1).slice(); }); // `%TypedArray%.prototype.slice` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice - arrayBufferViewCore.exportProto('slice', function slice(start, end) { - var list = arraySlice.call(aTypedArray$i(this), start, end); + exportTypedArrayMethod$i('slice', function slice(start, end) { + var list = $slice.call(aTypedArray$i(this), start, end); var C = speciesConstructor(this, this.constructor); var index = 0; var length = list.length; var result = new (aTypedArrayConstructor$4(C))(length); while (length > index) result[index] = list[index++]; return result; - }, FORCED$4); + }, FORCED$6); + + var $some = arrayIteration.some; - var arraySome = arrayMethods(3); var aTypedArray$j = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$j = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.some` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some - arrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) { - return arraySome(aTypedArray$j(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + exportTypedArrayMethod$j('some', function some(callbackfn /* , thisArg */) { + return $some(aTypedArray$j(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); }); var aTypedArray$k = arrayBufferViewCore.aTypedArray; - var arraySort = [].sort; + var exportTypedArrayMethod$k = arrayBufferViewCore.exportTypedArrayMethod; + var $sort = [].sort; // `%TypedArray%.prototype.sort` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort - arrayBufferViewCore.exportProto('sort', function sort(comparefn) { - return arraySort.call(aTypedArray$k(this), comparefn); + exportTypedArrayMethod$k('sort', function sort(comparefn) { + return $sort.call(aTypedArray$k(this), comparefn); }); var aTypedArray$l = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$l = arrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.subarray` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray - arrayBufferViewCore.exportProto('subarray', function subarray(begin, end) { + exportTypedArrayMethod$l('subarray', function subarray(begin, end) { var O = aTypedArray$l(this); var length = O.length; var beginIndex = toAbsoluteIndex(begin, length); @@ -6417,14 +7317,16 @@ typeof navigator === "object" && (function () { var Int8Array$3 = global_1.Int8Array; var aTypedArray$m = arrayBufferViewCore.aTypedArray; - var arrayToLocaleString = [].toLocaleString; - var arraySlice$1 = [].slice; + var exportTypedArrayMethod$m = arrayBufferViewCore.exportTypedArrayMethod; + var $toLocaleString = [].toLocaleString; + var $slice$1 = [].slice; // iOS Safari 6.x fails here - var TO_LOCALE_BUG = !!Int8Array$3 && fails(function () { - arrayToLocaleString.call(new Int8Array$3(1)); + var TO_LOCALE_STRING_BUG = !!Int8Array$3 && fails(function () { + $toLocaleString.call(new Int8Array$3(1)); }); - var FORCED$5 = fails(function () { + + var FORCED$7 = fails(function () { return [1, 2].toLocaleString() != new Int8Array$3([1, 2]).toLocaleString(); }) || !fails(function () { Int8Array$3.prototype.toLocaleString.call([1, 2]); @@ -6432,3872 +7334,6452 @@ typeof navigator === "object" && (function () { // `%TypedArray%.prototype.toLocaleString` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring - arrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() { - return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice$1.call(aTypedArray$m(this)) : aTypedArray$m(this), arguments); - }, FORCED$5); + exportTypedArrayMethod$m('toLocaleString', function toLocaleString() { + return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice$1.call(aTypedArray$m(this)) : aTypedArray$m(this), arguments); + }, FORCED$7); + + var exportTypedArrayMethod$n = arrayBufferViewCore.exportTypedArrayMethod; + + var Uint8Array$1 = global_1.Uint8Array; - var Uint8ArrayPrototype = Uint8Array$1 && Uint8Array$1.prototype; + var Uint8ArrayPrototype = Uint8Array$1 && Uint8Array$1.prototype || {}; var arrayToString = [].toString; - var arrayJoin$1 = [].join; + var arrayJoin = [].join; if (fails(function () { arrayToString.call({}); })) { arrayToString = function toString() { - return arrayJoin$1.call(this); + return arrayJoin.call(this); }; } + var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; + // `%TypedArray%.prototype.toString` method // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring - arrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString); + exportTypedArrayMethod$n('toString', arrayToString, IS_NOT_ARRAY_METHOD); + + /** + * Truncates given string to the maximum characters count + * + * @param str An object that contains serializable values + * @param max Maximum number of characters in truncated string + * @returns string Encoded + */ - var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; + function truncate(str, max) { + if (max === void 0) { + max = 0; + } // tslint:disable-next-line:strict-type-predicates - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - return -1; + if (typeof str !== 'string' || max === 0) { + return str; } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + return str.length <= max ? str : str.substr(0, max) + "..."; + } + /** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns Joined values + */ + + function safeJoin(input, delimiter) { + if (!Array.isArray(input)) { + return ''; + } + var output = []; // tslint:disable-next-line:prefer-for-of - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + for (var i = 0; i < input.length; i++) { + var value = input[i]; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + try { + output.push(String(value)); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - return err; + return output.join(delimiter); + } + /** + * Checks if the value matches a regex or includes the string + * @param value The string value to be checked against + * @param pattern Either a regex or a string that must be contained in value + */ + + function isMatchingPattern(value, pattern) { + if (!isString(value)) { + return false; } - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (isRegExp(pattern)) { + return pattern.test(value); + } - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + if (typeof pattern === 'string') { + return value.indexOf(pattern) !== -1; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return false; + } + + /** + * Requires a module which is protected against bundler minification. + * + * @param request The module path to resolve + */ - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function dynamicRequire(mod, request) { + // tslint:disable-next-line: no-unsafe-any + return mod.require(request); + } + /** + * Checks whether we're in the Node.js or Browser environment + * + * @returns Answer to given question + */ - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function isNodeEnv() { + // tslint:disable:strict-type-predicates + return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; + } + var fallbackGlobalObject = {}; + /** + * Safely get global scope object + * + * @returns Global scope object + */ + + function getGlobalObject() { + return isNodeEnv() ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : fallbackGlobalObject; + } + /** + * UUID4 generator + * + * @returns string Generated UUID4. + */ + + function uuid4() { + var global = getGlobalObject(); + var crypto = global.crypto || global.msCrypto; + + if (!(crypto === void 0) && crypto.getRandomValues) { + // Use window.crypto API if available + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + // tslint:disable-next-line:no-bitwise + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // tslint:disable-next-line:no-bitwise + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = "0" + v; } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + return v; }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + + + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + // tslint:disable-next-line:no-bitwise + var r = Math.random() * 16 | 0; // tslint:disable-next-line:no-bitwise + + var v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } + /** + * Parses string form of URL into an object + * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B + * // intentionally using regex and not <a/> href parsing trick because React Native and other + * // environments where DOM might not be available + * @returns parsed URL object + */ + + function parseUrl(url) { + if (!url) { + return {}; } - }); - var stringify_2 = stringify_1.getSerialize; - var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - function isObject$1(what) { - return _typeof(what) === 'object' && what !== null; - } // Yanked from https://git.io/vS8DV re-used under CC0 - // with some tiny modifications + if (!match) { + return {}; + } // coerce to undefined values to empty string so we don't get 'undefined' - function isError(value) { - switch (Object.prototype.toString.call(value)) { - case '[object Error]': - return true; + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + host: match[4], + path: match[5], + protocol: match[2], + relative: match[5] + query + fragment + }; + } + /** + * Extracts either message or type+value from an event that can be used for user-facing logs + * @returns event's description + */ - case '[object Exception]': - return true; + function getEventDescription(event) { + if (event.message) { + return event.message; + } - case '[object DOMException]': - return true; + if (event.exception && event.exception.values && event.exception.values[0]) { + var exception = event.exception.values[0]; - default: - return value instanceof Error; + if (exception.type && exception.value) { + return exception.type + ": " + exception.value; + } + + return exception.type || exception.value || event.event_id || '<unknown>'; } - } - function isErrorEvent(value) { - return Object.prototype.toString.call(value) === '[object ErrorEvent]'; + return event.event_id || '<unknown>'; } + /** JSDoc */ - function isDOMError(value) { - return Object.prototype.toString.call(value) === '[object DOMError]'; - } + function consoleSandbox(callback) { + var global = getGlobalObject(); + var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert']; - function isDOMException(value) { - return Object.prototype.toString.call(value) === '[object DOMException]'; - } + if (!('console' in global)) { + return callback(); + } + + var originalConsole = global.console; + var wrappedLevels = {}; // Restore all wrapped console methods + + levels.forEach(function (level) { + if (level in global.console && originalConsole[level].__sentry_original__) { + wrappedLevels[level] = originalConsole[level]; + originalConsole[level] = originalConsole[level].__sentry_original__; + } + }); // Perform callback manipulations + + var result = callback(); // Revert restoration to wrapped state - function isUndefined(what) { - return what === void 0; + Object.keys(wrappedLevels).forEach(function (level) { + originalConsole[level] = wrappedLevels[level]; + }); + return result; } + /** + * Adds exception values, type and value to an synthetic Exception. + * @param event The event to modify. + * @param value Value of the exception. + * @param type Type of the exception. + * @hidden + */ - function isFunction(what) { - return typeof what === 'function'; + function addExceptionTypeValue(event, value, type) { + event.exception = event.exception || {}; + event.exception.values = event.exception.values || []; + event.exception.values[0] = event.exception.values[0] || {}; + event.exception.values[0].value = event.exception.values[0].value || value || ''; + event.exception.values[0].type = event.exception.values[0].type || type || 'Error'; } + /** + * Adds exception mechanism to a given event. + * @param event The event to modify. + * @param mechanism Mechanism of the mechanism. + * @hidden + */ + + function addExceptionMechanism(event, mechanism) { + if (mechanism === void 0) { + mechanism = {}; + } // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better? + - function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; + try { + // @ts-ignore + // tslint:disable:no-non-null-assertion + event.exception.values[0].mechanism = event.exception.values[0].mechanism || {}; + Object.keys(mechanism).forEach(function (key) { + // @ts-ignore + event.exception.values[0].mechanism[key] = mechanism[key]; + }); + } catch (_oO) {// no-empty + } } + /** + * A safe form of location.href + */ - function isString(what) { - return Object.prototype.toString.call(what) === '[object String]'; + function getLocationHref() { + try { + return document.location.href; + } catch (oO) { + return ''; + } } + /** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @returns generated DOM path + */ - function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; + function htmlTreeAsString(elem) { + // try/catch both: + // - accessing event.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // - can throw an exception in some circumstances. + try { + var currentElem = elem; + var MAX_TRAVERSE_HEIGHT = 5; + var MAX_OUTPUT_LEN = 80; + var out = []; + var height = 0; + var len = 0; + var separator = ' > '; + var sepLength = separator.length; + var nextStr = void 0; + + while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = _htmlElementAsString(currentElem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + currentElem = currentElem.parentNode; + } + + return out.reverse().join(separator); + } catch (_oO) { + return '<unknown>'; + } } + /** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @returns generated DOM path + */ + + function _htmlElementAsString(el) { + var elem = el; + var out = []; + var className; + var classes; + var key; + var attr; + var i; + + if (!elem || !elem.tagName) { + return ''; + } - function isEmptyObject(what) { - if (!isPlainObject(what)) return false; + out.push(elem.tagName.toLowerCase()); - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (elem.id) { + out.push("#" + elem.id); + } + + className = elem.className; + + if (className && isString(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push("." + classes[i]); } } - return true; - } + var attrWhitelist = ['type', 'name', 'title', 'alt']; - function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); - return true; - } catch (e) { - return false; + if (attr) { + out.push("[" + key + "=\"" + attr + "\"]"); + } } + + return out.join(''); } - function supportsDOMError() { - try { - new DOMError(''); // eslint-disable-line no-new + var INITIAL_TIME = Date.now(); + var prevNow = 0; + var performanceFallback = { + now: function now() { + var now = Date.now() - INITIAL_TIME; - return true; - } catch (e) { - return false; + if (now < prevNow) { + now = prevNow; + } + + prevNow = now; + return now; + }, + timeOrigin: INITIAL_TIME + }; + var crossPlatformPerformance = function () { + if (isNodeEnv()) { + try { + var perfHooks = dynamicRequire(module, 'perf_hooks'); + return perfHooks.performance; + } catch (_) { + return performanceFallback; + } + } + + if (getGlobalObject().performance) { + // Polyfill for performance.timeOrigin. + // + // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin + // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing. + // tslint:disable-next-line:strict-type-predicates + if (performance.timeOrigin === undefined) { + // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a + // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME. + // @ts-ignore + // tslint:disable-next-line:deprecation + performance.timeOrigin = performance.timing && performance.timing.navigationStart || INITIAL_TIME; + } } + + return getGlobalObject().performance || performanceFallback; + }(); + /** + * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock. + */ + + function timestampWithMs() { + return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000; + } // https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string + var defaultRetryAfter = 60 * 1000; // 60 seconds + + /** + * Extracts Retry-After value from the request header or returns default value + * @param now current unix timestamp + * @param header string representation of 'Retry-After' header + */ + + function parseRetryAfterHeader(now, header) { + if (!header) { + return defaultRetryAfter; + } + + var headerDelay = parseInt("" + header, 10); + + if (!isNaN(headerDelay)) { + return headerDelay * 1000; + } + + var headerDate = Date.parse("" + header); + + if (!isNaN(headerDate)) { + return headerDate - now; + } + + return defaultRetryAfter; } + var defaultFunctionName = '<anonymous>'; + /** + * Safely extract function name from itself + */ - function supportsDOMException() { + function getFunctionName(fn) { try { - new DOMException(''); // eslint-disable-line no-new + if (!fn || typeof fn !== 'function') { + return defaultFunctionName; + } - return true; + return fn.name || defaultFunctionName; } catch (e) { - return false; + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + return defaultFunctionName; } } - function supportsFetch() { - if (!('fetch' in _window)) return false; + var global$1 = getGlobalObject(); + /** Prefix for logging strings */ - try { - new Headers(); // eslint-disable-line no-new + var PREFIX = 'Sentry Logger '; + /** JSDoc */ - new Request(''); // eslint-disable-line no-new + var Logger = + /** @class */ + function () { + /** JSDoc */ + function Logger() { + this._enabled = false; + } + /** JSDoc */ - new Response(); // eslint-disable-line no-new - return true; - } catch (e) { - return false; + Logger.prototype.disable = function () { + this._enabled = false; + }; + /** JSDoc */ + + + Logger.prototype.enable = function () { + this._enabled = true; + }; + /** JSDoc */ + + + Logger.prototype.log = function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + if (!this._enabled) { + return; + } + + consoleSandbox(function () { + global$1.console.log(PREFIX + "[Log]: " + args.join(' ')); // tslint:disable-line:no-console + }); + }; + /** JSDoc */ + + + Logger.prototype.warn = function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + if (!this._enabled) { + return; + } + + consoleSandbox(function () { + global$1.console.warn(PREFIX + "[Warn]: " + args.join(' ')); // tslint:disable-line:no-console + }); + }; + /** JSDoc */ + + + Logger.prototype.error = function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + if (!this._enabled) { + return; + } + + consoleSandbox(function () { + global$1.console.error(PREFIX + "[Error]: " + args.join(' ')); // tslint:disable-line:no-console + }); + }; + + return Logger; + }(); // Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used + + + global$1.__SENTRY__ = global$1.__SENTRY__ || {}; + var logger = global$1.__SENTRY__.logger || (global$1.__SENTRY__.logger = new Logger()); + + var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('splice'); + var USES_TO_LENGTH$6 = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 }); + + var max$3 = Math.max; + var min$6 = Math.min; + var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF; + var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + + // `Array.prototype.splice` method + // https://tc39.github.io/ecma262/#sec-array.prototype.splice + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$6 }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = toLength(O.length); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min$6(max$3(toInteger(deleteCount), 0), len - actualStart); + } + if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) { + throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + } + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + O.length = len - actualDeleteCount + insertCount; + return A; } - } // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default - // https://caniuse.com/#feat=referrer-policy - // It doesn't. And it throw exception instead of ignoring this parameter... - // REF: https://github.com/getsentry/raven-js/issues/1233 + }); + + var freezing = !fails(function () { + return Object.isExtensible(Object.preventExtensions({})); + }); + var internalMetadata = createCommonjsModule(function (module) { + var defineProperty = objectDefineProperty.f; - function supportsReferrerPolicy() { - if (!supportsFetch()) return false; - try { + + var METADATA = uid('meta'); + var id = 0; + + var isExtensible = Object.isExtensible || function () { + return true; + }; + + var setMetadata = function (it) { + defineProperty(it, METADATA, { value: { + objectID: 'O' + ++id, // object ID + weakData: {} // weak collections IDs + } }); + }; + + var fastKey = function (it, create) { + // return a primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; + }; + + var getWeakData = function (it, create) { + if (!has(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; + }; + + // add metadata on freeze-family methods calling + var onFreeze = function (it) { + if (freezing && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); + return it; + }; + + var meta = module.exports = { + REQUIRED: false, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze + }; + + hiddenKeys[METADATA] = true; + }); + var internalMetadata_1 = internalMetadata.REQUIRED; + var internalMetadata_2 = internalMetadata.fastKey; + var internalMetadata_3 = internalMetadata.getWeakData; + var internalMetadata_4 = internalMetadata.onFreeze; + + var collection = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global_1[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var nativeMethod = NativePrototype[KEY]; + redefine(NativePrototype, KEY, + KEY == 'add' ? function add(value) { + nativeMethod.call(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : function set(key, value) { + nativeMethod.call(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + // eslint-disable-next-line max-len + if (isForced_1(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + })))) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + internalMetadata.REQUIRED = true; + } else if (isForced_1(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly // eslint-disable-next-line no-new - new Request('pickleRick', { - referrerPolicy: 'origin' + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); }); - return true; - } catch (e) { + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, Constructor, CONSTRUCTOR_NAME); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + _export({ global: true, forced: Constructor != NativeConstructor }, exported); + + setToStringTag(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; + }; + + var getWeakData = internalMetadata.getWeakData; + + + + + + + + + var setInternalState$8 = internalState.set; + var internalStateGetterFor = internalState.getterFor; + var find$1 = arrayIteration.find; + var findIndex = arrayIteration.findIndex; + var id$1 = 0; + + // fallback for uncaught frozen keys + var uncaughtFrozenStore = function (store) { + return store.frozen || (store.frozen = new UncaughtFrozenStore()); + }; + + var UncaughtFrozenStore = function () { + this.entries = []; + }; + + var findUncaughtFrozen = function (store, key) { + return find$1(store.entries, function (it) { + return it[0] === key; + }); + }; + + UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.entries.push([key, value]); + }, + 'delete': function (key) { + var index = findIndex(this.entries, function (it) { + return it[0] === key; + }); + if (~index) this.entries.splice(index, 1); + return !!~index; + } + }; + + var collectionWeak = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, CONSTRUCTOR_NAME); + setInternalState$8(that, { + type: CONSTRUCTOR_NAME, + id: id$1++, + frozen: undefined + }); + if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP); + }); + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var data = getWeakData(anObject(key), true); + if (data === true) uncaughtFrozenStore(state).set(key, value); + else data[state.id] = value; + return that; + }; + + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + var state = getInternalState(this); + if (!isObject(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state)['delete'](key); + return data && has(data, state.id) && delete data[state.id]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has$1(key) { + var state = getInternalState(this); + if (!isObject(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).has(key); + return data && has(data, state.id); + } + }); + + redefineAll(C.prototype, IS_MAP ? { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + var state = getInternalState(this); + if (isObject(key)) { + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).get(key); + return data ? data[state.id] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return define(this, key, value); + } + } : { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value) { + return define(this, value, true); + } + }); + + return C; + } + }; + + // `WeakSet` constructor + // https://tc39.github.io/ecma262/#sec-weakset-constructor + collection('WeakSet', function (init) { + return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionWeak); + + // tslint:disable:no-unsafe-any + + /** + * Memo class used for decycle json objects. Uses WeakSet if available otherwise array. + */ + var Memo = + /** @class */ + function () { + function Memo() { + // tslint:disable-next-line + this._hasWeakSet = typeof WeakSet === 'function'; + this._inner = this._hasWeakSet ? new WeakSet() : []; + } + /** + * Sets obj to remember. + * @param obj Object to remember + */ + + + Memo.prototype.memoize = function (obj) { + if (this._hasWeakSet) { + if (this._inner.has(obj)) { + return true; + } + + this._inner.add(obj); + + return false; + } // tslint:disable-next-line:prefer-for-of + + + for (var i = 0; i < this._inner.length; i++) { + var value = this._inner[i]; + + if (value === obj) { + return true; + } + } + + this._inner.push(obj); + return false; + }; + /** + * Removes object from internal storage. + * @param obj Object to forget + */ + + + Memo.prototype.unmemoize = function (obj) { + if (this._hasWeakSet) { + this._inner.delete(obj); + } else { + for (var i = 0; i < this._inner.length; i++) { + if (this._inner[i] === obj) { + this._inner.splice(i, 1); + + break; + } + } + } + }; + + return Memo; + }(); + + // `URL.prototype.toJSON` method + // https://url.spec.whatwg.org/#dom-url-tojson + _export({ target: 'URL', proto: true, enumerable: true }, { + toJSON: function toJSON() { + return URL.prototype.toString.call(this); } + }); + + /** + * Wrap a given object method with a higher-order function + * + * @param source An object that contains a method to be wrapped. + * @param name A name of method to be wrapped. + * @param replacement A function that should be used to wrap a given method. + * @returns void + */ + + function fill(source, name, replacement) { + if (!(name in source)) { + return; + } + + var original = source[name]; + var wrapped = replacement(original); // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work + // otherwise it'll throw "TypeError: Object.defineProperties called on non-object" + // tslint:disable-next-line:strict-type-predicates + + if (typeof wrapped === 'function') { + try { + wrapped.prototype = wrapped.prototype || {}; + Object.defineProperties(wrapped, { + __sentry_original__: { + enumerable: false, + value: original + } + }); + } catch (_Oo) {// This can throw if multiple fill happens on a global object like XMLHttpRequest + // Fixes https://github.com/getsentry/sentry-javascript/issues/2043 + } + } + + source[name] = wrapped; } + /** + * Encodes given object into url-friendly format + * + * @param object An object that contains serializable values + * @returns string Encoded + */ - function supportsPromiseRejectionEvent() { - return typeof PromiseRejectionEvent === 'function'; + function urlEncode(object) { + return Object.keys(object).map( // tslint:disable-next-line:no-unsafe-any + function (key) { + return encodeURIComponent(key) + "=" + encodeURIComponent(object[key]); + }).join('&'); } + /** + * Transforms any object into an object literal with all it's attributes + * attached to it. + * + * @param value Initial source that we have to transform in order to be usable by the serializer + */ - function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; + function getWalkSource(value) { + if (isError(value)) { + var error = value; + var err = { + message: error.message, + name: error.name, + stack: error.stack + }; - if (original) { - return original(normalizedData) || normalizedData; + for (var i in error) { + if (Object.prototype.hasOwnProperty.call(error, i)) { + err[i] = error[i]; + } } - return normalizedData; + return err; } - return dataCallback; - } + if (isEvent(value)) { + var event_1 = value; + var source = {}; + source.type = event_1.type; // Accessing event.target can throw (see getsentry/raven-js#838, #768) - function each(obj, callback) { - var i, j; + try { + source.target = isElement(event_1.target) ? htmlTreeAsString(event_1.target) : Object.prototype.toString.call(event_1.target); + } catch (_oO) { + source.target = '<unknown>'; + } - if (isUndefined(obj.length)) { - for (i in obj) { - if (hasKey(obj, i)) { - callback.call(null, i, obj[i]); - } + try { + source.currentTarget = isElement(event_1.currentTarget) ? htmlTreeAsString(event_1.currentTarget) : Object.prototype.toString.call(event_1.currentTarget); + } catch (_oO) { + source.currentTarget = '<unknown>'; + } // tslint:disable-next-line:strict-type-predicates + + + if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) { + source.detail = event_1.detail; } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); + for (var i in event_1) { + if (Object.prototype.hasOwnProperty.call(event_1, i)) { + source[i] = event_1; } } + + return source; } + + return value; } + /** Calculates bytes size of input string */ - function objectMerge(obj1, obj2) { - if (!obj2) { - return obj1; - } - each(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; + function utf8Length(value) { + // tslint:disable-next-line:no-bitwise + return ~-encodeURI(value).split(/%..|./).length; } - /** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ + /** Calculates bytes size of input object */ - function objectFrozen(obj) { - if (!Object.isFrozen) { - return false; + function jsonSize(value) { + return utf8Length(JSON.stringify(value)); + } + /** JSDoc */ + + + function normalizeToSize(object, // Default Node.js REPL depth + depth, // 100kB, as 200kB is max payload size, so half sounds reasonable + maxSize) { + if (depth === void 0) { + depth = 3; + } + + if (maxSize === void 0) { + maxSize = 100 * 1024; } - return Object.isFrozen(obj); + var serialized = normalize$1(object, depth); + + if (jsonSize(serialized) > maxSize) { + return normalizeToSize(object, depth - 1, maxSize); + } + + return serialized; } + /** Transforms any input value into a string form, either primitive value or a type of the input */ - function truncate(str, max) { - if (typeof max !== 'number') { - throw new Error('2nd argument to `truncate` function should be a number'); + function serializeValue(value) { + var type = Object.prototype.toString.call(value); // Node.js REPL notation + + if (typeof value === 'string') { + return value; } - if (typeof str !== 'string' || max === 0) { - return str; + if (type === '[object Object]') { + return '[Object]'; + } + + if (type === '[object Array]') { + return '[Array]'; } - return str.length <= max ? str : str.substr(0, max) + "\u2026"; + var normalized = normalizeValue(value); + return isPrimitive(normalized) ? normalized : type; } /** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false + * normalizeValue() * - * @param {Object} host object to check property - * @param {string} key to check + * Takes unserializable input and make it serializable friendly + * + * - translates undefined/NaN values to "[undefined]"/"[NaN]" respectively, + * - serializes Error objects + * - filter global objects */ + // tslint:disable-next-line:cyclomatic-complexity - function hasKey(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); - } + function normalizeValue(value, key) { + if (key === 'domain' && value && _typeof(value) === 'object' && value._events) { + return '[Domain]'; + } + + if (key === 'domainEmitter') { + return '[DomainEmitter]'; + } + + if (typeof global !== 'undefined' && value === global) { + return '[Global]'; + } + + if (typeof window !== 'undefined' && value === window) { + return '[Window]'; + } + + if (typeof document !== 'undefined' && value === document) { + return '[Document]'; + } // React's SyntheticEvent thingy - function joinRegExp(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - for (; i < len; i++) { - pattern = patterns[i]; + if (isSyntheticEvent(value)) { + return '[SyntheticEvent]'; + } // tslint:disable-next-line:no-tautology-expression - if (isString(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases + if (typeof value === 'number' && value !== value) { + return '[NaN]'; } - return new RegExp(sources.join('|'), 'i'); + if (value === void 0) { + return '[undefined]'; + } + + if (typeof value === 'function') { + return "[Function: " + getFunctionName(value) + "]"; + } + + return value; } + /** + * Walks an object to perform a normalization on it + * + * @param key of object that's walked in current iteration + * @param value object to be walked + * @param depth Optional number indicating how deep should walking be performed + * @param memo Optional Memo class handling decycling + */ - function urlencode(o) { - var pairs = []; - each(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); - } // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B - // intentionally using regex and not <a/> href parsing trick because React Native and other - // environments where DOM might not be available + function walk(key, value, depth, memo) { + if (depth === void 0) { + depth = +Infinity; + } - function parseUrl(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + if (memo === void 0) { + memo = new Memo(); + } // If we reach the maximum depth, serialize whatever has left - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - }; - } + if (depth === 0) { + return serializeValue(value); + } // If value implements `toJSON` method, call it and return early + // tslint:disable:no-unsafe-any - function uuid4() { - var crypto = _window.crypto || _window.msCrypto; - if (!isUndefined(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + if (value !== null && value !== undefined && typeof value.toJSON === 'function') { + return value.toJSON(); + } // tslint:enable:no-unsafe-any + // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - arr[4] = arr[4] & 0x3fff | 0x8000; + var normalized = normalizeValue(value, key); - var pad = function pad(num) { - var v = num.toString(16); + if (isPrimitive(normalized)) { + return normalized; + } // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself - while (v.length < 4) { - v = '0' + v; - } - return v; - }; + var source = getWalkSource(value); // Create an accumulator that will act as a parent for all future itterations of that branch - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + var acc = Array.isArray(value) ? [] : {}; // If we already walked that branch, bail out, as it's circular reference + + if (memo.memoize(value)) { + return '[Circular ~]'; + } // Walk all keys of the source + + + for (var innerKey in source) { + // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration. + if (!Object.prototype.hasOwnProperty.call(source, innerKey)) { + continue; + } // Recursively walk through all the child nodes + + + acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo); + } // Once walked through all the branches, remove the parent from memo storage + + + memo.unmemoize(value); // Return accumulated values + + return acc; + } + /** + * normalize() + * + * - Creates a copy to prevent original input mutation + * - Skip non-enumerablers + * - Calls `toJSON` if implemented + * - Removes circular references + * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format + * - Translates known global objects/Classes to a string representations + * - Takes care of Error objects serialization + * - Optionally limit depth of final output + */ + + function normalize$1(input, depth) { + try { + // tslint:disable-next-line:no-unsafe-any + return JSON.parse(JSON.stringify(input, function (key, value) { + return walk(key, value, depth); + })); + } catch (_oO) { + return '**non-serializable**'; } } /** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} + * Given any captured exception, extract its keys and create a sorted + * and truncated list that will be used inside the event message. + * eg. `Non-error exception captured with keys: foo, bar, baz` */ + function extractExceptionKeysForMessage(exception, maxLength) { + if (maxLength === void 0) { + maxLength = 40; + } // tslint:disable:strict-type-predicates - function htmlTreeAsString(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) - - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + + var keys = Object.keys(getWalkSource(exception)); + keys.sort(); + + if (!keys.length) { + return '[object has no keys]'; + } + + if (keys[0].length >= maxLength) { + return truncate(keys[0], maxLength); + } + + for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) { + var serialized = keys.slice(0, includedKeys).join(', '); + + if (serialized.length > maxLength) { + continue; + } + + if (includedKeys === keys.length) { + return serialized; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; + return truncate(serialized, maxLength); + } + + return ''; + } + + var $filter$1 = arrayIteration.filter; + + + + var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport('filter'); + // Edge 14- issue + var USES_TO_LENGTH$7 = arrayMethodUsesToLength('filter'); + + // `Array.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-array.prototype.filter + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$7 }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 + var NON_GENERIC = !!nativePromiseConstructor && fails(function () { + nativePromiseConstructor.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); + }); + + // `Promise.prototype.finally` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.finally + _export({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); } + }); - return out.reverse().join(separator); + // patch native Promise.prototype for native async functions + if ( typeof nativePromiseConstructor == 'function' && !nativePromiseConstructor.prototype['finally']) { + redefine(nativePromiseConstructor.prototype, 'finally', getBuiltIn('Promise').prototype['finally']); } + + /** SyncPromise internal states */ + + var States; + + (function (States) { + /** Pending */ + States["PENDING"] = "PENDING"; + /** Resolved / OK */ + + States["RESOLVED"] = "RESOLVED"; + /** Rejected / Error */ + + States["REJECTED"] = "REJECTED"; + })(States || (States = {})); /** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} + * Thenable class that behaves like a Promise and follows it's interface + * but is not async internally */ - function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var SyncPromise = + /** @class */ + function () { + function SyncPromise(executor) { + var _this = this; + + this._state = States.PENDING; + this._handlers = []; + /** JSDoc */ - if (!elem || !elem.tagName) { - return ''; + this._resolve = function (value) { + _this._setResult(States.RESOLVED, value); + }; + /** JSDoc */ + + + this._reject = function (reason) { + _this._setResult(States.REJECTED, reason); + }; + /** JSDoc */ + + + this._setResult = function (state, value) { + if (_this._state !== States.PENDING) { + return; + } + + if (isThenable$1(value)) { + value.then(_this._resolve, _this._reject); + return; + } + + _this._state = state; + _this._value = value; + + _this._executeHandlers(); + }; // TODO: FIXME + + /** JSDoc */ + + + this._attachHandler = function (handler) { + _this._handlers = _this._handlers.concat(handler); + + _this._executeHandlers(); + }; + /** JSDoc */ + + + this._executeHandlers = function () { + if (_this._state === States.PENDING) { + return; + } + + var cachedHandlers = _this._handlers.slice(); + + _this._handlers = []; + cachedHandlers.forEach(function (handler) { + if (handler.done) { + return; + } + + if (_this._state === States.RESOLVED) { + if (handler.onfulfilled) { + handler.onfulfilled(_this._value); + } + } + + if (_this._state === States.REJECTED) { + if (handler.onrejected) { + handler.onrejected(_this._value); + } + } + + handler.done = true; + }); + }; + + try { + executor(this._resolve, this._reject); + } catch (e) { + this._reject(e); + } } + /** JSDoc */ - out.push(elem.tagName.toLowerCase()); - if (elem.id) { - out.push('#' + elem.id); + SyncPromise.prototype.toString = function () { + return '[object SyncPromise]'; + }; + /** JSDoc */ + + + SyncPromise.resolve = function (value) { + return new SyncPromise(function (resolve) { + resolve(value); + }); + }; + /** JSDoc */ + + + SyncPromise.reject = function (reason) { + return new SyncPromise(function (_, reject) { + reject(reason); + }); + }; + /** JSDoc */ + + + SyncPromise.all = function (collection) { + return new SyncPromise(function (resolve, reject) { + if (!Array.isArray(collection)) { + reject(new TypeError("Promise.all requires an array as input.")); + return; + } + + if (collection.length === 0) { + resolve([]); + return; + } + + var counter = collection.length; + var resolvedCollection = []; + collection.forEach(function (item, index) { + SyncPromise.resolve(item).then(function (value) { + resolvedCollection[index] = value; + counter -= 1; + + if (counter !== 0) { + return; + } + + resolve(resolvedCollection); + }).then(null, reject); + }); + }); + }; + /** JSDoc */ + + + SyncPromise.prototype.then = function (_onfulfilled, _onrejected) { + var _this = this; + + return new SyncPromise(function (resolve, reject) { + _this._attachHandler({ + done: false, + onfulfilled: function onfulfilled(result) { + if (!_onfulfilled) { + // TODO: ¯\_(ツ)_/¯ + // TODO: FIXME + resolve(result); + return; + } + + try { + resolve(_onfulfilled(result)); + return; + } catch (e) { + reject(e); + return; + } + }, + onrejected: function onrejected(reason) { + if (!_onrejected) { + reject(reason); + return; + } + + try { + resolve(_onrejected(reason)); + return; + } catch (e) { + reject(e); + return; + } + } + }); + }); + }; + /** JSDoc */ + + + SyncPromise.prototype.catch = function (onrejected) { + return this.then(function (val) { + return val; + }, onrejected); + }; + /** JSDoc */ + + + SyncPromise.prototype.finally = function (onfinally) { + var _this = this; + + return new SyncPromise(function (resolve, reject) { + var val; + var isRejected; + return _this.then(function (value) { + isRejected = false; + val = value; + + if (onfinally) { + onfinally(); + } + }, function (reason) { + isRejected = true; + val = reason; + + if (onfinally) { + onfinally(); + } + }).then(function () { + if (isRejected) { + reject(val); + return; + } + + resolve(val); + }); + }); + }; + + return SyncPromise; + }(); + + /** A simple queue that holds promises. */ + + var PromiseBuffer = + /** @class */ + function () { + function PromiseBuffer(_limit) { + this._limit = _limit; + /** Internal set of queued Promises */ + + this._buffer = []; } + /** + * Says if the buffer is ready to take more requests + */ - className = elem.className; - if (className && isString(className)) { - classes = className.split(/\s+/); + PromiseBuffer.prototype.isReady = function () { + return this._limit === undefined || this.length() < this._limit; + }; + /** + * Add a promise to the queue. + * + * @param task Can be any PromiseLike<T> + * @returns The original promise. + */ - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + + PromiseBuffer.prototype.add = function (task) { + var _this = this; + + if (!this.isReady()) { + return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.')); + } + + if (this._buffer.indexOf(task) === -1) { + this._buffer.push(task); } + + task.then(function () { + return _this.remove(task); + }).then(null, function () { + return _this.remove(task).then(null, function () {// We have to add this catch here otherwise we have an unhandledPromiseRejection + // because it's a new Promise chain. + }); + }); + return task; + }; + /** + * Remove a promise to the queue. + * + * @param task Can be any PromiseLike<T> + * @returns Removed promise. + */ + + + PromiseBuffer.prototype.remove = function (task) { + var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0]; + + return removedTask; + }; + /** + * This function returns the number of unresolved promises in the queue. + */ + + + PromiseBuffer.prototype.length = function () { + return this._buffer.length; + }; + /** + * This will drain the whole queue, returns true if queue is empty or drained. + * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false. + * + * @param timeout Number in ms to wait until it resolves with false. + */ + + + PromiseBuffer.prototype.drain = function (timeout) { + var _this = this; + + return new SyncPromise(function (resolve) { + var capturedSetTimeout = setTimeout(function () { + if (timeout && timeout > 0) { + resolve(false); + } + }, timeout); + SyncPromise.all(_this._buffer).then(function () { + clearTimeout(capturedSetTimeout); + resolve(true); + }).then(null, function () { + resolve(true); + }); + }); + }; + + return PromiseBuffer; + }(); + + /** + * Tells whether current environment supports Fetch API + * {@link supportsFetch}. + * + * @returns Answer to the given question. + */ + + function supportsFetch() { + if (!('fetch' in getGlobalObject())) { + return false; } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + try { + // tslint:disable-next-line:no-unused-expression + new Headers(); // tslint:disable-next-line:no-unused-expression - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + new Request(''); // tslint:disable-next-line:no-unused-expression - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } + new Response(); + return true; + } catch (e) { + return false; } + } + /** + * isNativeFetch checks if the given function is a native implementation of fetch() + */ - return out.join(''); + function isNativeFetch(func) { + return func && /^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString()); } /** - * Returns true if either a OR b is truthy, but not both + * Tells whether current environment supports Fetch API natively + * {@link supportsNativeFetch}. + * + * @returns true if `window.fetch` is natively implemented, false otherwise */ - function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); + function supportsNativeFetch() { + if (!supportsFetch()) { + return false; + } + + var global = getGlobalObject(); // Fast path to avoid DOM I/O + // tslint:disable-next-line:no-unbound-method + + if (isNativeFetch(global.fetch)) { + return true; + } // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension) + // so create a "pure" iframe to see if that has native fetch + + + var result = false; + var doc = global.document; // tslint:disable-next-line:no-unbound-method deprecation + + if (doc && typeof doc.createElement === "function") { + try { + var sandbox = doc.createElement('iframe'); + sandbox.hidden = true; + doc.head.appendChild(sandbox); + + if (sandbox.contentWindow && sandbox.contentWindow.fetch) { + // tslint:disable-next-line:no-unbound-method + result = isNativeFetch(sandbox.contentWindow.fetch); + } + + doc.head.removeChild(sandbox); + } catch (err) { + logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err); + } + } + + return result; } /** - * Returns true if both parameters are undefined + * Tells whether current environment supports Referrer Policy API + * {@link supportsReferrerPolicy}. + * + * @returns Answer to the given question. */ + function supportsReferrerPolicy() { + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + if (!supportsFetch()) { + return false; + } - function isBothUndefined(a, b) { - return isUndefined(a) && isUndefined(b); + try { + // tslint:disable:no-unused-expression + new Request('_', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } } /** - * Returns true if the two input exception interfaces have the same content + * Tells whether current environment supports History API + * {@link supportsHistory}. + * + * @returns Answer to the given question. */ + function supportsHistory() { + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var global = getGlobalObject(); + var chrome = global.chrome; // tslint:disable-next-line:no-unsafe-any - function isSameException(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState; + return !isChromePackagedApp && hasHistoryApi; } + + var global$2 = getGlobalObject(); /** - * Returns true if the two input stack trace interfaces have the same content + * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc. + * - Console API + * - Fetch API + * - XHR API + * - History API + * - DOM API (click/typing) + * - Error API + * - UnhandledRejection API */ + var handlers = {}; + var instrumented = {}; + /** Instruments given API */ - function isSameStacktrace(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if stacktrace is malformed + function instrument(type) { + if (instrumented[type]) { + return; + } - if (frames1 === undefined || frames2 === undefined) return false; // Exit early if frame count differs + instrumented[type] = true; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + switch (type) { + case 'console': + instrumentConsole(); + break; - var a, b; + case 'dom': + instrumentDOM(); + break; - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + case 'xhr': + instrumentXHR(); + break; - return true; - } - /** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + case 'fetch': + instrumentFetch(); + break; + + case 'history': + instrumentHistory(); + break; + case 'error': + instrumentError(); + break; - function fill(obj, name, replacement, track) { - if (obj == null) return; - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + case 'unhandledrejection': + instrumentUnhandledRejection(); + break; - if (track) { - track.push([obj, name, orig]); + default: + logger.warn('unknown instrumentation type:', type); } } /** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} + * Add handler that will be called when given type of instrumentation triggers. + * Use at your own risk, this might break without changelog notice, only used internally. + * @hidden */ - function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + function addInstrumentationHandler(handler) { + // tslint:disable-next-line:strict-type-predicates + if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') { + return; + } - for (var i = 0; i < input.length; i++) { + handlers[handler.type] = handlers[handler.type] || []; + handlers[handler.type].push(handler.callback); + instrument(handler.type); + } + /** JSDoc */ + + function triggerHandlers(type, data) { + var e_1, _a; + + if (!type || !handlers[type]) { + return; + } + + try { + for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) { + var handler = _c.value; + + try { + handler(data); + } catch (e) { + logger.error("Error while triggering instrumentation handler.\nType: " + type + "\nName: " + getFunctionName(handler) + "\nError: " + e); + } + } + } catch (e_1_1) { + e_1 = { + error: e_1_1 + }; + } finally { try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } finally { + if (e_1) throw e_1.error; } } + } + /** JSDoc */ - return output.join(delimiter); - } // Default Node.js REPL depth + function instrumentConsole() { + if (!('console' in global$2)) { + return; + } - var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; // 50kB, as 100kB is max payload size, so half sounds reasonable + ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) { + if (!(level in global$2.console)) { + return; + } - var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; - var MAX_SERIALIZE_KEYS_LENGTH = 40; + fill(global$2.console, level, function (originalConsoleLevel) { + return function () { + var args = []; - function utf8Length(value) { - return ~-encodeURI(value).split(/%..|./).length; - } + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } - function jsonSize(value) { - return utf8Length(JSON.stringify(value)); + triggerHandlers('console', { + args: args, + level: level + }); // this fails for some browsers. :( + + if (originalConsoleLevel) { + Function.prototype.apply.call(originalConsoleLevel, global$2.console, args); + } + }; + }); + }); } + /** JSDoc */ - function serializeValue(value) { - if (typeof value === 'string') { - var maxLength = 40; - return truncate(value, maxLength); - } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'undefined') { - return value; + + function instrumentFetch() { + if (!supportsNativeFetch()) { + return; } - var type = Object.prototype.toString.call(value); // Node.js REPL notation + fill(global$2, 'fetch', function (originalFetch) { + return function () { + var args = []; - if (type === '[object Object]') return '[Object]'; - if (type === '[object Array]') return '[Array]'; - if (type === '[object Function]') return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - return value; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + var commonHandlerData = { + args: args, + fetchData: { + method: getFetchMethod(args), + url: getFetchUrl(args) + }, + startTimestamp: Date.now() + }; + triggerHandlers('fetch', _assign({}, commonHandlerData)); + return originalFetch.apply(global$2, args).then(function (response) { + triggerHandlers('fetch', _assign({}, commonHandlerData, { + endTimestamp: Date.now(), + response: response + })); + return response; + }, function (error) { + triggerHandlers('fetch', _assign({}, commonHandlerData, { + endTimestamp: Date.now(), + error: error + })); + throw error; + }); + }; + }); } + /** Extract `method` from fetch call arguments */ - function serializeObject(value, depth) { - if (depth === 0) return serializeValue(value); - - if (isPlainObject(value)) { - return Object.keys(value).reduce(function (acc, key) { - acc[key] = serializeObject(value[key], depth - 1); - return acc; - }, {}); - } else if (Array.isArray(value)) { - return value.map(function (val) { - return serializeObject(val, depth - 1); - }); + + function getFetchMethod(fetchArgs) { + if (fetchArgs === void 0) { + fetchArgs = []; + } + + if ('Request' in global$2 && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) { + return String(fetchArgs[0].method).toUpperCase(); + } + + if (fetchArgs[1] && fetchArgs[1].method) { + return String(fetchArgs[1].method).toUpperCase(); } - return serializeValue(value); + return 'GET'; } + /** Extract `url` from fetch call arguments */ - function serializeException(ex, depth, maxSize) { - if (!isPlainObject(ex)) return ex; - depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; - maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - var serialized = serializeObject(ex, depth); - if (jsonSize(stringify_1(serialized)) > maxSize) { - return serializeException(ex, depth - 1); + function getFetchUrl(fetchArgs) { + if (fetchArgs === void 0) { + fetchArgs = []; } - return serialized; + if (typeof fetchArgs[0] === 'string') { + return fetchArgs[0]; + } + + if ('Request' in global$2 && isInstanceOf(fetchArgs[0], Request)) { + return fetchArgs[0].url; + } + + return String(fetchArgs[0]); } + /** JSDoc */ - function serializeKeysForMessage(keys, maxLength) { - if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); - if (!Array.isArray(keys)) return ''; - keys = keys.filter(function (key) { - return typeof key === 'string'; - }); - if (keys.length === 0) return '[object has no keys]'; - maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; - if (keys[0].length >= maxLength) return keys[0]; - for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { - var serialized = keys.slice(0, usedKeys).join(', '); - if (serialized.length > maxLength) continue; - if (usedKeys === keys.length) return serialized; - return serialized + "\u2026"; + function instrumentXHR() { + if (!('XMLHttpRequest' in global$2)) { + return; } - return ''; + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (originalOpen) { + return function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + var url = args[1]; + this.__sentry_xhr__ = { + method: isString(args[0]) ? args[0].toUpperCase() : args[0], + url: args[1] + }; // if Sentry key appears in URL, don't capture it as a request + + if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) { + this.__sentry_own_request__ = true; + } + + return originalOpen.apply(this, args); + }; + }); + fill(xhrproto, 'send', function (originalSend) { + return function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + var xhr = this; // tslint:disable-line:no-this-assignment + + var commonHandlerData = { + args: args, + startTimestamp: Date.now(), + xhr: xhr + }; + triggerHandlers('xhr', _assign({}, commonHandlerData)); + xhr.addEventListener('readystatechange', function () { + if (xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + if (xhr.__sentry_xhr__) { + xhr.__sentry_xhr__.status_code = xhr.status; + } + } catch (e) { + /* do nothing */ + } + + triggerHandlers('xhr', _assign({}, commonHandlerData, { + endTimestamp: Date.now() + })); + } + }); + return originalSend.apply(this, args); + }; + }); } - function sanitize(input, sanitizeKeys) { - if (!isArray$1(sanitizeKeys) || isArray$1(sanitizeKeys) && sanitizeKeys.length === 0) return input; - var sanitizeRegExp = joinRegExp(sanitizeKeys); - var sanitizeMask = '********'; - var safeInput; + var lastHref; + /** JSDoc */ - try { - safeInput = JSON.parse(stringify_1(input)); - } catch (o_O) { - return input; + function instrumentHistory() { + if (!supportsHistory()) { + return; } - function sanitizeWorker(workerInput) { - if (isArray$1(workerInput)) { - return workerInput.map(function (val) { - return sanitizeWorker(val); - }); + var oldOnPopState = global$2.onpopstate; + + global$2.onpopstate = function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; } - if (isPlainObject(workerInput)) { - return Object.keys(workerInput).reduce(function (acc, k) { - if (sanitizeRegExp.test(k)) { - acc[k] = sanitizeMask; - } else { - acc[k] = sanitizeWorker(workerInput[k]); - } + var to = global$2.location.href; // keep track of the current URL state, as we always receive only the updated state + + var from = lastHref; + lastHref = to; + triggerHandlers('history', { + from: from, + to: to + }); - return acc; - }, {}); + if (oldOnPopState) { + return oldOnPopState.apply(this, args); } + }; + /** @hidden */ + + + function historyReplacementFunction(originalHistoryFunction) { + return function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } - return workerInput; + var url = args.length > 2 ? args[2] : undefined; + + if (url) { + // coerce to string (this is what pushState does) + var from = lastHref; + var to = String(url); // keep track of the current URL state, as we always receive only the updated state + + lastHref = to; + triggerHandlers('history', { + from: from, + to: to + }); + } + + return originalHistoryFunction.apply(this, args); + }; } - return sanitizeWorker(safeInput); + fill(global$2.history, 'pushState', historyReplacementFunction); + fill(global$2.history, 'replaceState', historyReplacementFunction); } + /** JSDoc */ - var utils = { - isObject: isObject$1, - isError: isError, - isErrorEvent: isErrorEvent, - isDOMError: isDOMError, - isDOMException: isDOMException, - isUndefined: isUndefined, - isFunction: isFunction, - isPlainObject: isPlainObject, - isString: isString, - isArray: isArray$1, - isEmptyObject: isEmptyObject, - supportsErrorEvent: supportsErrorEvent, - supportsDOMError: supportsDOMError, - supportsDOMException: supportsDOMException, - supportsFetch: supportsFetch, - supportsReferrerPolicy: supportsReferrerPolicy, - supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, - wrappedCallback: wrappedCallback, - each: each, - objectMerge: objectMerge, - truncate: truncate, - objectFrozen: objectFrozen, - hasKey: hasKey, - joinRegExp: joinRegExp, - urlencode: urlencode, - uuid4: uuid4, - htmlTreeAsString: htmlTreeAsString, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException, - isSameStacktrace: isSameStacktrace, - parseUrl: parseUrl, - fill: fill, - safeJoin: safeJoin, - serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage, - sanitize: sanitize - }; - /* - TraceKit - Cross brower stack traces + function instrumentDOM() { + if (!('document' in global$2)) { + return; + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. - MIT license - */ + global$2.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false); + global$2.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false); // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses. - var TraceKit = { - collectWindowErrors: true, - debug: false - }; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + ['EventTarget', 'Node'].forEach(function (target) { + var proto = global$2[target] && global$2[target].prototype; - var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) { + return; + } + + fill(proto, 'addEventListener', function (original) { + return function (eventName, fn, options) { + if (fn && fn.handleEvent) { + if (eventName === 'click') { + fill(fn, 'handleEvent', function (innerOriginal) { + return function (event) { + domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event); + return innerOriginal.call(this, event); + }; + }); + } + + if (eventName === 'keypress') { + fill(fn, 'handleEvent', function (innerOriginal) { + return function (event) { + keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event); + return innerOriginal.call(this, event); + }; + }); + } + } else { + if (eventName === 'click') { + domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this); + } + if (eventName === 'keypress') { + keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this); + } + } - var _slice = [].slice; - var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + return original.call(this, eventName, fn, options); + }; + }); + fill(proto, 'removeEventListener', function (original) { + return function (eventName, fn, options) { + var callback = fn; - var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + try { + callback = callback && (callback.__sentry_wrapped__ || callback); + } catch (e) {// ignore, accessing __sentry_wrapped__ will throw in some Selenium environments + } - function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; + return original.call(this, eventName, callback, options); + }; + }); + }); } - function getLocationOrigin() { - if (typeof document === 'undefined' || document.location == null) return ''; // Oh dear IE10... + var debounceDuration = 1000; + var debounceTimer = 0; + var keypressTimeout; + var lastCapturedEvent; + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param name the event name (e.g. "click") + * @param handler function that will be triggered + * @param debounce decides whether it should wait till another event loop + * @returns wrapped breadcrumb events handler + * @hidden + */ - if (!document.location.origin) { - return document.location.protocol + '//' + document.location.hostname + (document.location.port ? ':' + document.location.port : ''); + function domEventHandler(name, handler, debounce) { + if (debounce === void 0) { + debounce = false; } - return document.location.origin; + return function (event) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + keypressTimeout = undefined; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (!event || lastCapturedEvent === event) { + return; + } + + lastCapturedEvent = event; + + if (debounceTimer) { + clearTimeout(debounceTimer); + } + + if (debounce) { + debounceTimer = setTimeout(function () { + handler({ + event: event, + name: name + }); + }); + } else { + handler({ + event: event, + name: name + }); + } + }; } /** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. + * Wraps addEventListener to capture keypress UI events + * @param handler function that will be triggered + * @returns wrapped keypress events handler + * @hidden */ - TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + function keypressEventHandler(handler) { + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function (event) { + var target; + + try { + target = event.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) { + return; + } // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + + if (!keypressTimeout) { + domEventHandler('input', handler)(event); + } + + clearTimeout(keypressTimeout); + keypressTimeout = setTimeout(function () { + keypressTimeout = undefined; + }, debounceDuration); + }; + } + + var _oldOnErrorHandler = null; + /** JSDoc */ - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); + function instrumentError() { + _oldOnErrorHandler = global$2.onerror; + + global$2.onerror = function (msg, url, line, column, error) { + triggerHandlers('error', { + column: column, + error: error, + line: line, + msg: msg, + url: url + }); + + if (_oldOnErrorHandler) { + return _oldOnErrorHandler.apply(this, arguments); + } + + return false; + }; + } + + var _oldOnUnhandledRejectionHandler = null; + /** JSDoc */ + + function instrumentUnhandledRejection() { + _oldOnUnhandledRejectionHandler = global$2.onunhandledrejection; + + global$2.onunhandledrejection = function (e) { + triggerHandlers('unhandledrejection', e); + + if (_oldOnUnhandledRejectionHandler) { + return _oldOnUnhandledRejectionHandler.apply(this, arguments); + } + + return true; + }; + } + + /** Regular expression used to parse a Dsn. */ + + var DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w\.-]+)(?::(\d+))?\/(.+)/; + /** Error message */ + + var ERROR_MESSAGE = 'Invalid Dsn'; + /** The Sentry Dsn, identifying a Sentry instance and project. */ + + var Dsn = + /** @class */ + function () { + /** Creates a new Dsn component */ + function Dsn(from) { + if (typeof from === 'string') { + this._fromString(from); + } else { + this._fromComponents(from); + } + + this._validate(); } /** - * Remove a crash handler. - * @param {Function} handler + * Renders the string representation of this Dsn. + * + * By default, this will render the public representation without the password + * component. To get the deprecated private representation, set `withPassword` + * to true. + * + * @param withPassword When set to true, the password will be included. */ - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + Dsn.prototype.toString = function (withPassword) { + if (withPassword === void 0) { + withPassword = false; + } // tslint:disable-next-line:no-this-assignment + + + var _a = this, + host = _a.host, + path = _a.path, + pass = _a.pass, + port = _a.port, + projectId = _a.projectId, + protocol = _a.protocol, + user = _a.user; + + return protocol + "://" + user + (withPassword && pass ? ":" + pass : '') + ("@" + host + (port ? ":" + port : '') + "/" + (path ? path + "/" : path) + projectId); + }; + /** Parses a string into this Dsn. */ + + + Dsn.prototype._fromString = function (str) { + var match = DSN_REGEX.exec(str); + + if (!match) { + throw new SentryError(ERROR_MESSAGE); + } + + var _a = __read(match.slice(1), 6), + protocol = _a[0], + user = _a[1], + _b = _a[2], + pass = _b === void 0 ? '' : _b, + host = _a[3], + _c = _a[4], + port = _c === void 0 ? '' : _c, + lastPath = _a[5]; + + var path = ''; + var projectId = lastPath; + var split = projectId.split('/'); + + if (split.length > 1) { + path = split.slice(0, -1).join('/'); + projectId = split.pop(); + } + + this._fromComponents({ + host: host, + pass: pass, + path: path, + projectId: projectId, + port: port, + protocol: protocol, + user: user + }); + }; + /** Maps Dsn components into this instance. */ + + + Dsn.prototype._fromComponents = function (components) { + this.protocol = components.protocol; + this.user = components.user; + this.pass = components.pass || ''; + this.host = components.host; + this.port = components.port || ''; + this.path = components.path || ''; + this.projectId = components.projectId; + }; + /** Validates this Dsn and throws on error. */ + + + Dsn.prototype._validate = function () { + var _this = this; + + ['protocol', 'user', 'host', 'projectId'].forEach(function (component) { + if (!_this[component]) { + throw new SentryError(ERROR_MESSAGE); } + }); + + if (this.protocol !== 'http' && this.protocol !== 'https') { + throw new SentryError(ERROR_MESSAGE); } + + if (this.port && isNaN(parseInt(this.port, 10))) { + throw new SentryError(ERROR_MESSAGE); + } + }; + + return Dsn; + }(); + + /** + * Holds additional event information. {@link Scope.applyToEvent} will be + * called by the client before an event will be sent. + */ + + var Scope = + /** @class */ + function () { + function Scope() { + /** Flag if notifiying is happening. */ + this._notifyingListeners = false; + /** Callback for client to receive scope changes. */ + + this._scopeListeners = []; + /** Callback list that will be called after {@link applyToEvent}. */ + + this._eventProcessors = []; + /** Array of breadcrumbs. */ + + this._breadcrumbs = []; + /** User */ + + this._user = {}; + /** Tags */ + + this._tags = {}; + /** Extra */ + + this._extra = {}; + /** Contexts */ + + this._context = {}; } /** - * Remove all crash handlers. + * Add internal on change listener. Used for sub SDKs that need to store the scope. + * @hidden */ - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } + Scope.prototype.addScopeListener = function (callback) { + this._scopeListeners.push(callback); + }; /** - * Dispatch stack information to all handlers. - * @param {Object.<string, *>} stack + * @inheritDoc */ - function notifyHandlers(stack, isWindowError) { - var exception = null; + Scope.prototype.addEventProcessor = function (callback) { + this._eventProcessors.push(callback); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + return this; + }; + /** + * This will be called on every set call. + */ + + + Scope.prototype._notifyScopeListeners = function () { + var _this = this; + + if (!this._notifyingListeners) { + this._notifyingListeners = true; + setTimeout(function () { + _this._scopeListeners.forEach(function (callback) { + callback(_this); + }); + + _this._notifyingListeners = false; + }); } + }; + /** + * This will be called after {@link applyToEvent} is finished. + */ - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; + + Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) { + var _this = this; + + if (index === void 0) { + index = 0; + } + + return new SyncPromise(function (resolve, reject) { + var processor = processors[index]; // tslint:disable-next-line:strict-type-predicates + + if (event === null || typeof processor !== 'function') { + resolve(event); + } else { + var result = processor(_assign({}, event), hint); + + if (isThenable$1(result)) { + result.then(function (final) { + return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); + }).then(null, reject); + } else { + _this._notifyEventProcessors(processors, result, hint, index + 1).then(resolve).then(null, reject); } } - } + }); + }; + /** + * @inheritDoc + */ - if (exception) { - throw exception; - } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; + Scope.prototype.setUser = function (user) { + this._user = user || {}; + + this._notifyScopeListeners(); + + return this; + }; /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + * @inheritDoc */ - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + Scope.prototype.setTags = function (tags) { + this._tags = _assign({}, this._tags, tags); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + this._notifyScopeListeners(); - var message = utils.isErrorEvent(msg) ? msg.message : msg; + return this; + }; + /** + * @inheritDoc + */ - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + Scope.prototype.setTag = function (key, value) { + var _a; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + this._tags = _assign({}, this._tags, (_a = {}, _a[key] = value, _a)); - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + this._notifyScopeListeners(); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + return this; + }; + /** + * @inheritDoc + */ - return false; - } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + Scope.prototype.setExtras = function (extras) { + this._extra = _assign({}, this._extra, extras); + + this._notifyScopeListeners(); + + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.setExtra = function (key, extra) { + var _a; + + this._extra = _assign({}, this._extra, (_a = {}, _a[key] = extra, _a)); + + this._notifyScopeListeners(); + + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.setFingerprint = function (fingerprint) { + this._fingerprint = fingerprint; + + this._notifyScopeListeners(); + + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.setLevel = function (level) { + this._level = level; + + this._notifyScopeListeners(); + + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.setTransaction = function (transaction) { + this._transaction = transaction; + + if (this._span) { + this._span.transaction = transaction; } - _oldOnerrorHandler = _window$1.onerror; - _window$1.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + this._notifyScopeListeners(); - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.setContext = function (key, context) { + var _a; + + this._context = _assign({}, this._context, (_a = {}, _a[key] = context, _a)); + + this._notifyScopeListeners(); + + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.setSpan = function (span) { + this._span = span; + + this._notifyScopeListeners(); + + return this; + }; + /** + * Internal getter for Span, used in Hub. + * @hidden + */ + + + Scope.prototype.getSpan = function () { + return this._span; + }; + /** + * Inherit values from the parent scope. + * @param scope to clone. + */ + + + Scope.clone = function (scope) { + var newScope = new Scope(); + + if (scope) { + newScope._breadcrumbs = __spread(scope._breadcrumbs); + newScope._tags = _assign({}, scope._tags); + newScope._extra = _assign({}, scope._extra); + newScope._context = _assign({}, scope._context); + newScope._user = scope._user; + newScope._level = scope._level; + newScope._span = scope._span; + newScope._transaction = scope._transaction; + newScope._fingerprint = scope._fingerprint; + newScope._eventProcessors = __spread(scope._eventProcessors); } - _window$1.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + return newScope; + }; + /** + * @inheritDoc + */ - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } + + Scope.prototype.clear = function () { + this._breadcrumbs = []; + this._tags = {}; + this._extra = {}; + this._user = {}; + this._context = {}; + this._level = undefined; + this._transaction = undefined; + this._fingerprint = undefined; + this._span = undefined; + + this._notifyScopeListeners(); + + return this; + }; /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + * @inheritDoc */ - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) { + var mergedBreadcrumb = _assign({ + timestamp: timestampWithMs() + }, breadcrumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } + this._breadcrumbs = maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0 ? __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs) : __spread(this._breadcrumbs, [mergedBreadcrumb]); + + this._notifyScopeListeners(); + + return this; + }; + /** + * @inheritDoc + */ + + + Scope.prototype.clearBreadcrumbs = function () { + this._breadcrumbs = []; + + this._notifyScopeListeners(); + + return this; + }; + /** + * Applies fingerprint from the scope to the event if there's one, + * uses message if there's one instead or get rid of empty fingerprint + */ + + + Scope.prototype._applyFingerprint = function (event) { + // Make sure it's an array first and we actually have something in place + event.fingerprint = event.fingerprint ? Array.isArray(event.fingerprint) ? event.fingerprint : [event.fingerprint] : []; // If we have something on the scope, then merge it with event + + if (this._fingerprint) { + event.fingerprint = event.fingerprint.concat(this._fingerprint); + } // If we have no data at all, remove empty array default + + + if (event.fingerprint && !event.fingerprint.length) { + delete event.fingerprint; + } + }; + /** + * Applies the current context and fingerprint to the event. + * Note that breadcrumbs will be added by the client. + * Also if the event has already breadcrumbs on it, we do not merge them. + * @param event Event + * @param hint May contain additional informartion about the original exception. + * @hidden + */ + + + Scope.prototype.applyToEvent = function (event, hint) { + if (this._extra && Object.keys(this._extra).length) { + event.extra = _assign({}, this._extra, event.extra); } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + if (this._tags && Object.keys(this._tags).length) { + event.tags = _assign({}, this._tags, event.tags); + } - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + if (this._user && Object.keys(this._user).length) { + event.user = _assign({}, this._user, event.user); + } - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + if (this._context && Object.keys(this._context).length) { + event.contexts = _assign({}, this._context, event.contexts); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; + if (this._level) { + event.level = this._level; + } + + if (this._transaction) { + event.transaction = this._transaction; + } + + if (this._span) { + event.contexts = _assign({ + trace: this._span.getTraceContext() + }, event.contexts); + } + + this._applyFingerprint(event); + + event.breadcrumbs = __spread(event.breadcrumbs || [], this._breadcrumbs); + event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined; + return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint); + }; + + return Scope; }(); /** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. + * Retruns the global event processors. + */ + + function getGlobalEventProcessors() { + var global = getGlobalObject(); + global.__SENTRY__ = global.__SENTRY__ || {}; + global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || []; + return global.__SENTRY__.globalEventProcessors; + } + /** + * Add a EventProcessor to be kept globally. + * @param callback EventProcessor to add + */ + + + function addGlobalEventProcessor(callback) { + getGlobalEventProcessors().push(callback); + } + + /** + * API compatibility version of this hub. * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). + * WARNING: This number should only be incresed when the global interface + * changes a and new methods are introduced. * + * @hidden */ + var API_VERSION = 3; + /** + * Default maximum number of breadcrumbs added to an event. Can be overwritten + * with {@link Options.maxBreadcrumbs}. + */ - TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + var DEFAULT_BREADCRUMBS = 100; + /** + * Absolute maximum number of breadcrumbs added to an event. The + * `maxBreadcrumbs` option cannot be higher than this value. + */ + + var MAX_BREADCRUMBS = 100; + /** + * @inheritDoc + */ + var Hub = + /** @class */ + function () { /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.<string, *>} Stack trace information. + * Creates a new instance of the hub, will push one {@link Layer} into the + * internal stack on creation. + * + * @param client bound to the hub. + * @param scope bound to the hub. + * @param version number, higher number means higher priority. */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; - var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; // NOTE: blob urls are now supposed to always have an origin, therefore it's format - // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + function Hub(client, scope, _version) { + if (scope === void 0) { + scope = new Scope(); + } - var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i; // Used to additionally parse URL/line/column from eval frames + if (_version === void 0) { + _version = API_VERSION; + } - var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; - var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; - var lines = ex.stack.split('\n'); - var stack = []; - var submatch; - var parts; - var element; - var reference = /^(.*) is undefined$/.exec(ex.message); + this._version = _version; + /** Is a {@link Layer}[] containing the client and scope */ - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + this._stack = []; - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + this._stack.push({ + client: client, + scope: scope + }); + } + /** + * Internal helper function to call a method on the top client if it exists. + * + * @param method The method to call on the client. + * @param args Arguments to pass to the client function. + */ - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - parts[3] = submatch[2]; // line + Hub.prototype._invokeClient = function (method) { + var _a; - parts[4] = submatch[3]; // column - } + var args = []; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; + var top = this.getStackTop(); + + if (top && top.client && top.client[method]) { + (_a = top.client)[method].apply(_a, __spread(args, [top.scope])); + } + }; + /** + * @inheritDoc + */ + + + Hub.prototype.isOlderThan = function (version) { + return this._version < version; + }; + /** + * @inheritDoc + */ + + + Hub.prototype.bindClient = function (client) { + var top = this.getStackTop(); + top.client = client; + + if (client && client.setupIntegrations) { + client.setupIntegrations(); + } + }; + /** + * @inheritDoc + */ + + + Hub.prototype.pushScope = function () { + // We want to clone the content of prev scope + var stack = this.getStack(); + var parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined; + var scope = Scope.clone(parentScope); + this.getStack().push({ + client: this.getClient(), + scope: scope + }); + return scope; + }; + /** + * @inheritDoc + */ + + + Hub.prototype.popScope = function () { + return this.getStack().pop() !== undefined; + }; + /** + * @inheritDoc + */ + + + Hub.prototype.withScope = function (callback) { + var scope = this.pushScope(); + + try { + callback(scope); + } finally { + this.popScope(); + } + }; + /** + * @inheritDoc + */ + + + Hub.prototype.getClient = function () { + return this.getStackTop().client; + }; + /** Returns the scope of the top stack. */ + + + Hub.prototype.getScope = function () { + return this.getStackTop().scope; + }; + /** Returns the scope stack for domains or the process. */ + + + Hub.prototype.getStack = function () { + return this._stack; + }; + /** Returns the topmost scope layer in the order domain > local > process. */ + + + Hub.prototype.getStackTop = function () { + return this._stack[this._stack.length - 1]; + }; + /** + * @inheritDoc + */ + + + Hub.prototype.captureException = function (exception, hint) { + var eventId = this._lastEventId = uuid4(); + var finalHint = hint; // If there's no explicit hint provided, mimick the same thing that would happen + // in the minimal itself to create a consistent behavior. + // We don't do this in the client, as it's the lowest level API, and doing this, + // would prevent user from having full control over direct calls. + + if (!hint) { + var syntheticException = void 0; + + try { + throw new Error('Sentry syntheticException'); + } catch (exception) { + syntheticException = exception; } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + finalHint = { + originalException: exception, + syntheticException: syntheticException + }; + } + + this._invokeClient('captureException', exception, _assign({}, finalHint, { + event_id: eventId + })); + + return eventId; + }; + /** + * @inheritDoc + */ + + + Hub.prototype.captureMessage = function (message, level, hint) { + var eventId = this._lastEventId = uuid4(); + var finalHint = hint; // If there's no explicit hint provided, mimick the same thing that would happen + // in the minimal itself to create a consistent behavior. + // We don't do this in the client, as it's the lowest level API, and doing this, + // would prevent user from having full control over direct calls. + + if (!hint) { + var syntheticException = void 0; + + try { + throw new Error(message); + } catch (exception) { + syntheticException = exception; } - if (element.url && element.url.substr(0, 5) === 'blob:') { - // Special case for handling JavaScript loaded into a blob. - // We use a synchronous AJAX request here as a blob is already in - // memory - it's not making a network request. This will generate a warning - // in the browser console, but there has already been an error so that's not - // that much of an issue. - var xhr = new XMLHttpRequest(); - xhr.open('GET', element.url, false); - xhr.send(null); // If we failed to download the source, skip this patch + finalHint = { + originalException: message, + syntheticException: syntheticException + }; + } + + this._invokeClient('captureMessage', message, level, _assign({}, finalHint, { + event_id: eventId + })); + + return eventId; + }; + /** + * @inheritDoc + */ + - if (xhr.status === 200) { - var source = xhr.responseText || ''; // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. - // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + Hub.prototype.captureEvent = function (event, hint) { + var eventId = this._lastEventId = uuid4(); - source = source.slice(-300); // Now we dig out the source map URL + this._invokeClient('captureEvent', event, _assign({}, hint, { + event_id: eventId + })); - var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); // If we don't find a source map comment or we find more than one, continue on to the next element. + return eventId; + }; + /** + * @inheritDoc + */ - if (sourceMaps) { - var sourceMapAddress = sourceMaps[1]; // Now we check to see if it's a relative URL. - // If it is, convert it to an absolute one. - if (sourceMapAddress.charAt(0) === '~') { - sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); - } // Now we strip the '.map' off of the end of the URL and update the - // element so that Sentry can match the map to the blob. + Hub.prototype.lastEventId = function () { + return this._lastEventId; + }; + /** + * @inheritDoc + */ - element.url = sourceMapAddress.slice(0, -4); - } - } - } + Hub.prototype.addBreadcrumb = function (breadcrumb, hint) { + var top = this.getStackTop(); - stack.push(element); + if (!top.scope || !top.client) { + return; } - if (!stack.length) { - return null; + var _a = top.client.getOptions && top.client.getOptions() || {}, + _b = _a.beforeBreadcrumb, + beforeBreadcrumb = _b === void 0 ? null : _b, + _c = _a.maxBreadcrumbs, + maxBreadcrumbs = _c === void 0 ? DEFAULT_BREADCRUMBS : _c; + + if (maxBreadcrumbs <= 0) { + return; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } + var timestamp = timestampWithMs(); + + var mergedBreadcrumb = _assign({ + timestamp: timestamp + }, breadcrumb); + + var finalBreadcrumb = beforeBreadcrumb ? consoleSandbox(function () { + return beforeBreadcrumb(mergedBreadcrumb, hint); + }) : mergedBreadcrumb; + + if (finalBreadcrumb === null) { + return; + } + + top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS)); + }; /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.<string, *>} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + * @inheritDoc */ - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + Hub.prototype.setUser = function (user) { + var top = this.getStackTop(); - if (initial.url && initial.line) { - stackInfo.incomplete = false; + if (!top.scope) { + return; + } - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + top.scope.setUser(user); + }; + /** + * @inheritDoc + */ - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + Hub.prototype.setTags = function (tags) { + var top = this.getStackTop(); + + if (!top.scope) { + return; } - return false; - } + top.scope.setTags(tags); + }; /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.<string, *>} Stack trace information. + * @inheritDoc */ - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + Hub.prototype.setExtras = function (extras) { + var top = this.getStackTop(); - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + if (!top.scope) { + return; + } - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + top.scope.setExtras(extras); + }; + /** + * @inheritDoc + */ - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + Hub.prototype.setTag = function (key, value) { + var top = this.getStackTop(); - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + if (!top.scope) { + return; + } + + top.scope.setTag(key, value); + }; + /** + * @inheritDoc + */ + + + Hub.prototype.setExtra = function (key, extra) { + var top = this.getStackTop(); - stack.push(item); + if (!top.scope) { + return; } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + top.scope.setExtra(key, extra); + }; + /** + * @inheritDoc + */ + + + Hub.prototype.setContext = function (name, context) { + var top = this.getStackTop(); + + if (!top.scope) { + return; } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } + top.scope.setContext(name, context); + }; /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth + * @inheritDoc */ - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + Hub.prototype.configureScope = function (callback) { + var top = this.getStackTop(); + + if (top.scope && top.client) { + callback(top.scope); + } + }; + /** + * @inheritDoc + */ + + + Hub.prototype.run = function (callback) { + var oldHub = makeMain(this); try { - stack = computeStackTraceFromStackProp(ex); + callback(this); + } finally { + makeMain(oldHub); + } + }; + /** + * @inheritDoc + */ - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + + Hub.prototype.getIntegration = function (integration) { + var client = this.getClient(); + + if (!client) { + return null; } try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + return client.getIntegration(integration); + } catch (_oO) { + logger.warn("Cannot retrieve integration " + integration.id + " from the current Hub"); + return null; + } + }; + /** + * @inheritDoc + */ - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + + Hub.prototype.startSpan = function (spanOrSpanContext, forceNoChild) { + if (forceNoChild === void 0) { + forceNoChild = false; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild); + }; + /** + * @inheritDoc + */ - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; - }(); - var tracekit = TraceKit; + Hub.prototype.traceHeaders = function () { + return this._callExtensionMethod('traceHeaders'); + }; + /** + * Calls global extension method and binding current instance to the function call + */ + // @ts-ignore - /* - * JavaScript MD5 - * https://github.com/blueimp/JavaScript-MD5 - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT + + Hub.prototype._callExtensionMethod = function (method) { + var args = []; + + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + + var carrier = getMainCarrier(); + var sentry = carrier.__SENTRY__; // tslint:disable-next-line: strict-type-predicates + + if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') { + return sentry.extensions[method].apply(this, args); + } + + logger.warn("Extension method " + method + " couldn't be found, doing nothing."); + }; + + return Hub; + }(); + /** Returns the global shim registry. */ + + function getMainCarrier() { + var carrier = getGlobalObject(); + carrier.__SENTRY__ = carrier.__SENTRY__ || { + extensions: {}, + hub: undefined + }; + return carrier; + } + /** + * Replaces the current main hub with the passed one on the global object * - * Based on - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. + * @returns The old replaced hub */ - /* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ - function safeAdd(x, y) { - var lsw = (x & 0xffff) + (y & 0xffff); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return msw << 16 | lsw & 0xffff; + function makeMain(hub) { + var registry = getMainCarrier(); + var oldHub = getHubFromCarrier(registry); + setHubOnCarrier(registry, hub); + return oldHub; } - /* - * Bitwise rotate a 32-bit number to the left. - */ + /** + * Returns the default hub instance. + * + * If a hub is already registered in the global carrier but this module + * contains a more recent version, it replaces the registered version. + * Otherwise, the currently registered hub will be returned. + */ + function getCurrentHub() { + // Get main carrier (global for every environment) + var registry = getMainCarrier(); // If there's no hub, or its an old API, assign a new one - function bitRotateLeft(num, cnt) { - return num << cnt | num >>> 32 - cnt; - } - /* - * These functions implement the four basic operations the algorithm uses. - */ + if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) { + setHubOnCarrier(registry, new Hub()); + } // Prefer domains over global if they are there (applicable only to Node environment) - function md5cmn(q, a, b, x, s, t) { - return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); - } + if (isNodeEnv()) { + return getHubFromActiveDomain(registry); + } // Return hub that lives on a global object - function md5ff(a, b, c, d, x, s, t) { - return md5cmn(b & c | ~b & d, a, b, x, s, t); - } - function md5gg(a, b, c, d, x, s, t) { - return md5cmn(b & d | c & ~d, a, b, x, s, t); + return getHubFromCarrier(registry); } + /** + * Try to read the hub from an active domain, fallback to the registry if one doesnt exist + * @returns discovered hub + */ - function md5hh(a, b, c, d, x, s, t) { - return md5cmn(b ^ c ^ d, a, b, x, s, t); - } + function getHubFromActiveDomain(registry) { + try { + var property = 'domain'; + var carrier = getMainCarrier(); + var sentry = carrier.__SENTRY__; // tslint:disable-next-line: strict-type-predicates - function md5ii(a, b, c, d, x, s, t) { - return md5cmn(c ^ (b | ~d), a, b, x, s, t); - } - /* - * Calculate the MD5 of an array of little-endian words, and a bit length. - */ + if (!sentry || !sentry.extensions || !sentry.extensions[property]) { + return getHubFromCarrier(registry); + } + var domain = sentry.extensions[property]; + var activeDomain = domain.active; // If there no active domain, just return global hub - function binlMD5(x, len) { - /* append padding */ - x[len >> 5] |= 0x80 << len % 32; - x[(len + 64 >>> 9 << 4) + 14] = len; - var i; - var olda; - var oldb; - var oldc; - var oldd; - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - a = md5ff(a, b, c, d, x[i], 7, -680876936); - d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); - a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5gg(b, c, d, a, x[i], 20, -373897302); - a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); - a = md5hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5hh(d, a, b, c, x[i], 11, -358537222); - c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); - a = md5ii(a, b, c, d, x[i], 6, -198630844); - d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); - a = safeAdd(a, olda); - b = safeAdd(b, oldb); - c = safeAdd(c, oldc); - d = safeAdd(d, oldd); - } - - return [a, b, c, d]; - } - /* - * Convert an array of little-endian words to a string - */ + if (!activeDomain) { + return getHubFromCarrier(registry); + } // If there's no hub on current domain, or its an old API, assign a new one - function binl2rstr(input) { - var i; - var output = ''; - var length32 = input.length * 32; + if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) { + var registryHubTopStack = getHubFromCarrier(registry).getStackTop(); + setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope))); + } // Return hub that lives on a domain - for (i = 0; i < length32; i += 8) { - output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff); - } - return output; + return getHubFromCarrier(activeDomain); + } catch (_Oo) { + // Return hub that lives on a global object + return getHubFromCarrier(registry); + } } - /* - * Convert a raw string to an array of little-endian words - * Characters >255 have their high-byte silently ignored. - */ - + /** + * This will tell whether a carrier has a hub on it or not + * @param carrier object + */ - function rstr2binl(input) { - var i; - var output = []; - output[(input.length >> 2) - 1] = undefined; - for (i = 0; i < output.length; i += 1) { - output[i] = 0; + function hasHubOnCarrier(carrier) { + if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) { + return true; } - var length8 = input.length * 8; + return false; + } + /** + * This will create a new {@link Hub} and add to the passed object on + * __SENTRY__.hub. + * @param carrier object + * @hidden + */ + - for (i = 0; i < length8; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32; + function getHubFromCarrier(carrier) { + if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) { + return carrier.__SENTRY__.hub; } - return output; + carrier.__SENTRY__ = carrier.__SENTRY__ || {}; + carrier.__SENTRY__.hub = new Hub(); + return carrier.__SENTRY__.hub; } - /* - * Calculate the MD5 of a raw string - */ + /** + * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute + * @param carrier object + * @param hub Hub + */ + function setHubOnCarrier(carrier, hub) { + if (!carrier) { + return false; + } - function rstrMD5(s) { - return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); + carrier.__SENTRY__ = carrier.__SENTRY__ || {}; + carrier.__SENTRY__.hub = hub; + return true; } - /* - * Calculate the HMAC-MD5, of a key and some data (raw strings) - */ + /** + * This calls a function on the current hub. + * @param method function to call on hub. + * @param args to pass to function. + */ - function rstrHMACMD5(key, data) { - var i; - var bkey = rstr2binl(key); - var ipad = []; - var opad = []; - var hash; - ipad[15] = opad[15] = undefined; + function callOnHub(method) { + var args = []; - if (bkey.length > 16) { - bkey = binlMD5(bkey, key.length * 8); + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; } - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5c5c5c5c; + var hub = getCurrentHub(); + + if (hub && hub[method]) { + // tslint:disable-next-line:no-unsafe-any + return hub[method].apply(hub, __spread(args)); } - hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); - return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); + throw new Error("No hub defined or " + method + " was not found on the hub, please open a bug report."); } - /* - * Convert a raw string to a hex string - */ + /** + * Captures an exception event and sends it to Sentry. + * + * @param exception An exception-like object. + * @returns The generated eventId. + */ - function rstr2hex(input) { - var hexTab = '0123456789abcdef'; - var output = ''; - var x; - var i; + function captureException(exception) { + var syntheticException; - for (i = 0; i < input.length; i += 1) { - x = input.charCodeAt(i); - output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f); + try { + throw new Error('Sentry syntheticException'); + } catch (exception) { + syntheticException = exception; } - return output; + return callOnHub('captureException', exception, { + originalException: exception, + syntheticException: syntheticException + }); } - /* - * Encode a string as utf-8 - */ - + /** + * Creates a new scope with and executes the given operation within. + * The scope is automatically removed once the operation + * finishes or throws. + * + * This is essentially a convenience function for: + * + * pushScope(); + * callback(); + * popScope(); + * + * @param callback that will be enclosed into push/popScope. + */ - function str2rstrUTF8(input) { - return unescape(encodeURIComponent(input)); + function withScope(callback) { + callOnHub('withScope', callback); } - /* - * Take string arguments and return either raw or hex encoded strings - */ + var SENTRY_API_VERSION = '7'; + /** Helper class to provide urls to different Sentry endpoints. */ - function rawMD5(s) { - return rstrMD5(str2rstrUTF8(s)); - } + var API = + /** @class */ + function () { + /** Create a new instance of API */ + function API(dsn) { + this.dsn = dsn; + this._dsnObject = new Dsn(dsn); + } + /** Returns the Dsn object. */ - function hexMD5(s) { - return rstr2hex(rawMD5(s)); - } - function rawHMACMD5(k, d) { - return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); - } + API.prototype.getDsn = function () { + return this._dsnObject; + }; + /** Returns a string with auth headers in the url to the store endpoint. */ - function hexHMACMD5(k, d) { - return rstr2hex(rawHMACMD5(k, d)); - } - function md5(string, key, raw) { - if (!key) { - if (!raw) { - return hexMD5(string); + API.prototype.getStoreEndpoint = function () { + return "" + this._getBaseUrl() + this.getStoreEndpointPath(); + }; + /** Returns the store endpoint with auth added in url encoded. */ + + + API.prototype.getStoreEndpointWithUrlEncodedAuth = function () { + var dsn = this._dsnObject; + var auth = { + sentry_key: dsn.user, + sentry_version: SENTRY_API_VERSION + }; // Auth is intentionally sent as part of query string (NOT as custom HTTP header) + // to avoid preflight CORS requests + + return this.getStoreEndpoint() + "?" + urlEncode(auth); + }; + /** Returns the base path of the url including the port. */ + + + API.prototype._getBaseUrl = function () { + var dsn = this._dsnObject; + var protocol = dsn.protocol ? dsn.protocol + ":" : ''; + var port = dsn.port ? ":" + dsn.port : ''; + return protocol + "//" + dsn.host + port; + }; + /** Returns only the path component for the store endpoint. */ + + + API.prototype.getStoreEndpointPath = function () { + var dsn = this._dsnObject; + return (dsn.path ? "/" + dsn.path : '') + "/api/" + dsn.projectId + "/store/"; + }; + /** Returns an object that can be used in request headers. */ + + + API.prototype.getRequestHeaders = function (clientName, clientVersion) { + var dsn = this._dsnObject; + var header = ["Sentry sentry_version=" + SENTRY_API_VERSION]; + header.push("sentry_client=" + clientName + "/" + clientVersion); + header.push("sentry_key=" + dsn.user); + + if (dsn.pass) { + header.push("sentry_secret=" + dsn.pass); } - return rawMD5(string); - } + return { + 'Content-Type': 'application/json', + 'X-Sentry-Auth': header.join(', ') + }; + }; + /** Returns the url to the report dialog endpoint. */ - if (!raw) { - return hexHMACMD5(key, string); - } - return rawHMACMD5(key, string); - } + API.prototype.getReportDialogEndpoint = function (dialogOptions) { + if (dialogOptions === void 0) { + dialogOptions = {}; + } - var md5_1 = md5; + var dsn = this._dsnObject; + var endpoint = "" + this._getBaseUrl() + (dsn.path ? "/" + dsn.path : '') + "/api/embed/error-page/"; + var encodedOptions = []; + encodedOptions.push("dsn=" + dsn.toString()); - function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; - } + for (var key in dialogOptions) { + if (key === 'user') { + if (!dialogOptions.user) { + continue; + } - RavenConfigError.prototype = new Error(); - RavenConfigError.prototype.constructor = RavenConfigError; - var configError = RavenConfigError; + if (dialogOptions.user.name) { + encodedOptions.push("name=" + encodeURIComponent(dialogOptions.user.name)); + } - var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (dialogOptions.user.email) { + encodedOptions.push("email=" + encodeURIComponent(dialogOptions.user.email)); + } + } else { + encodedOptions.push(encodeURIComponent(key) + "=" + encodeURIComponent(dialogOptions[key])); + } + } - if (!(level in console)) { - return; - } + if (encodedOptions.length) { + return endpoint + "?" + encodedOptions.join('&'); + } - var sentryLevel = level === 'warn' ? 'warning' : level; + return endpoint; + }; + + return API; + }(); + + var installedIntegrations = []; + /** Gets integration to install */ + + function getIntegrationsToSetup(options) { + var defaultIntegrations = options.defaultIntegrations && __spread(options.defaultIntegrations) || []; + var userIntegrations = options.integrations; + var integrations = []; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + if (Array.isArray(userIntegrations)) { + var userIntegrationsNames_1 = userIntegrations.map(function (i) { + return i.name; + }); + var pickedIntegrationsNames_1 = []; // Leave only unique default integrations, that were not overridden with provided user integrations + + defaultIntegrations.forEach(function (defaultIntegration) { + if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 && pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) { + integrations.push(defaultIntegration); + pickedIntegrationsNames_1.push(defaultIntegration.name); } - }; + }); // Don't add same user integration twice - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + userIntegrations.forEach(function (userIntegration) { + if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) { + integrations.push(userIntegration); + pickedIntegrationsNames_1.push(userIntegration.name); } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; - }; - - var console$1 = { - wrapMethod: wrapMethod - }; - - /*global XDomainRequest:false */ - - var isErrorEvent$1 = utils.isErrorEvent; - var isDOMError$1 = utils.isDOMError; - var isDOMException$1 = utils.isDOMException; - var isError$1 = utils.isError; - var isObject$2 = utils.isObject; - var isPlainObject$1 = utils.isPlainObject; - var isUndefined$1 = utils.isUndefined; - var isFunction$1 = utils.isFunction; - var isString$1 = utils.isString; - var isArray$2 = utils.isArray; - var isEmptyObject$1 = utils.isEmptyObject; - var each$1 = utils.each; - var objectMerge$1 = utils.objectMerge; - var truncate$1 = utils.truncate; - var objectFrozen$1 = utils.objectFrozen; - var hasKey$1 = utils.hasKey; - var joinRegExp$1 = utils.joinRegExp; - var urlencode$1 = utils.urlencode; - var uuid4$1 = utils.uuid4; - var htmlTreeAsString$1 = utils.htmlTreeAsString; - var isSameException$1 = utils.isSameException; - var isSameStacktrace$1 = utils.isSameStacktrace; - var parseUrl$1 = utils.parseUrl; - var fill$1 = utils.fill; - var supportsFetch$1 = utils.supportsFetch; - var supportsReferrerPolicy$1 = utils.supportsReferrerPolicy; - var serializeKeysForMessage$1 = utils.serializeKeysForMessage; - var serializeException$1 = utils.serializeException; - var sanitize$1 = utils.sanitize; - var wrapConsoleMethod = console$1.wrapMethod; - var dsnKeys = 'source protocol user pass host port path'.split(' '), - dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - - function now() { - return +new Date(); - } // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) - - - var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - - var _document = _window$2.document; - var _navigator = _window$2.navigator; - - function keepOriginalCallback(original, callback) { - return isFunction$1(callback) ? function (data) { - return callback(data, original); - } : callback; - } // First, check for JSON support - // If there is no JSON, we no-op the core features of Raven - // since JSON is required to encode the payload - - - function Raven() { - this._hasJSON = !!((typeof JSON === "undefined" ? "undefined" : _typeof(JSON)) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) - - this._hasDocument = !isUndefined$1(_document); - this._hasNavigator = !isUndefined$1(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$2.SENTRY_RELEASE && _window$2.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - captureUnhandledRejections: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1, - sanitizeKeys: [] - }; - this._fetchDefaults = { - method: 'POST', - // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default - // https://caniuse.com/#feat=referrer-policy - // It doesn't. And it throw exception instead of ignoring this parameter... - // REF: https://github.com/getsentry/raven-js/issues/1233 - referrerPolicy: supportsReferrerPolicy$1() ? 'origin' : '' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch - - this._originalConsole = _window$2.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$2.location; - this._lastHref = this._location && this._location.href; - - this._resetBackoff(); // eslint-disable-next-line guard-for-in - - - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; + }); + } else if (typeof userIntegrations === 'function') { + integrations = userIntegrations(defaultIntegrations); + integrations = Array.isArray(integrations) ? integrations : [integrations]; + } else { + integrations = __spread(defaultIntegrations); + } // Make sure that if present, `Debug` integration will always run last + + + var integrationsNames = integrations.map(function (i) { + return i.name; + }); + var alwaysLastToRun = 'Debug'; + + if (integrationsNames.indexOf(alwaysLastToRun) !== -1) { + integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1))); } + + return integrations; } - /* - * The core Raven singleton + /** Setup given integration */ + + function setupIntegration(integration) { + if (installedIntegrations.indexOf(integration.name) !== -1) { + return; + } + + integration.setupOnce(addGlobalEventProcessor, getCurrentHub); + installedIntegrations.push(integration.name); + logger.log("Integration installed: " + integration.name); + } + /** + * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default + * integrations are added unless they were already provided before. + * @param integrations array of integration instances + * @param withDefault should enable default integrations + */ + + function setupIntegrations(options) { + var integrations = {}; + getIntegrationsToSetup(options).forEach(function (integration) { + integrations[integration.name] = integration; + setupIntegration(integration); + }); + return integrations; + } + + /** + * Base implementation for all JavaScript SDK clients. + * + * Call the constructor with the corresponding backend constructor and options + * specific to the client subclass. To access these options later, use + * {@link Client.getOptions}. Also, the Backend instance is available via + * {@link Client.getBackend}. * - * @this {Raven} + * If a Dsn is specified in the options, it will be parsed and stored. Use + * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is + * invalid, the constructor will throw a {@link SentryException}. Note that + * without a valid Dsn, the SDK will not send any events to Sentry. + * + * Before sending an event via the backend, it is passed through + * {@link BaseClient.prepareEvent} to add SDK information and scope data + * (breadcrumbs and context). To add more custom information, override this + * method and extend the resulting prepared event. + * + * To issue automatically created events (e.g. via instrumentation), use + * {@link Client.captureEvent}. It will prepare the event and pass it through + * the callback lifecycle. To issue auto-breadcrumbs, use + * {@link Client.addBreadcrumb}. + * + * @example + * class NodeClient extends BaseClient<NodeBackend, NodeOptions> { + * public constructor(options: NodeOptions) { + * super(NodeBackend, options); + * } + * + * // ... + * } */ + var BaseClient = + /** @class */ + function () { + /** + * Initializes this client instance. + * + * @param backendClass A constructor function to create the backend. + * @param options Options for the client. + */ + function BaseClient(backendClass, options) { + /** Array of used integrations. */ + this._integrations = {}; + /** Is the client still processing a call? */ + + this._processing = false; + this._backend = new backendClass(options); + this._options = options; - Raven.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.27.1', - debug: false, - TraceKit: tracekit, - // alias to TraceKit - - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + if (options.dsn) { + this._dsn = new Dsn(options.dsn); + } + } + /** + * @inheritDoc + */ + + + BaseClient.prototype.captureException = function (exception, hint, scope) { + var _this = this; + + var eventId = hint && hint.event_id; + this._processing = true; + + this._getBackend().eventFromException(exception, hint).then(function (event) { + return _this._processEvent(event, hint, scope); + }).then(function (finalEvent) { + // We need to check for finalEvent in case beforeSend returned null + eventId = finalEvent && finalEvent.event_id; + _this._processing = false; + }).then(null, function (reason) { + logger.error(reason); + _this._processing = false; + }); + + return eventId; + }; + /** + * @inheritDoc + */ + + + BaseClient.prototype.captureMessage = function (message, level, hint, scope) { + var _this = this; + + var eventId = hint && hint.event_id; + this._processing = true; + var promisedEvent = isPrimitive(message) ? this._getBackend().eventFromMessage("" + message, level, hint) : this._getBackend().eventFromException(message, hint); + promisedEvent.then(function (event) { + return _this._processEvent(event, hint, scope); + }).then(function (finalEvent) { + // We need to check for finalEvent in case beforeSend returned null + eventId = finalEvent && finalEvent.event_id; + _this._processing = false; + }).then(null, function (reason) { + logger.error(reason); + _this._processing = false; + }); + return eventId; + }; + /** + * @inheritDoc + */ + + + BaseClient.prototype.captureEvent = function (event, hint, scope) { + var _this = this; + + var eventId = hint && hint.event_id; + this._processing = true; + + this._processEvent(event, hint, scope).then(function (finalEvent) { + // We need to check for finalEvent in case beforeSend returned null + eventId = finalEvent && finalEvent.event_id; + _this._processing = false; + }).then(null, function (reason) { + logger.error(reason); + _this._processing = false; + }); + + return eventId; + }; + /** + * @inheritDoc + */ + + + BaseClient.prototype.getDsn = function () { + return this._dsn; + }; + /** + * @inheritDoc + */ + + + BaseClient.prototype.getOptions = function () { + return this._options; + }; + /** + * @inheritDoc + */ + + + BaseClient.prototype.flush = function (timeout) { + var _this = this; + + return this._isClientProcessing(timeout).then(function (status) { + clearInterval(status.interval); + return _this._getBackend().getTransport().close(timeout).then(function (transportFlushed) { + return status.ready && transportFlushed; + }); + }); + }; + /** + * @inheritDoc + */ - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); - return self; + BaseClient.prototype.close = function (timeout) { + var _this = this; + + return this.flush(timeout).then(function (result) { + _this.getOptions().enabled = false; + return result; + }); + }; + /** + * Sets up the integrations + */ + + + BaseClient.prototype.setupIntegrations = function () { + if (this._isEnabled()) { + this._integrations = setupIntegrations(this._options); + } + }; + /** + * @inheritDoc + */ + + + BaseClient.prototype.getIntegration = function (integration) { + try { + return this._integrations[integration.id] || null; + } catch (_oO) { + logger.warn("Cannot retrieve integration " + integration.id + " from the current Client"); + return null; } + }; + /** Waits for the client to be done with processing. */ - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - if (options) { - each$1(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; + BaseClient.prototype._isClientProcessing = function (timeout) { + var _this = this; + + return new SyncPromise(function (resolve) { + var ticked = 0; + var tick = 1; + var interval = 0; + clearInterval(interval); + interval = setInterval(function () { + if (!_this._processing) { + resolve({ + interval: interval, + ready: true + }); } else { - globalOptions[key] = value; + ticked += tick; + + if (timeout && ticked >= timeout) { + resolve({ + interval: interval, + ready: false + }); + } } - }); + }, tick); + }); + }; + /** Returns the current backend. */ + + + BaseClient.prototype._getBackend = function () { + return this._backend; + }; + /** Determines whether this SDK is enabled and a valid Dsn is present. */ + + + BaseClient.prototype._isEnabled = function () { + return this.getOptions().enabled !== false && this._dsn !== undefined; + }; + /** + * Adds common information to events. + * + * The information includes release and environment from `options`, + * breadcrumbs and context (extra, tags and user) from the scope. + * + * Information that is already present in the event is never overwritten. For + * nested objects, such as the context, keys are merged. + * + * @param event The original event. + * @param hint May contain additional informartion about the original exception. + * @param scope A scope containing event metadata. + * @returns A new event with more information. + */ + + + BaseClient.prototype._prepareEvent = function (event, scope, hint) { + var _this = this; + + var _a = this.getOptions(), + environment = _a.environment, + release = _a.release, + dist = _a.dist, + _b = _a.maxValueLength, + maxValueLength = _b === void 0 ? 250 : _b, + _c = _a.normalizeDepth, + normalizeDepth = _c === void 0 ? 3 : _c; + + var prepared = _assign({}, event); + + if (prepared.environment === undefined && environment !== undefined) { + prepared.environment = environment; } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + if (prepared.release === undefined && release !== undefined) { + prepared.release = release; + } - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + if (prepared.dist === undefined && dist !== undefined) { + prepared.dist = dist; + } - globalOptions.ignoreErrors = joinRegExp$1(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp$1(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp$1(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp$1(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + if (prepared.message) { + prepared.message = truncate(prepared.message, maxValueLength); + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var exception = prepared.exception && prepared.exception.values && prepared.exception.values[0]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge$1(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + if (exception && exception.value) { + exception.value = truncate(exception.value, maxValueLength); } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + var request = prepared.request; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge$1(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + if (request && request.url) { + request.url = truncate(request.url, maxValueLength); } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + if (prepared.event_id === undefined) { + prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4(); + } - return self; - }, + this._addIntegrations(prepared.sdk); // We prepare the result here with a resolved Event. - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var result = SyncPromise.resolve(prepared); // This should be the last thing called, since we want that + // {@link Hub.addEventProcessor} gets the finished prepared event. - if (self._globalOptions.captureUnhandledRejections) { - self._attachPromiseRejectionHandler(); + if (scope) { + // In case we have a hub we reassign it. + result = scope.applyToEvent(prepared, hint); + } + + return result.then(function (evt) { + // tslint:disable-next-line:strict-type-predicates + if (typeof normalizeDepth === 'number' && normalizeDepth > 0) { + return _this._normalizeEvent(evt, normalizeDepth); } - self._patchFunctionToString(); + return evt; + }); + }; + /** + * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization. + * Normalized keys: + * - `breadcrumbs.data` + * - `user` + * - `contexts` + * - `extra` + * @param event Event + * @returns Normalized event + */ + - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + BaseClient.prototype._normalizeEvent = function (event, depth) { + if (!event) { + return null; + } // tslint:disable:no-unsafe-any + + + return _assign({}, event, event.breadcrumbs && { + breadcrumbs: event.breadcrumbs.map(function (b) { + return _assign({}, b, b.data && { + data: normalize$1(b.data, depth) + }); + }) + }, event.user && { + user: normalize$1(event.user, depth) + }, event.contexts && { + contexts: normalize$1(event.contexts, depth) + }, event.extra && { + extra: normalize$1(event.extra, depth) + }); + }; + /** + * This function adds all used integrations to the SDK info in the event. + * @param sdkInfo The sdkInfo of the event that will be filled with all integrations. + */ - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - self._drainPlugins(); + BaseClient.prototype._addIntegrations = function (sdkInfo) { + var integrationsArray = Object.keys(this._integrations); - self._isRavenInstalled = true; + if (sdkInfo && integrationsArray.length > 0) { + sdkInfo.integrations = integrationsArray; } + }; + /** + * Processes an event (either error or message) and sends it to Sentry. + * + * This also adds breadcrumbs and context information to the event. However, + * platform specific meta data (such as the User's IP address) must be added + * by the SDK implementor. + * + * + * @param event The event to send to Sentry. + * @param hint May contain additional informartion about the original exception. + * @param scope A scope containing event metadata. + * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. + */ - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; - }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); - }, + BaseClient.prototype._processEvent = function (event, hint, scope) { + var _this = this; - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction$1(options)) { - args = func || []; - func = options; - options = {}; + var _a = this.getOptions(), + beforeSend = _a.beforeSend, + sampleRate = _a.sampleRate; + + if (!this._isEnabled()) { + return SyncPromise.reject('SDK not enabled, will not send event.'); + } // 1.0 === 100% events are sent + // 0.0 === 0% events are sent + + + if (typeof sampleRate === 'number' && Math.random() > sampleRate) { + return SyncPromise.reject('This event has been sampled, will not send event.'); } - return this.wrap(options, func).apply(this, args); - }, + return new SyncPromise(function (resolve, reject) { + _this._prepareEvent(event, scope, hint).then(function (prepared) { + if (prepared === null) { + reject('An event processor returned null, will not send event.'); + return; + } - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} _before A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + var finalEvent = prepared; + var isInternalException = hint && hint.data && hint.data.__sentry__ === true; - if (isUndefined$1(func) && !isFunction$1(options)) { - return options; - } // options is optional + if (isInternalException || !beforeSend) { + _this._getBackend().sendEvent(finalEvent); + resolve(finalEvent); + return; + } - if (isFunction$1(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + var beforeSendResult = beforeSend(prepared, hint); // tslint:disable-next-line:strict-type-predicates + if (typeof beforeSendResult === 'undefined') { + logger.error('`beforeSend` method has to return `null` or a valid event.'); + } else if (isThenable$1(beforeSendResult)) { + _this._handleAsyncBeforeSend(beforeSendResult, resolve, reject); + } else { + finalEvent = beforeSendResult; - if (!isFunction$1(func)) { - return func; - } // We don't wanna wrap it twice! + if (finalEvent === null) { + logger.log('`beforeSend` returned `null`, will not send event.'); + resolve(null); + return; + } // From here on we are really async - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + _this._getBackend().sendEvent(finalEvent); + resolve(finalEvent); + } + }).then(null, function (reason) { + _this.captureException(reason, { + data: { + __sentry__: true + }, + originalException: reason + }); - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; - } + reject("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: " + reason); + }); + }); + }; + /** + * Resolves before send Promise and calls resolve/reject on parent SyncPromise. + */ - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - if (_before && isFunction$1(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + BaseClient.prototype._handleAsyncBeforeSend = function (beforeSend, resolve, reject) { + var _this = this; + beforeSend.then(function (processedEvent) { + if (processedEvent === null) { + reject('`beforeSend` returned `null`, will not send event.'); + return; + } // From here on we are really async - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + _this._getBackend().sendEvent(processedEvent); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + resolve(processedEvent); + }).then(null, function (e) { + reject("beforeSend rejected with " + e); + }); + }; + return BaseClient; + }(); - for (var property in func) { - if (hasKey$1(func, property)) { - wrapped[property] = func[property]; - } - } + /** Noop transport */ - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + var NoopTransport = + /** @class */ + function () { + function NoopTransport() {} + /** + * @inheritDoc + */ - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; - }, + NoopTransport.prototype.sendEvent = function (_) { + return SyncPromise.resolve({ + reason: "NoopTransport: Event has been skipped because no Dsn is configured.", + status: Status.Skipped + }); + }; /** - * Uninstalls the global error handler. - * - * @return {Raven} + * @inheritDoc */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - this._detachPromiseRejectionHandler(); - this._unpatchFunctionToString(); + NoopTransport.prototype.close = function (_) { + return SyncPromise.resolve(true); + }; + + return NoopTransport; + }(); - this._restoreBuiltIns(); + /** + * This is the base implemention of a Backend. + * @hidden + */ - this._restoreConsole(); + var BaseBackend = + /** @class */ + function () { + /** Creates a new backend instance. */ + function BaseBackend(options) { + this._options = options; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (!this._options.dsn) { + logger.warn('No DSN provided, backend will not do anything.'); + } + this._transport = this._setupTransport(); + } /** - * Callback used for `unhandledrejection` event - * - * @param {PromiseRejectionEvent} event An object containing - * promise: the Promise that was rejected - * reason: the value with which the Promise was rejected - * @return void + * Sets up the transport so it can be used later to send requests. */ - _promiseRejectionHandler: function _promiseRejectionHandler(event) { - this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); - this.captureException(event.reason, { - mechanism: { - type: 'onunhandledrejection', - handled: false - } - }); - }, + BaseBackend.prototype._setupTransport = function () { + return new NoopTransport(); + }; /** - * Installs the global promise rejection handler. - * - * @return {raven} + * @inheritDoc */ - _attachPromiseRejectionHandler: function _attachPromiseRejectionHandler() { - this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); - _window$2.addEventListener && _window$2.addEventListener('unhandledrejection', this._promiseRejectionHandler); - return this; - }, + + BaseBackend.prototype.eventFromException = function (_exception, _hint) { + throw new SentryError('Backend has to implement `eventFromException` method'); + }; /** - * Uninstalls the global promise rejection handler. - * - * @return {raven} + * @inheritDoc */ - _detachPromiseRejectionHandler: function _detachPromiseRejectionHandler() { - _window$2.removeEventListener && _window$2.removeEventListener('unhandledrejection', this._promiseRejectionHandler); - return this; - }, + + BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) { + throw new SentryError('Backend has to implement `eventFromMessage` method'); + }; /** - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} + * @inheritDoc + */ + + + BaseBackend.prototype.sendEvent = function (event) { + this._transport.sendEvent(event).then(null, function (reason) { + logger.error("Error while sending event: " + reason); + }); + }; + /** + * @inheritDoc */ - captureException: function captureException(ex, options) { - options = objectMerge$1({ - trimHeadFrames: 0 - }, options ? options : {}); - - if (isErrorEvent$1(ex) && ex.error) { - // If it is an ErrorEvent with `error` property, extract it to get actual Error - ex = ex.error; - } else if (isDOMError$1(ex) || isDOMException$1(ex)) { - // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) - // then we just extract the name and message, as they don't provide anything else - // https://developer.mozilla.org/en-US/docs/Web/API/DOMError - // https://developer.mozilla.org/en-US/docs/Web/API/DOMException - var name = ex.name || (isDOMError$1(ex) ? 'DOMError' : 'DOMException'); - var message = ex.message ? name + ': ' + ex.message : name; - return this.captureMessage(message, objectMerge$1(options, { - // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well - // but it's barely any overhead so we may at least try - stacktrace: true, - trimHeadFrames: options.trimHeadFrames + 1 - })); - } else if (isError$1(ex)) { - // we have a real Error object - ex = ex; - } else if (isPlainObject$1(ex)) { - // If it is plain Object, serialize it manually and extract options - // This will allow us to group events based on top-level keys - // which is much better than creating new group when any key/value change - options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); - ex = new Error(options.message); - } else { - // If none of previous checks were valid, then it means that - // it's not a DOMError/DOMException - // it's not a plain Object - // it's not a valid ErrorEvent (one with an error property) - // it's not an Error - // So bail out and capture it as a simple message: - return this.captureMessage(ex, objectMerge$1(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Store the raw exception object for potential debugging and introspection - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + BaseBackend.prototype.getTransport = function () { + return this._transport; + }; - try { - var stack = tracekit.computeStackTrace(ex); + return BaseBackend; + }(); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } - } + /** + * Internal function to create a new SDK client instance. The client is + * installed and then bound to the current scope. + * + * @param clientClass The client class to instanciate. + * @param options Options to pass to the client. + */ - return this; - }, - _getCaptureExceptionOptionsFromPlainObject: function _getCaptureExceptionOptionsFromPlainObject(currentOptions, ex) { - var exKeys = Object.keys(ex).sort(); - var options = objectMerge$1(currentOptions, { - message: 'Non-Error exception captured with keys: ' + serializeKeysForMessage$1(exKeys), - fingerprint: [md5_1(exKeys)], - extra: currentOptions.extra || {} - }); - options.extra.__serialized__ = serializeException$1(ex); - return options; - }, + function initAndBind(clientClass, options) { + if (options.debug === true) { + logger.enable(); + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} + var hub = getCurrentHub(); + var client = new clientClass(options); + hub.bindClient(client); + } + + var originalFunctionToString; + /** Patch toString calls to return proper name for wrapped functions */ + + var FunctionToString = + /** @class */ + function () { + function FunctionToString() { + /** + * @inheritDoc */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + this.name = FunctionToString.id; + } + /** + * @inheritDoc + */ - options = options || {}; - msg = msg + ''; // Make sure it's actually a string - var data = objectMerge$1({ - message: msg - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + FunctionToString.prototype.setupOnce = function () { + originalFunctionToString = Function.prototype.toString; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + Function.prototype.toString = function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + var context = this.__sentry_original__ || this; // tslint:disable-next-line:no-unsafe-any + return originalFunctionToString.apply(context, args); + }; + }; + /** + * @inheritDoc + */ - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] - var initialCall = isArray$2(stack.stack) && stack.stack[1]; // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call - // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd - // initialCall => captureException(string) => captureMessage(string) + FunctionToString.id = 'FunctionToString'; + return FunctionToString; + }(); - if (initialCall && initialCall.func === 'Raven.captureException') { - initialCall = stack.stack[2]; - } + var $some$1 = arrayIteration.some; - var fileurl = initialCall && initialCall.url || ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } // Always attempt to get stacktrace if message is empty. - // It's the only way to provide any helpful information to the user. + var STRICT_METHOD$4 = arrayMethodIsStrict('some'); + var USES_TO_LENGTH$8 = arrayMethodUsesToLength('some'); + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$4 || !USES_TO_LENGTH$8 }, { + some: function some(callbackfn /* , thisArg */) { + return $some$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); - if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') { - // fingerprint on msg, not stack trace (legacy behavior, could be revisited) - data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - options = objectMerge$1({ - trimHeadFrames: 0 - }, options); // Since we know this is a synthetic trace, the top frame (this function call) - // MUST be from Raven.js, so mark it for trimming - // We add to the trim counter so that callers can choose to trim extra frames, such - // as utility functions. + // this is the result of a script being pulled in from an external domain and CORS. - options.trimHeadFrames += 1; + var DEFAULT_IGNORE_ERRORS = [/^Script error\.?$/, /^Javascript error: Script error\.? on line 0$/]; + /** Inbound filters configurable by the user */ - var frames = this._prepareFrames(stack, options); + var InboundFilters = + /** @class */ + function () { + function InboundFilters(_options) { + if (_options === void 0) { + _options = {}; + } - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Make sure that fingerprint is always wrapped in an array + this._options = _options; + /** + * @inheritDoc + */ + + this.name = InboundFilters.id; + } + /** + * @inheritDoc + */ - if (data.fingerprint) { - data.fingerprint = isArray$2(data.fingerprint) ? data.fingerprint : [data.fingerprint]; - } // Fire away! + InboundFilters.prototype.setupOnce = function () { + addGlobalEventProcessor(function (event) { + var hub = getCurrentHub(); + if (!hub) { + return event; + } - this._send(data); + var self = hub.getIntegration(InboundFilters); - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge$1({ - timestamp: now() / 1000 - }, obj); + if (self) { + var client = hub.getClient(); + var clientOptions = client ? client.getOptions() : {}; - if (isFunction$1(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + var options = self._mergeOptions(clientOptions); - if (isObject$2(result) && !isEmptyObject$1(result)) { - crumb = result; - } else if (result === false) { - return this; + if (self._shouldDropEvent(event, options)) { + return null; + } } + + return event; + }); + }; + /** JSDoc */ + + + InboundFilters.prototype._shouldDropEvent = function (event, options) { + if (this._isSentryError(event, options)) { + logger.warn("Event dropped due to being internal Sentry Error.\nEvent: " + getEventDescription(event)); + return true; } - this._breadcrumbs.push(crumb); + if (this._isIgnoredError(event, options)) { + logger.warn("Event dropped due to being matched by `ignoreErrors` option.\nEvent: " + getEventDescription(event)); + return true; + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._isBlacklistedUrl(event, options)) { + logger.warn("Event dropped due to being matched by `blacklistUrls` option.\nEvent: " + getEventDescription(event) + ".\nUrl: " + this._getEventFilterUrl(event)); + return true; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + if (!this._isWhitelistedUrl(event, options)) { + logger.warn("Event dropped due to not being matched by `whitelistUrls` option.\nEvent: " + getEventDescription(event) + ".\nUrl: " + this._getEventFilterUrl(event)); + return true; + } + + return false; + }; + /** JSDoc */ - this._plugins.push([plugin, pluginArgs]); - if (this._isRavenInstalled) { - this._drainPlugins(); + InboundFilters.prototype._isSentryError = function (event, options) { + if (options === void 0) { + options = {}; } - return this; - }, + if (!options.ignoreInternal) { + return false; + } - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + try { + return event && event.exception && event.exception.values && event.exception.values[0] && event.exception.values[0].type === 'SentryError' || false; + } catch (_oO) { + return false; + } + }; + /** JSDoc */ - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - return this; - }, + InboundFilters.prototype._isIgnoredError = function (event, options) { + if (options === void 0) { + options = {}; + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (!options.ignoreErrors || !options.ignoreErrors.length) { + return false; + } - return this; - }, + return this._getPossibleEventMessages(event).some(function (message) { + // Not sure why TypeScript complains here... + return options.ignoreErrors.some(function (pattern) { + return isMatchingPattern(message, pattern); + }); + }); + }; + /** JSDoc */ - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + InboundFilters.prototype._isBlacklistedUrl = function (event, options) { + if (options === void 0) { + options = {}; + } // TODO: Use Glob instead? - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + if (!options.blacklistUrls || !options.blacklistUrls.length) { + return false; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + var url = this._getEventFilterUrl(event); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + return !url ? false : options.blacklistUrls.some(function (pattern) { + return isMatchingPattern(url, pattern); + }); + }; + /** JSDoc */ - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + InboundFilters.prototype._isWhitelistedUrl = function (event, options) { + if (options === void 0) { + options = {}; + } // TODO: Use Glob instead? - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + if (!options.whitelistUrls || !options.whitelistUrls.length) { + return true; + } - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var url = this._getEventFilterUrl(event); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + return !url ? true : options.whitelistUrls.some(function (pattern) { + return isMatchingPattern(url, pattern); + }); + }; + /** JSDoc */ - this._logDebug('error', 'Error: Raven has not been configured.'); - } - return false; + InboundFilters.prototype._mergeOptions = function (clientOptions) { + if (clientOptions === void 0) { + clientOptions = {}; } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$2.RavenConfig; + return { + blacklistUrls: __spread(this._options.blacklistUrls || [], clientOptions.blacklistUrls || []), + ignoreErrors: __spread(this._options.ignoreErrors || [], clientOptions.ignoreErrors || [], DEFAULT_IGNORE_ERRORS), + ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true, + whitelistUrls: __spread(this._options.whitelistUrls || [], clientOptions.whitelistUrls || []) + }; + }; + /** JSDoc */ - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = objectMerge$1({ - eventId: this.lastEventId(), - dsn: this._dsn, - user: this._globalContext.user || {} - }, options); - if (!options.eventId) { - throw new configError('Missing eventId'); + InboundFilters.prototype._getPossibleEventMessages = function (event) { + if (event.message) { + return [event.message]; } - if (!options.dsn) { - throw new configError('Missing DSN'); + if (event.exception) { + try { + var _a = event.exception.values && event.exception.values[0] || {}, + _b = _a.type, + type = _b === void 0 ? '' : _b, + _c = _a.value, + value = _c === void 0 ? '' : _c; + + return ["" + value, type + ": " + value]; + } catch (oO) { + logger.error("Cannot extract message for event " + getEventDescription(event)); + return []; + } } - var encode = encodeURIComponent; - var encodedOptions = []; + return []; + }; + /** JSDoc */ - for (var key in options) { - if (key === 'user') { - var user = options.user; - if (user.name) encodedOptions.push('name=' + encode(user.name)); - if (user.email) encodedOptions.push('email=' + encode(user.email)); - } else { - encodedOptions.push(encode(key) + '=' + encode(options[key])); + + InboundFilters.prototype._getEventFilterUrl = function (event) { + try { + if (event.stacktrace) { + var frames_1 = event.stacktrace.frames; + return frames_1 && frames_1[frames_1.length - 1].filename || null; + } + + if (event.exception) { + var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames; + return frames_2 && frames_2[frames_2.length - 1].filename || null; } + + return null; + } catch (oO) { + logger.error("Cannot extract url for event " + getEventDescription(event)); + return null; } + }; + /** + * @inheritDoc + */ - var globalServer = this._getGlobalServer(this._parseDSN(options.dsn)); - var script = _document.createElement('script'); + InboundFilters.id = 'InboundFilters'; + return InboundFilters; + }(); - script.async = true; - script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&'); + var UNKNOWN_FUNCTION = '?'; // Chromium based browsers: Chrome, Brave, new Opera, new Edge - (_document.head || _document.body).appendChild(script); - }, + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; // gecko regex: `(?:bundle|\d+\.js)`: `bundle` is for react native, `\d+\.js` also but specifically for ram bundles because it + // generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js + // We need this specific case for now because we want no other regex to match. - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + /** JSDoc */ + + function computeStackTrace(ex) { + // tslint:disable:no-unsafe-any + var stack = null; + var popSize = ex && ex.framesToPop; + + try { + // This must be tried first because Opera 10 *destroys* + // its stacktrace property if you try to access the stack + // property first!! + stack = computeStackTraceFromStacktraceProp(ex); + + if (stack) { + return popFrames(stack, popSize); } + } catch (e) {// no-empty + } - for (key in options) { - if (hasKey$1(options, key)) { - evt[key] = options[key]; - } + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return popFrames(stack, popSize); } + } catch (e) {// no-empty + } - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + return { + message: extractMessage(ex), + name: ex && ex.name, + stack: [], + failed: true + }; + } + /** JSDoc */ + // tslint:disable-next-line:cyclomatic-complexity + + function computeStackTraceFromStackProp(ex) { + // tslint:disable:no-conditional-assignment + if (!ex || !ex.stack) { + return null; + } + + var stack = []; + var lines = ex.stack.split('\n'); + var isEval; + var submatch; + var parts; + var element; + + for (var i = 0; i < lines.length; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column } + + element = { + // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at ` + // prefix here seems like the quickest solution for now. + url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[1] = parts[1] || "eval"; + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = ''; // no column when eval + } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. - - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. - - var target; + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - try { - target = htmlTreeAsString$1(evt.target); - } catch (e) { - target = '<unknown>'; - } + stack.push(element); + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, + if (!stack.length) { + return null; + } - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + return { + message: extractMessage(ex), + name: ex.name, + stack: stack + }; + } + /** JSDoc */ - return function (evt) { - var target; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; + function computeStackTraceFromStacktraceProp(ex) { + if (!ex || !ex.stacktrace) { + return null; + } // Access and store the stacktrace property before doing ANYTHING + // else to it because Opera is not very good at providing it + // reliably in other circumstances. + + + var stacktrace = ex.stacktrace; + var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i; + var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i; + var lines = stacktrace.split('\n'); + var stack = []; + var parts; + + for (var line = 0; line < lines.length; line += 2) { + // tslint:disable:no-conditional-assignment + var element = null; + + if (parts = opera10Regex.exec(lines[line])) { + element = { + url: parts[2], + func: parts[3], + args: [], + line: +parts[1], + column: null + }; + } else if (parts = opera11Regex.exec(lines[line])) { + element = { + url: parts[6], + func: parts[3] || parts[4], + args: parts[5] ? parts[5].split(',') : [], + line: +parts[1], + column: +parts[2] + }; + } + + if (element) { + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + stack.push(element); + } + } + + if (!stack.length) { + return null; + } - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + return { + message: extractMessage(ex), + name: ex.name, + stack: stack + }; + } + /** Remove N number of frames from the stack */ - var timeout = self._keypressTimeout; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + function popFrames(stacktrace, popSize) { + try { + return _assign({}, stacktrace, { + stack: stacktrace.stack.slice(popSize) + }); + } catch (e) { + return stacktrace; + } + } + /** + * There are cases where stacktrace.message is an Event object + * https://github.com/getsentry/sentry-javascript/issues/1949 + * In this specific case we try to extract stacktrace.message.error.message + */ + + + function extractMessage(ex) { + var message = ex && ex.message; + + if (!message) { + return 'No error message'; + } + + if (message.error && typeof message.error.message === 'string') { + return message.error.message; + } + + return message; + } + + var STACKTRACE_LIMIT = 50; + /** + * This function creates an exception from an TraceKitStackTrace + * @param stacktrace TraceKitStackTrace that will be converted to an exception + * @hidden + */ + + function exceptionFromStacktrace(stacktrace) { + var frames = prepareFramesForEvent(stacktrace.stack); + var exception = { + type: stacktrace.name, + value: stacktrace.message + }; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); + if (frames && frames.length) { + exception.stacktrace = { + frames: frames }; - }, + } // tslint:disable-next-line:strict-type-predicates - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl$1(this._location.href); - var parsedTo = parseUrl$1(to); - var parsedFrom = parseUrl$1(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves - - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + if (exception.type === undefined && exception.value === '') { + exception.value = 'Unrecoverable error caught'; + } - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + return exception; + } + /** + * @hidden + */ + + function eventFromPlainObject(exception, syntheticException, rejection) { + var event = { + exception: { + values: [{ + type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error', + value: "Non-Error " + (rejection ? 'promise rejection' : 'exception') + " captured with keys: " + extractExceptionKeysForMessage(exception) + }] + }, + extra: { + __serialized__: normalizeToSize(exception) + } + }; - return self._originalFunctionToString.apply(this, arguments); + if (syntheticException) { + var stacktrace = computeStackTrace(syntheticException); + var frames_1 = prepareFramesForEvent(stacktrace.stack); + event.stacktrace = { + frames: frames_1 }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + } + + return event; + } + /** + * @hidden + */ + + function eventFromStacktrace(stacktrace) { + var exception = exceptionFromStacktrace(stacktrace); + return { + exception: { + values: [exception] } - }, + }; + } + /** + * @hidden + */ - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + function prepareFramesForEvent(stack) { + if (!stack || !stack.length) { + return []; + } - var originalCallback = args[0]; + var localStack = stack; + var firstFrameFunction = localStack[0].func || ''; + var lastFrameFunction = localStack[localStack.length - 1].func || ''; // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call) - if (isFunction$1(originalCallback)) { - args[0] = self.wrap({ - mechanism: { - type: 'instrument', - data: { - function: orig.name || '<anonymous>' - } - } - }, originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) { + localStack = localStack.slice(1); + } // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call) - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } + if (lastFrameFunction.indexOf('sentryWrapped') !== -1) { + localStack = localStack.slice(0, -1); + } // The frame where the crash happened, should be the last entry in the array - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$2[global] && _window$2[global].prototype; - - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill$1(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap({ - mechanism: { - type: 'instrument', - data: { - target: global, - function: 'handleEvent', - handler: fn && fn.name || '<anonymous>' - } - } - }, fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function - - - var before, clickHandler, keypressHandler; - - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); - - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; - - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + return localStack.map(function (frame) { + return { + colno: frame.column === null ? undefined : frame.column, + filename: frame.url || localStack[0].url, + function: frame.func || '?', + in_app: true, + lineno: frame.line === null ? undefined : frame.line + }; + }).slice(0, STACKTRACE_LIMIT).reverse(); + } - return orig.call(this, evtName, self.wrap({ - mechanism: { - type: 'instrument', - data: { - target: global, - function: 'addEventListener', - handler: fn && fn.name || '<anonymous>' - } - } - }, fn, before), capture, secure); - }; - }, wrappedBuiltIns); - fill$1(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + /** JSDoc */ - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + function eventFromUnknownInput(exception, syntheticException, options) { + if (options === void 0) { + options = {}; + } - fill$1(_window$2, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill$1(_window$2, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var event; - if (_window$2.requestAnimationFrame) { - fill$1(_window$2, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap({ - mechanism: { - type: 'instrument', - data: { - function: 'requestAnimationFrame', - handler: orig && orig.name || '<anonymous>' - } - } - }, cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + if (isErrorEvent(exception) && exception.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + var errorEvent = exception; + exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment + + event = eventFromStacktrace(computeStackTrace(exception)); + return event; + } + if (isDOMError(exception) || isDOMException(exception)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var domException = exception; + var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException'); + var message = domException.message ? name_1 + ": " + domException.message : name_1; + event = eventFromString(message, syntheticException, options); + addExceptionTypeValue(event, message); + return event; + } - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + if (isError(exception)) { + // we have a real Error object, do nothing + event = eventFromStacktrace(computeStackTrace(exception)); + return event; + } - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, + if (isPlainObject(exception) || isEvent(exception)) { + // If it is plain Object or Event, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + var objectException = exception; + event = eventFromPlainObject(objectException, syntheticException, options.rejection); + addExceptionMechanism(event, { + synthetic: true + }); + return event; + } // If none of previous checks were valid, then it means that it's not: + // - an instance of DOMError + // - an instance of DOMException + // - an instance of Event + // - an instance of Error + // - a valid ErrorEvent (one with an error property) + // - a plain Object + // + // So bail out and capture it as a simple message: + + + event = eventFromString(exception, syntheticException, options); + addExceptionTypeValue(event, "" + exception, undefined); + addExceptionMechanism(event, { + synthetic: true + }); + return event; + } // this._options.attachStacktrace + /** JSDoc */ + + function eventFromString(input, syntheticException, options) { + if (options === void 0) { + options = {}; + } + + var event = { + message: input + }; + + if (options.attachStacktrace && syntheticException) { + var stacktrace = computeStackTrace(syntheticException); + var frames_1 = prepareFramesForEvent(stacktrace.stack); + event.stacktrace = { + frames: frames_1 + }; + } + + return event; + } + + /** Base Transport class implementation */ + + var BaseTransport = + /** @class */ + function () { + function BaseTransport(options) { + this.options = options; + /** A simple buffer holding all requests. */ + + this._buffer = new PromiseBuffer(30); + this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth(); + } /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option + * @inheritDoc */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction$1(xhr[prop])) { - fill$1(xhr, prop, function (orig) { - return self.wrap({ - mechanism: { - type: 'instrument', - data: { - function: prop, - handler: orig && orig.name || '<anonymous>' - } - } - }, orig); - }); // intentionally don't track filled methods on XHR instances - } - } - - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$2) { - var xhrproto = _window$2.XMLHttpRequest && _window$2.XMLHttpRequest.prototype; - fill$1(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString$1(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill$1(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + BaseTransport.prototype.sendEvent = function (_) { + throw new SentryError('Transport Class has to implement `sendEvent` method'); + }; + /** + * @inheritDoc + */ - var props = ['onload', 'onerror', 'onprogress']; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + BaseTransport.prototype.close = function (timeout) { + return this._buffer.drain(timeout); + }; - if ('onreadystatechange' in xhr && isFunction$1(xhr.onreadystatechange)) { - fill$1(xhr, 'onreadystatechange', function (orig) { - return self.wrap({ - mechanism: { - type: 'instrument', - data: { - function: 'onreadystatechange', - handler: orig && orig.name || '<anonymous>' - } - } - }, orig, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + return BaseTransport; + }(); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + var global$3 = getGlobalObject(); + /** `fetch` based transport */ - if (autoBreadcrumbs.xhr && supportsFetch$1()) { - fill$1(_window$2, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + var FetchTransport = + /** @class */ + function (_super) { + __extends(FetchTransport, _super); + + function FetchTransport() { + var _this = _super !== null && _super.apply(this, arguments) || this; + /** Locks transport after receiving 429 response */ - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - var fetchInput = args[0]; - var method = 'GET'; - var url; + _this._disabledUntil = new Date(Date.now()); + return _this; + } + /** + * @inheritDoc + */ - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$2 && fetchInput instanceof _window$2.Request) { - url = fetchInput.url; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + FetchTransport.prototype.sendEvent = function (event) { + var _this = this; + if (new Date(Date.now()) < this._disabledUntil) { + return Promise.reject({ + event: event, + reason: "Transport locked till " + this._disabledUntil + " due to too many requests.", + status: 429 + }); + } - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var defaultOptions = { + body: JSON.stringify(event), + method: 'POST', + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; - if (args[1] && args[1].method) { - method = args[1].method; - } + if (this.options.headers !== undefined) { + defaultOptions.headers = this.options.headers; + } - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - })['catch'](function (err) { - // if there is an error performing the request - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData, - level: 'error' - }); - throw err; + return this._buffer.add(new SyncPromise(function (resolve, reject) { + global$3.fetch(_this.url, defaultOptions).then(function (response) { + var status = Status.fromHttpCode(response.status); + + if (status === Status.Success) { + resolve({ + status: status }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return; + } + + if (status === Status.RateLimit) { + var now = Date.now(); + _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After'))); + logger.warn("Too many requests, backing off till: " + _this._disabledUntil); + } + reject(response); + }).catch(reject); + })); + }; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + return FetchTransport; + }(BaseTransport); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else if (_document.attachEvent) { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + /** `XHR` based transport */ - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var XHRTransport = + /** @class */ + function (_super) { + __extends(XHRTransport, _super); + + function XHRTransport() { + var _this = _super !== null && _super.apply(this, arguments) || this; + /** Locks transport after receiving 429 response */ - var chrome = _window$2.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$2.history && _window$2.history.pushState && _window$2.history.replaceState; + _this._disabledUntil = new Date(Date.now()); + return _this; + } + /** + * @inheritDoc + */ - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$2.onpopstate; - _window$2.onpopstate = function () { - var currentHref = self._location.href; + XHRTransport.prototype.sendEvent = function (event) { + var _this = this; + + if (new Date(Date.now()) < this._disabledUntil) { + return Promise.reject({ + event: event, + reason: "Transport locked till " + this._disabledUntil + " due to too many requests.", + status: 429 + }); + } - self._captureUrlChange(self._lastHref, currentHref); + return this._buffer.add(new SyncPromise(function (resolve, reject) { + var request = new XMLHttpRequest(); - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; } - }; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional - - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + var status = Status.fromHttpCode(request.status); - return origHistFunction.apply(this, arguments); - }; - }; + if (status === Status.Success) { + resolve({ + status: status + }); + return; + } - fill$1(_window$2.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill$1(_window$2.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + if (status === Status.RateLimit) { + var now = Date.now(); + _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After'))); + logger.warn("Too many requests, backing off till: " + _this._disabledUntil); + } - if (autoBreadcrumbs.console && 'console' in _window$2 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); + reject(request); }; - each$1(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + request.open('POST', _this.url); - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; + for (var header in _this.options.headers) { + if (_this.options.headers.hasOwnProperty(header)) { + request.setRequestHeader(header, _this.options.headers[header]); + } + } + + request.send(JSON.stringify(event)); + })); + }; + + return XHRTransport; + }(BaseTransport); + + /** + * The Sentry Browser SDK Backend. + * @hidden + */ + + var BrowserBackend = + /** @class */ + function (_super) { + __extends(BrowserBackend, _super); + + function BrowserBackend() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @inheritDoc + */ + + + BrowserBackend.prototype._setupTransport = function () { + if (!this._options.dsn) { + // We return the noop transport here in case there is no Dsn. + return _super.prototype._setupTransport.call(this); } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO - each$1(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); + var transportOptions = _assign({}, this._options.transportOptions, { + dsn: this._options.dsn }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); + if (this._options.transport) { + return new this._options.transport(transportOptions); } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + if (supportsFetch()) { + return new FetchTransport(transportOptions); } - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + return new XHRTransport(transportOptions); + }; + /** + * @inheritDoc + */ + + + BrowserBackend.prototype.eventFromException = function (exception, hint) { + var syntheticException = hint && hint.syntheticException || undefined; + var event = eventFromUnknownInput(exception, syntheticException, { + attachStacktrace: this._options.attachStacktrace + }); + addExceptionMechanism(event, { + handled: true, + type: 'generic' + }); + event.level = Severity.Error; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; + if (hint && hint.event_id) { + event.event_id = hint.event_id; } - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo(stackInfo, options) { - options = options || {}; - options.mechanism = options.mechanism || { - type: 'onerror', - handled: false - }; // if we are intentionally ignoring errors via onerror, bail out + return SyncPromise.resolve(event); + }; + /** + * @inheritDoc + */ + - if (!this._ignoreOnError) { - this._handleStackInfo(stackInfo, options); + BrowserBackend.prototype.eventFromMessage = function (message, level, hint) { + if (level === void 0) { + level = Severity.Info; } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options + var syntheticException = hint && hint.syntheticException || undefined; + var event = eventFromString(message, syntheticException, { + attachStacktrace: this._options.attachStacktrace }); + event.level = level; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + if (hint && hint.event_id) { + event.event_id = hint.event_id; + } - if (stackInfo.stack && stackInfo.stack.length) { - each$1(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + return SyncPromise.resolve(event); + }; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return BrowserBackend; + }(BaseBackend); - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + var SDK_NAME = 'sentry.javascript.browser'; + var SDK_VERSION = '5.15.5'; + + /** + * The Sentry Browser SDK Client. + * + * @see BrowserOptions for documentation on configuration options. + * @see SentryClient for usage documentation. + */ + + var BrowserClient = + /** @class */ + function (_super) { + __extends(BrowserClient, _super); + /** + * Creates a new Browser SDK instance. + * + * @param options Configuration options for this SDK. + */ - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + function BrowserClient(options) { + if (options === void 0) { + options = {}; } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + return _super.call(this, BrowserBackend, options) || this; + } + /** + * @inheritDoc + */ + + + BrowserClient.prototype._prepareEvent = function (event, scope, hint) { + event.platform = event.platform || 'javascript'; + event.sdk = _assign({}, event.sdk, { + name: SDK_NAME, + packages: __spread(event.sdk && event.sdk.packages || [], [{ + name: 'npm:@sentry/browser', + version: SDK_VERSION + }]), + version: SDK_VERSION + }); + return _super.prototype._prepareEvent.call(this, event, scope, hint); + }; + /** + * Show a report dialog to the user to send feedback to a specific event. + * + * @param options Set individual options for the dialog + */ + + + BrowserClient.prototype.showReportDialog = function (options) { + if (options === void 0) { + options = {}; + } // doesn't work without a document (React Native) + - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + var document = getGlobalObject().document; + + if (!document) { return; } - var stacktrace; + if (!this._isEnabled()) { + logger.error('Trying to call showReportDialog with Sentry Client is disabled'); + return; + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + var dsn = options.dsn || this.getDsn(); - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + if (!options.eventId) { + logger.error('Missing `eventId` option in showReportDialog call'); + return; } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if (!dsn) { + logger.error('Missing `Dsn` option in showReportDialog call'); return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var script = document.createElement('script'); + script.async = true; + script.src = new API(dsn).getReportDialogEndpoint(options); + + if (options.onLoad) { + script.onload = options.onLoad; } - var data = objectMerge$1({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - transaction: fileurl - }, options); - var ex = data.exception.values[0]; + (document.head || document.body).appendChild(script); + }; - if (ex.type == null && ex.value === '') { - ex.value = 'Unrecoverable error caught'; - } // Move mechanism from options to exception interface - // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be - // too much + return BrowserClient; + }(BaseClient); + var ignoreOnError = 0; + /** + * @hidden + */ - if (!data.exception.mechanism && data.mechanism) { - data.exception.mechanism = data.mechanism; - delete data.mechanism; - } + function shouldIgnoreOnError() { + return ignoreOnError > 0; + } + /** + * @hidden + */ - data.exception.mechanism = objectMerge$1({ - type: 'generic', - handled: true - }, data.exception.mechanism || {}); // Fire away! + function ignoreNextOnError() { + // onerror should trigger before setTimeout + ignoreOnError += 1; + setTimeout(function () { + ignoreOnError -= 1; + }); + } + /** + * Instruments the given function and sends an event to Sentry every time the + * function throws an exception. + * + * @param fn A function to wrap. + * @returns The wrapped function. + * @hidden + */ - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + function wrap$1(fn, options, before) { + if (options === void 0) { + options = {}; + } // tslint:disable-next-line:strict-type-predicates - if (data.message) { - data.message = truncate$1(data.message, max); - } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate$1(exception.value, max); + if (typeof fn !== 'function') { + return fn; + } + + try { + // We don't wanna wrap it twice + if (fn.__sentry__) { + return fn; + } // If this has already been wrapped in the past, return that wrapped function + + + if (fn.__sentry_wrapped__) { + return fn.__sentry_wrapped__; } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return fn; + } - var request = data.request; + var sentryWrapped = function sentryWrapped() { + var args = Array.prototype.slice.call(arguments); // tslint:disable:no-unsafe-any - if (request) { - if (request.url) { - request.url = truncate$1(request.url, this._globalOptions.maxUrlLength); + try { + // tslint:disable-next-line:strict-type-predicates + if (before && typeof before === 'function') { + before.apply(this, arguments); } - if (request.Referer) { - request.Referer = truncate$1(request.Referer, this._globalOptions.maxUrlLength); - } + var wrappedArguments = args.map(function (arg) { + return wrap$1(arg, options); + }); + + if (fn.handleEvent) { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means the sentry.javascript SDK caught an error invoking your application code. This + // is expected behavior and NOT indicative of a bug with sentry.javascript. + return fn.handleEvent.apply(this, wrappedArguments); + } // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means the sentry.javascript SDK caught an error invoking your application code. This + // is expected behavior and NOT indicative of a bug with sentry.javascript. + + + return fn.apply(this, wrappedArguments); // tslint:enable:no-unsafe-any + } catch (ex) { + ignoreNextOnError(); + withScope(function (scope) { + scope.addEventProcessor(function (event) { + var processedEvent = _assign({}, event); + + if (options.mechanism) { + addExceptionTypeValue(processedEvent, undefined, undefined); + addExceptionMechanism(processedEvent, options.mechanism); + } + + processedEvent.extra = _assign({}, processedEvent.extra, { + arguments: args + }); + return processedEvent; + }); + captureException(ex); + }); + throw ex; } + }; // Accessing some objects may throw + // ref: https://github.com/getsentry/sentry-javascript/issues/1168 - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; - - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject$2(crumb.data) || objectFrozen$1(crumb.data)) continue; - data = objectMerge$1({}, crumb.data); - - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate$1(data[urlProp], this._globalOptions.maxUrlLength); - } + try { + for (var property in fn) { + if (Object.prototype.hasOwnProperty.call(fn, property)) { + sentryWrapped[property] = fn[property]; } - - breadcrumbs.values[i].data = data; } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + } catch (_oO) {} // tslint:disable-line:no-empty - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': _navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + fn.prototype = fn.prototype || {}; + sentryWrapped.prototype = fn.prototype; + Object.defineProperty(fn, '__sentry_wrapped__', { + enumerable: false, + value: sentryWrapped + }); // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice - if (_window$2.location && _window$2.location.href) { - httpData.url = _window$2.location.href; + Object.defineProperties(sentryWrapped, { + __sentry__: { + enumerable: false, + value: true + }, + __sentry_original__: { + enumerable: false, + value: fn } + }); // Restore original function name (not all browsers allow that) - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + try { + var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name'); + + if (descriptor.configurable) { + Object.defineProperty(sentryWrapped, 'name', { + get: function get() { + return fn.name; + } + }); } + } catch (_oO) { + /*no-empty*/ + } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + return sentryWrapped; + } + /** Global handlers */ + + var GlobalHandlers = + /** @class */ + function () { + /** JSDoc */ + function GlobalHandlers(options) { + /** + * @inheritDoc + */ + this.name = GlobalHandlers.id; + /** JSDoc */ + + this._onErrorHandlerInstalled = false; + /** JSDoc */ + + this._onUnhandledRejectionHandlerInstalled = false; + this._options = _assign({ + onerror: true, + onunhandledrejection: true + }, options); + } /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * @inheritDoc */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.transaction !== last.transaction // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace$1(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException$1(current.exception, last.exception); - } else if (current.fingerprint || last.fingerprint) { - return Boolean(current.fingerprint && last.fingerprint) && JSON.stringify(current.fingerprint) === JSON.stringify(last.fingerprint); + + GlobalHandlers.prototype.setupOnce = function () { + Error.stackTraceLimit = 50; + + if (this._options.onerror) { + logger.log('Global Handler attached: onerror'); + + this._installGlobalOnErrorHandler(); } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + if (this._options.onunhandledrejection) { + logger.log('Global Handler attached: onunhandledrejection'); + + this._installGlobalOnUnhandledRejectionHandler(); + } + }; + /** JSDoc */ + + + GlobalHandlers.prototype._installGlobalOnErrorHandler = function () { + var _this = this; + + if (this._onErrorHandlerInstalled) { return; } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + addInstrumentationHandler({ + callback: function callback(data) { + var error = data.error; + var currentHub = getCurrentHub(); + var hasIntegration = currentHub.getIntegration(GlobalHandlers); + var isFailedOwnDelivery = error && error.__sentry_own_request__ === true; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) { + return; + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch$1()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var client = currentHub.getClient(); + var event = isPrimitive(error) ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column) : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, { + attachStacktrace: client && client.getOptions().attachStacktrace, + rejection: false + }), data.url, data.line, data.column); + addExceptionMechanism(event, { + handled: false, + type: 'onerror' + }); + currentHub.captureEvent(event, { + originalException: error + }); + }, + type: 'error' + }); + this._onErrorHandlerInstalled = true; + }; + /** JSDoc */ - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () { + var _this = this; + + if (this._onUnhandledRejectionHandlerInstalled) { + return; } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + addInstrumentationHandler({ + callback: function callback(e) { + var error = e; // dig the object of the rejection out of known event types - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + try { + // PromiseRejectionEvents store the object of the rejection under 'reason' + // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent + if ('reason' in e) { + error = e.reason; + } // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents + // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into + // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec + // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and + // https://github.com/getsentry/sentry-javascript/issues/2380 + else if ('detail' in e && 'reason' in e.detail) { + error = e.detail.reason; + } + } catch (_oO) {// no-empty + } - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + var currentHub = getCurrentHub(); + var hasIntegration = currentHub.getIntegration(GlobalHandlers); + var isFailedOwnDelivery = error && error.__sentry_own_request__ === true; + if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) { + return true; + } - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge$1(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var client = currentHub.getClient(); + var event = isPrimitive(error) ? _this._eventFromIncompleteRejection(error) : eventFromUnknownInput(error, undefined, { + attachStacktrace: client && client.getOptions().attachStacktrace, + rejection: true + }); + event.level = Severity.Error; + addExceptionMechanism(event, { + handled: false, + type: 'onunhandledrejection' + }); + currentHub.captureEvent(event, { + originalException: error + }); + return; + }, + type: 'unhandledrejection' + }); + this._onUnhandledRejectionHandlerInstalled = true; + }; + /** + * This function creates a stack from an old, error-less onerror handler. + */ - data.tags = objectMerge$1(objectMerge$1({}, this._globalContext.tags), data.tags); - data.extra = objectMerge$1(objectMerge$1({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - data.extra['session:duration'] = now() - this._startTime; + GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) { + var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i; // If 'message' is ErrorEvent, get real message from inside - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + var message = isErrorEvent(msg) ? msg.message : msg; + var name; + + if (isString(message)) { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + var event = { + exception: { + values: [{ + type: name || 'Error', + value: message + }] + } + }; + return this._enhanceEventWithInitialFrame(event, url, line, column); + }; + /** + * This function creates an Event from an TraceKitStackTrace that has part of it missing. + */ + + + GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) { + return { + exception: { + values: [{ + type: 'UnhandledRejection', + value: "Non-Error promise rejection captured with value: " + error + }] + } + }; + }; + /** JSDoc */ + + + GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) { + event.exception = event.exception || {}; + event.exception.values = event.exception.values || []; + event.exception.values[0] = event.exception.values[0] || {}; + event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {}; + event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || []; + var colno = isNaN(parseInt(column, 10)) ? undefined : column; + var lineno = isNaN(parseInt(line, 10)) ? undefined : line; + var filename = isString(url) && url.length > 0 ? url : getLocationHref(); + + if (event.exception.values[0].stacktrace.frames.length === 0) { + event.exception.values[0].stacktrace.frames.push({ + colno: colno, + filename: filename, + function: '?', + in_app: true, + lineno: lineno + }); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + return event; + }; + /** + * @inheritDoc + */ + + + GlobalHandlers.id = 'GlobalHandlers'; + return GlobalHandlers; + }(); + + /** Wrap timer functions and event targets to catch errors and provide better meta data */ + var TryCatch = + /** @class */ + function () { + function TryCatch() { + /** JSDoc */ + this._ignoreOnError = 0; + /** + * @inheritDoc + */ - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + this.name = TryCatch.id; + } + /** JSDoc */ - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - if (globalOptions.serverName) data.server_name = globalOptions.serverName; - data = this._sanitizeData(data); // Cleanup empty properties before sending them to the server + TryCatch.prototype._wrapTimeFunction = function (original) { + return function () { + var args = []; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject$1(data[key])) { - delete data[key]; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; } - }); - if (isFunction$1(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + var originalCallback = args[0]; + args[0] = wrap$1(originalCallback, { + mechanism: { + data: { + function: getFunctionName(original) + }, + handled: true, + type: 'instrument' + } + }); + return original.apply(this, args); + }; + }; + /** JSDoc */ - if (!data || isEmptyObject$1(data)) { - return; - } // Check if the request should be filtered or not + TryCatch.prototype._wrapRAF = function (original) { + return function (callback) { + return original(wrap$1(callback, { + mechanism: { + data: { + function: 'requestAnimationFrame', + handler: getFunctionName(original) + }, + handled: true, + type: 'instrument' + } + })); + }; + }; + /** JSDoc */ - if (isFunction$1(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + TryCatch.prototype._wrapEventTarget = function (target) { + var global = getGlobalObject(); + var proto = global[target] && global[target].prototype; + + if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) { return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + } + fill(proto, 'addEventListener', function (original) { + return function (eventName, fn, options) { + try { + // tslint:disable-next-line:no-unbound-method strict-type-predicates + if (typeof fn.handleEvent === 'function') { + fn.handleEvent = wrap$1(fn.handleEvent.bind(fn), { + mechanism: { + data: { + function: 'handleEvent', + handler: getFunctionName(fn), + target: target + }, + handled: true, + type: 'instrument' + } + }); + } + } catch (err) {// can sometimes get 'Permission denied to access property "handle Event' + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return original.call(this, eventName, wrap$1(fn, { + mechanism: { + data: { + function: 'addEventListener', + handler: getFunctionName(fn), + target: target + }, + handled: true, + type: 'instrument' + } + }), options); + }; + }); + fill(proto, 'removeEventListener', function (original) { + return function (eventName, fn, options) { + var callback = fn; - return; + try { + callback = callback && (callback.__sentry_wrapped__ || callback); + } catch (e) {// ignore, accessing __sentry_wrapped__ will throw in some Selenium environments + } + + return original.call(this, eventName, callback, options); + }; + }); + }; + /** JSDoc */ + + + TryCatch.prototype._wrapXHR = function (originalSend) { + return function () { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + var xhr = this; // tslint:disable-line:no-this-assignment + + var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange']; + xmlHttpRequestProps.forEach(function (prop) { + if (prop in xhr && typeof xhr[prop] === 'function') { + fill(xhr, prop, function (original) { + var wrapOptions = { + mechanism: { + data: { + function: prop, + handler: getFunctionName(original) + }, + handled: true, + type: 'instrument' + } + }; // If Instrument integration has been called before TryCatch, get the name of original function + + if (original.__sentry_original__) { + wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__); + } // Otherwise wrap directly + + + return wrap$1(original, wrapOptions); + }); + } + }); + return originalSend.apply(this, args); + }; + }; + /** + * Wrap timer functions and event targets to catch errors + * and provide better metadata. + */ + + + TryCatch.prototype.setupOnce = function () { + this._ignoreOnError = this._ignoreOnError; + var global = getGlobalObject(); + fill(global, 'setTimeout', this._wrapTimeFunction.bind(this)); + fill(global, 'setInterval', this._wrapTimeFunction.bind(this)); + fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this)); + + if ('XMLHttpRequest' in global) { + fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this)); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'].forEach(this._wrapEventTarget.bind(this)); + }; + /** + * @inheritDoc + */ + + + TryCatch.id = 'TryCatch'; + return TryCatch; + }(); + + /** + * Default Breadcrumbs instrumentations + * TODO: Deprecated - with v6, this will be renamed to `Instrument` + */ + + var Breadcrumbs = + /** @class */ + function () { + /** + * @inheritDoc + */ + function Breadcrumbs(options) { + /** + * @inheritDoc + */ + this.name = Breadcrumbs.id; + this._options = _assign({ + console: true, + dom: true, + fetch: true, + history: true, + sentry: true, + xhr: true + }, options); + } + /** + * Creates breadcrumbs from console API calls + */ + + + Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) { + var breadcrumb = { + category: 'console', + data: { + arguments: handlerData.args, + logger: 'console' + }, + level: Severity.fromString(handlerData.level), + message: safeJoin(handlerData.args, ' ') + }; + + if (handlerData.level === 'assert') { + if (handlerData.args[0] === false) { + breadcrumb.message = "Assertion failed: " + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'); + breadcrumb.data.arguments = handlerData.args.slice(1); + } else { + // Don't capture a breadcrumb for passed assertions + return; } - } else { - this._sendProcessedPayload(data); } - }, - _sanitizeData: function _sanitizeData(data) { - return sanitize$1(data, this._globalOptions.sanitizeKeys); - }, - _getUuid: function _getUuid() { - return uuid4$1(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + getCurrentHub().addBreadcrumb(breadcrumb, { + input: handlerData.args, + level: handlerData.level + }); + }; + /** + * Creates breadcrumbs from DOM API calls + */ + - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + Breadcrumbs.prototype._domBreadcrumb = function (handlerData) { + var target; // Accessing event.target can throw (see getsentry/raven-js#838, #768) + try { + target = handlerData.event.target ? htmlTreeAsString(handlerData.event.target) : htmlTreeAsString(handlerData.event); + } catch (e) { + target = '<unknown>'; + } + + if (target.length === 0) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + } + getCurrentHub().addBreadcrumb({ + category: "ui." + handlerData.name, + message: target + }, { + event: handlerData.event, + name: handlerData.name + }); + }; + /** + * Creates breadcrumbs from XHR API calls + */ - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - this._lastData = data; + Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) { + if (handlerData.endTimestamp) { + // We only capture complete, non-sentry requests + if (handlerData.xhr.__sentry_own_request__) { + return; + } - this._logDebug('debug', 'Raven about to send:', data); + getCurrentHub().addBreadcrumb({ + category: 'xhr', + data: handlerData.xhr.__sentry_xhr__, + type: 'http' + }, { + xhr: handlerData.xhr + }); + return; + } // We only capture issued sentry requests + + + if (this._options.sentry && handlerData.xhr.__sentry_own_request__) { + addSentryBreadcrumb(handlerData.args[0]); + } + }; + /** + * Creates breadcrumbs from fetch API calls + */ - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) { + // We only capture complete fetch requests + if (!handlerData.endTimestamp) { + return; } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var client = getCurrentHub().getClient(); + var dsn = client && client.getDsn(); - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (this._options.sentry && dsn) { + var filterUrl = new API(dsn).getStoreEndpoint(); // if Sentry key appears in URL, don't capture it as a request + // but rather as our own 'sentry' type breadcrumb + + if (filterUrl && handlerData.fetchData.url.indexOf(filterUrl) !== -1 && handlerData.fetchData.method === 'POST' && handlerData.args[1] && handlerData.args[1].body) { + addSentryBreadcrumb(handlerData.args[1].body); + return; + } + } + if (handlerData.error) { + getCurrentHub().addBreadcrumb({ + category: 'fetch', + data: _assign({}, handlerData.fetchData, { + status_code: handlerData.response.status + }), + level: Severity.Error, + type: 'http' + }, { + data: handlerData.error, + input: handlerData.args + }); + } else { + getCurrentHub().addBreadcrumb({ + category: 'fetch', + data: _assign({}, handlerData.fetchData, { + status_code: handlerData.response.status + }), + type: 'http' + }, { + input: handlerData.args, + response: handlerData.response }); } + }; + /** + * Creates breadcrumbs from history API calls + */ - var url = this._globalEndpoint; - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) { + var global = getGlobalObject(); + var from = handlerData.from; + var to = handlerData.to; + var parsedLoc = parseUrl(global.location.href); + var parsedFrom = parseUrl(from); + var parsedTo = parseUrl(to); // Initial pushState doesn't provide `from` information - self._triggerEvent('success', { - data: data, - src: url - }); + if (!parsedFrom.path) { + parsedFrom = parsedLoc; + } // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); - if (error.request) { - self._setBackoffState(error.request); - } + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) { + // tslint:disable-next-line:no-parameter-reassignment + to = parsedTo.relative; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) { + // tslint:disable-next-line:no-parameter-reassignment + from = parsedFrom.relative; + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + getCurrentHub().addBreadcrumb({ + category: 'navigation', + data: { + from: from, + to: to } }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode$1(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; + }; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - Console API + * - DOM API (click/typing) + * - XMLHttpRequest API + * - Fetch API + * - History API + */ - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } + Breadcrumbs.prototype.setupOnce = function () { + var _this = this; - if (supportsFetch$1()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge$1({}, this._fetchDefaults); - var fetchOptions = objectMerge$1(defaultFetchOptions, evaluatedFetchParameters); + if (this._options.console) { + addInstrumentationHandler({ + callback: function callback() { + var args = []; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } - return _window$2.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + _this._consoleBreadcrumb.apply(_this, __spread(args)); + }, + type: 'console' + }); + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + if (this._options.dom) { + addInstrumentationHandler({ + callback: function callback() { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + + _this._domBreadcrumb.apply(_this, __spread(args)); + }, + type: 'dom' }); } - var request = _window$2.XMLHttpRequest && new _window$2.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + if (this._options.xhr) { + addInstrumentationHandler({ + callback: function callback() { + var args = []; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative + _this._xhrBreadcrumb.apply(_this, __spread(args)); + }, + type: 'xhr' + }); + } - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (this._options.fetch) { + addInstrumentationHandler({ + callback: function callback() { + var args = []; - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } + _this._fetchBreadcrumb.apply(_this, __spread(args)); + }, + type: 'fetch' + }); } - request.open('POST', url); + if (this._options.history) { + addInstrumentationHandler({ + callback: function callback() { + var args = []; + + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } - if (evaluatedHeaders) { - each$1(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); + _this._historyBreadcrumb.apply(_this, __spread(args)); + }, + type: 'history' }); } + }; + /** + * @inheritDoc + */ - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + Breadcrumbs.id = 'Breadcrumbs'; + return Breadcrumbs; + }(); + /** + * Create a breadcrumb of `sentry` from the events themselves + */ + + function addSentryBreadcrumb(serializedData) { + // There's always something that can go wrong with deserialization... + try { + var event_1 = JSON.parse(serializedData); + getCurrentHub().addBreadcrumb({ + category: "sentry." + (event_1.type === 'transaction' ? 'transaction' : 'event'), + event_id: event_1.event_id, + level: event_1.level || Severity.fromString('error'), + message: getEventDescription(event_1) + }, { + event: event_1 + }); + } catch (_oO) { + logger.error('Error while adding sentry type breadcrumb'); + } + } + + var DEFAULT_KEY = 'cause'; + var DEFAULT_LIMIT = 5; + /** Adds SDK info to an event. */ + + var LinkedErrors = + /** @class */ + function () { + /** + * @inheritDoc + */ + function LinkedErrors(options) { + if (options === void 0) { + options = {}; + } + /** + * @inheritDoc + */ + + + this.name = LinkedErrors.id; + this._key = options.key || DEFAULT_KEY; + this._limit = options.limit || DEFAULT_LIMIT; + } + /** + * @inheritDoc + */ + + + LinkedErrors.prototype.setupOnce = function () { + addGlobalEventProcessor(function (event, hint) { + var self = getCurrentHub().getIntegration(LinkedErrors); + + if (self) { + return self._handler(event, hint); } + + return event; + }); + }; + /** + * @inheritDoc + */ + + + LinkedErrors.prototype._handler = function (event, hint) { + if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) { + return event; } - return evaluated; - }, - _logDebug: function _logDebug(level) { - // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change - if (this._originalConsoleMethods[level] && (this.debug || this._globalOptions.debug)) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + var linkedErrors = this._walkErrorTree(hint.originalException, this._key); + + event.exception.values = __spread(linkedErrors, event.exception.values); + return event; + }; + /** + * @inheritDoc + */ + + + LinkedErrors.prototype._walkErrorTree = function (error, key, stack) { + if (stack === void 0) { + stack = []; } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined$1(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge$1(this._globalContext[key] || {}, context); + + if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) { + return stack; } + + var stacktrace = computeStackTrace(error[key]); + var exception = exceptionFromStacktrace(stacktrace); + return this._walkErrorTree(error[key], key, __spread([exception], stack)); + }; + /** + * @inheritDoc + */ + + + LinkedErrors.id = 'LinkedErrors'; + return LinkedErrors; + }(); + + var global$4 = getGlobalObject(); + /** UserAgent */ + + var UserAgent = + /** @class */ + function () { + function UserAgent() { + /** + * @inheritDoc + */ + this.name = UserAgent.id; } - }; // Deprecations + /** + * @inheritDoc + */ - Raven.prototype.setUser = Raven.prototype.setUserContext; - Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var raven = Raven; - /** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ - // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + UserAgent.prototype.setupOnce = function () { + addGlobalEventProcessor(function (event) { + if (getCurrentHub().getIntegration(UserAgent)) { + if (!global$4.navigator || !global$4.location) { + return event; + } // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/ - var _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - var _Raven = _window$3.Raven; - var Raven$1 = new raven(); - /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + var request = event.request || {}; + request.url = request.url || global$4.location.href; + request.headers = request.headers || {}; + request.headers['User-Agent'] = global$4.navigator.userAgent; + return _assign({}, event, { + request: request + }); + } + + return event; + }); + }; + /** + * @inheritDoc + */ - Raven$1.noConflict = function () { - _window$3.Raven = _Raven; - return Raven$1; - }; - Raven$1.afterLoad(); - var singleton = Raven$1; + UserAgent.id = 'UserAgent'; + return UserAgent; + }(); + + var defaultIntegrations = [new InboundFilters(), new FunctionToString(), new TryCatch(), new Breadcrumbs(), new GlobalHandlers(), new LinkedErrors(), new UserAgent()]; /** - * DISCLAIMER: + * The Sentry Browser SDK Client. + * + * To use this SDK, call the {@link init} function as early as possible when + * loading the web page. To set context information or send manual events, use + * the provided methods. * - * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. - * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. - * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * @example * - * It's called `Client' to be in-line with Raven Node implementation. + * ``` * - * HOWTO: + * import { init } from '@sentry/browser'; * - * import Raven from 'raven-js'; + * init({ + * dsn: '__DSN__', + * // ... + * }); + * ``` * - * const someAppReporter = new Raven.Client(); - * const someOtherAppReporter = new Raven.Client(); + * @example + * ``` * - * someAppReporter.config('__DSN__', { - * ...config goes here + * import { configureScope } from '@sentry/browser'; + * configureScope((scope: Scope) => { + * scope.setExtra({ battery: 0.7 }); + * scope.setTag({ user_mode: 'admin' }); + * scope.setUser({ id: '4711' }); * }); + * ``` + * + * @example + * ``` * - * someOtherAppReporter.config('__OTHER_DSN__', { - * ...config goes here + * import { addBreadcrumb } from '@sentry/browser'; + * addBreadcrumb({ + * message: 'My Breadcrumb', + * // ... * }); + * ``` * - * someAppReporter.captureMessage(...); - * someAppReporter.captureException(...); - * someAppReporter.captureBreadcrumb(...); + * @example * - * someOtherAppReporter.captureMessage(...); - * someOtherAppReporter.captureException(...); - * someOtherAppReporter.captureBreadcrumb(...); + * ``` * - * It should "just work". + * import * as Sentry from '@sentry/browser'; + * Sentry.captureMessage('Hello, world!'); + * Sentry.captureException(new Error('Good bye')); + * Sentry.captureEvent({ + * message: 'Manual', + * stacktrace: [ + * // ... + * ], + * }); + * ``` + * + * @see {@link BrowserOptions} for documentation on configuration options. */ - var Client = raven; - singleton.Client = Client; + function init(options) { + if (options === void 0) { + options = {}; + } + + if (options.defaultIntegrations === undefined) { + options.defaultIntegrations = defaultIntegrations; + } + + if (options.release === undefined) { + var window_1 = getGlobalObject(); // This supports the variable that sentry-webpack-plugin injects + + if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) { + options.release = window_1.SENTRY_RELEASE.id; + } + } + + initAndBind(BrowserClient, options); + } + + var $find$1 = arrayIteration.find; + + - var internalFind = arrayMethods(5); var FIND = 'find'; var SKIPS_HOLES = true; + var USES_TO_LENGTH$9 = arrayMethodUsesToLength(FIND); + // Shouldn't skip holes if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find - _export({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + _export({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH$9 }, { find: function find(callbackfn /* , that = undefined */) { - return internalFind(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $find$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -10312,20 +13794,32 @@ typeof navigator === "object" && (function () { var ltrim = RegExp('^' + whitespace + whitespace + '*'); var rtrim = RegExp(whitespace + whitespace + '*$'); - // 1 -> String#trimStart - // 2 -> String#trimEnd - // 3 -> String#trim - var stringTrim = function (string, TYPE) { - string = String(requireObjectCoercible(string)); - if (TYPE & 1) string = string.replace(ltrim, ''); - if (TYPE & 2) string = string.replace(rtrim, ''); - return string; + // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation + var createMethod$4 = function (TYPE) { + return function ($this) { + var string = String(requireObjectCoercible($this)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; + }; + }; + + var stringTrim = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart + start: createMethod$4(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimend + end: createMethod$4(2), + // `String.prototype.trim` method + // https://tc39.github.io/ecma262/#sec-string.prototype.trim + trim: createMethod$4(3) }; - var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var getOwnPropertyNames$2 = objectGetOwnPropertyNames.f; var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f; - var defineProperty$6 = objectDefineProperty.f; - + var defineProperty$9 = objectDefineProperty.f; + var trim = stringTrim.trim; var NUMBER = 'Number'; var NativeNumber = global_1[NUMBER]; @@ -10333,15 +13827,14 @@ typeof navigator === "object" && (function () { // Opera ~12 has broken Object#toString var BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER; - var NATIVE_TRIM = 'trim' in String.prototype; // `ToNumber` abstract operation // https://tc39.github.io/ecma262/#sec-tonumber var toNumber = function (argument) { var it = toPrimitive(argument, false); - var first, third, radix, maxCode, digits, length, i, code; + var first, third, radix, maxCode, digits, length, index, code; if (typeof it == 'string' && it.length > 2) { - it = NATIVE_TRIM ? it.trim() : stringTrim(it, 3); + it = trim(it); first = it.charCodeAt(0); if (first === 43 || first === 45) { third = it.charCodeAt(2); @@ -10354,8 +13847,8 @@ typeof navigator === "object" && (function () { } digits = it.slice(2); length = digits.length; - for (i = 0; i < length; i++) { - code = digits.charCodeAt(i); + for (index = 0; index < length; index++) { + code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol // but ToNumber should return NaN if a string contains unavailable symbols if (code < 48 || code > maxCode) return NaN; @@ -10369,21 +13862,21 @@ typeof navigator === "object" && (function () { if (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { var NumberWrapper = function Number(value) { var it = arguments.length < 1 ? 0 : value; - var that = this; - return that instanceof NumberWrapper + var dummy = this; + return dummy instanceof NumberWrapper // check on 1..constructor(foo) case - && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(that); }) : classofRaw(that) != NUMBER) - ? inheritIfRequired(new NativeNumber(toNumber(it)), that, NumberWrapper) : toNumber(it); + && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classofRaw(dummy) != NUMBER) + ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); }; - for (var keys$2 = descriptors ? getOwnPropertyNames$1(NativeNumber) : ( + for (var keys$3 = descriptors ? getOwnPropertyNames$2(NativeNumber) : ( // ES3: 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before): 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' - ).split(','), j = 0, key; keys$2.length > j; j++) { - if (has(NativeNumber, key = keys$2[j]) && !has(NumberWrapper, key)) { - defineProperty$6(NumberWrapper, key, getOwnPropertyDescriptor$3(NativeNumber, key)); + ).split(','), j$1 = 0, key$1; keys$3.length > j$1; j$1++) { + if (has(NativeNumber, key$1 = keys$3[j$1]) && !has(NumberWrapper, key$1)) { + defineProperty$9(NumberWrapper, key$1, getOwnPropertyDescriptor$3(NativeNumber, key$1)); } } NumberWrapper.prototype = NumberPrototype; @@ -10400,37 +13893,43 @@ typeof navigator === "object" && (function () { } }); - // `Object.assign` method - // https://tc39.github.io/ecma262/#sec-object.assign - _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { - assign: objectAssign - }); - var propertyIsEnumerable = objectPropertyIsEnumerable.f; - // TO_ENTRIES: true -> Object.entries - // TO_ENTRIES: false -> Object.values - var objectToArray = function (it, TO_ENTRIES) { - var O = toIndexedObject(it); - var keys = objectKeys(O); - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!descriptors || propertyIsEnumerable.call(O, key)) { - result.push(TO_ENTRIES ? [key, O[key]] : O[key]); + // `Object.{ entries, values }` methods implementation + var createMethod$5 = function (TO_ENTRIES) { + return function (it) { + var O = toIndexedObject(it); + var keys = objectKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!descriptors || propertyIsEnumerable.call(O, key)) { + result.push(TO_ENTRIES ? [key, O[key]] : O[key]); + } } - } - return result; + return result; + }; + }; + + var objectToArray = { + // `Object.entries` method + // https://tc39.github.io/ecma262/#sec-object.entries + entries: createMethod$5(true), + // `Object.values` method + // https://tc39.github.io/ecma262/#sec-object.values + values: createMethod$5(false) }; + var $entries = objectToArray.entries; + // `Object.entries` method // https://tc39.github.io/ecma262/#sec-object.entries _export({ target: 'Object', stat: true }, { entries: function entries(O) { - return objectToArray(O, true); + return $entries(O); } }); @@ -10502,47 +14001,47 @@ typeof navigator === "object" && (function () { isNullOrUndefined = function isNullOrUndefined(e) { return null == e; }, - isObject$3 = function isObject(e) { + isObject$1 = function isObject(e) { return getConstructor(e) === Object; }, isNumber = function isNumber(e) { return getConstructor(e) === Number && !Number.isNaN(e); }, - isString$2 = function isString(e) { + isString$1 = function isString(e) { return getConstructor(e) === String; }, isBoolean = function isBoolean(e) { return getConstructor(e) === Boolean; }, - isFunction$2 = function isFunction(e) { + isFunction = function isFunction(e) { return getConstructor(e) === Function; }, - isArray$3 = function isArray(e) { + isArray$1 = function isArray(e) { return Array.isArray(e); }, isNodeList = function isNodeList(e) { return instanceOf(e, NodeList); }, - isElement = function isElement(e) { + isElement$1 = function isElement(e) { return instanceOf(e, Element); }, - isEvent = function isEvent(e) { + isEvent$1 = function isEvent(e) { return instanceOf(e, Event); }, isEmpty = function isEmpty(e) { - return isNullOrUndefined(e) || (isString$2(e) || isArray$3(e) || isNodeList(e)) && !e.length || isObject$3(e) && !Object.keys(e).length; + return isNullOrUndefined(e) || (isString$1(e) || isArray$1(e) || isNodeList(e)) && !e.length || isObject$1(e) && !Object.keys(e).length; }, is = { nullOrUndefined: isNullOrUndefined, - object: isObject$3, + object: isObject$1, number: isNumber, - string: isString$2, + string: isString$1, boolean: isBoolean, - function: isFunction$2, - array: isArray$3, + function: isFunction, + array: isArray$1, nodeList: isNodeList, - element: isElement, - event: isEvent, + element: isElement$1, + event: isEvent$1, empty: isEmpty }, constants = { @@ -10676,7 +14175,7 @@ typeof navigator === "object" && (function () { }.call(e, t); } - function wrap$1(e, t) { + function wrap$2(e, t) { var n = e.length ? e : [e]; Array.from(n).reverse().forEach(function (e, n) { var r = 0 < n ? t.cloneNode(!0) : t, @@ -10864,7 +14363,7 @@ typeof navigator === "object" && (function () { }, c = formatNumber(i); - r.format && (1e6 < i ? c = "".concat(a(1e6), "M") : 1e3 < i && (c = "".concat(a(1e3), "K"))), is.element(this.elements.count) ? this.elements.count.textContent = c : (wrap$1(this.elements.trigger, createElement("span", { + r.format && (1e6 < i ? c = "".concat(a(1e6), "M") : 1e3 < i && (c = "".concat(a(1e3), "K"))), is.element(this.elements.count) ? this.elements.count.textContent = c : (wrap$2(this.elements.trigger, createElement("span", { class: o.className })), this.elements.count = createElement("span", { class: "".concat(r.className, " ").concat(r.className, "--").concat(s) @@ -11037,7 +14536,7 @@ typeof navigator === "object" && (function () { return indexedObject$1(requireObjectCoercible$1(it)); }; - var isObject$4 = function (it) { + var isObject$2 = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; @@ -11046,11 +14545,11 @@ typeof navigator === "object" && (function () { // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string var toPrimitive$1 = function (input, PREFERRED_STRING) { - if (!isObject$4(input)) return input; + if (!isObject$2(input)) return input; var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$4(val = fn.call(input))) return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject$4(val = fn.call(input))) return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$4(val = fn.call(input))) return val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$2(val = fn.call(input))) return val; + if (typeof (fn = input.valueOf) == 'function' && !isObject$2(val = fn.call(input))) return val; + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$2(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; @@ -11060,12 +14559,12 @@ typeof navigator === "object" && (function () { return hasOwnProperty$1.call(it, key); }; - var document$4 = global_1$1.document; + var document$3 = global_1$1.document; // typeof document.createElement is 'object' in old IE - var EXISTS = isObject$4(document$4) && isObject$4(document$4.createElement); + var EXISTS$1 = isObject$2(document$3) && isObject$2(document$3.createElement); var documentCreateElement$1 = function (it) { - return EXISTS ? document$4.createElement(it) : {}; + return EXISTS$1 ? document$3.createElement(it) : {}; }; // Thank's IE8 for his funny defineProperty @@ -11075,15 +14574,15 @@ typeof navigator === "object" && (function () { }).a != 7; }); - var nativeGetOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor; + var nativeGetOwnPropertyDescriptor$3 = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor - var f$9 = descriptors$1 ? nativeGetOwnPropertyDescriptor$2 : function getOwnPropertyDescriptor(O, P) { + var f$9 = descriptors$1 ? nativeGetOwnPropertyDescriptor$3 : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject$1(O); P = toPrimitive$1(P, true); if (ie8DomDefine$1) try { - return nativeGetOwnPropertyDescriptor$2(O, P); + return nativeGetOwnPropertyDescriptor$3(O, P); } catch (error) { /* empty */ } if (has$2(O, P)) return createPropertyDescriptor$1(!objectPropertyIsEnumerable$1.f.call(O, P), O[P]); }; @@ -11093,7 +14592,7 @@ typeof navigator === "object" && (function () { }; var anObject$1 = function (it) { - if (!isObject$4(it)) { + if (!isObject$2(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; @@ -11118,7 +14617,7 @@ typeof navigator === "object" && (function () { f: f$a }; - var createNonEnumerableProperty = descriptors$1 ? function (object, key, value) { + var createNonEnumerableProperty$1 = descriptors$1 ? function (object, key, value) { return objectDefineProperty$1.f(object, key, createPropertyDescriptor$1(1, value)); } : function (object, key, value) { object[key] = value; @@ -11127,70 +14626,70 @@ typeof navigator === "object" && (function () { var setGlobal$1 = function (key, value) { try { - createNonEnumerableProperty(global_1$1, key, value); + createNonEnumerableProperty$1(global_1$1, key, value); } catch (error) { global_1$1[key] = value; } return value; }; - var SHARED = '__core-js_shared__'; - var store$2 = global_1$1[SHARED] || setGlobal$1(SHARED, {}); + var SHARED$1 = '__core-js_shared__'; + var store$2 = global_1$1[SHARED$1] || setGlobal$1(SHARED$1, {}); - var sharedStore = store$2; + var sharedStore$1 = store$2; var functionToString$1 = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper - if (typeof sharedStore.inspectSource != 'function') { - sharedStore.inspectSource = function (it) { + if (typeof sharedStore$1.inspectSource != 'function') { + sharedStore$1.inspectSource = function (it) { return functionToString$1.call(it); }; } - var inspectSource = sharedStore.inspectSource; + var inspectSource$1 = sharedStore$1.inspectSource; var WeakMap$3 = global_1$1.WeakMap; - var nativeWeakMap$1 = typeof WeakMap$3 === 'function' && /native code/.test(inspectSource(WeakMap$3)); + var nativeWeakMap$1 = typeof WeakMap$3 === 'function' && /native code/.test(inspectSource$1(WeakMap$3)); var isPure$1 = false; var shared$1 = createCommonjsModule(function (module) { (module.exports = function (key, value) { - return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); + return sharedStore$1[key] || (sharedStore$1[key] = value !== undefined ? value : {}); })('versions', []).push({ - version: '3.6.4', + version: '3.6.5', mode: 'global', copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); }); - var id$1 = 0; + var id$2 = 0; var postfix$1 = Math.random(); var uid$1 = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id$1 + postfix$1).toString(36); + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id$2 + postfix$1).toString(36); }; - var keys$3 = shared$1('keys'); + var keys$4 = shared$1('keys'); var sharedKey$1 = function (key) { - return keys$3[key] || (keys$3[key] = uid$1(key)); + return keys$4[key] || (keys$4[key] = uid$1(key)); }; var hiddenKeys$2 = {}; var WeakMap$4 = global_1$1.WeakMap; - var set$2, get$1, has$3; + var set$3, get$2, has$3; var enforce$1 = function (it) { - return has$3(it) ? get$1(it) : set$2(it, {}); + return has$3(it) ? get$2(it) : set$3(it, {}); }; var getterFor$1 = function (TYPE) { return function (it) { var state; - if (!isObject$4(it) || (state = get$1(it)).type !== TYPE) { + if (!isObject$2(it) || (state = get$2(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; @@ -11201,11 +14700,11 @@ typeof navigator === "object" && (function () { var wmget$1 = store$3.get; var wmhas$1 = store$3.has; var wmset$1 = store$3.set; - set$2 = function (it, metadata) { + set$3 = function (it, metadata) { wmset$1.call(store$3, it, metadata); return metadata; }; - get$1 = function (it) { + get$2 = function (it) { return wmget$1.call(store$3, it) || {}; }; has$3 = function (it) { @@ -11214,11 +14713,11 @@ typeof navigator === "object" && (function () { } else { var STATE$1 = sharedKey$1('state'); hiddenKeys$2[STATE$1] = true; - set$2 = function (it, metadata) { - createNonEnumerableProperty(it, STATE$1, metadata); + set$3 = function (it, metadata) { + createNonEnumerableProperty$1(it, STATE$1, metadata); return metadata; }; - get$1 = function (it) { + get$2 = function (it) { return has$2(it, STATE$1) ? it[STATE$1] : {}; }; has$3 = function (it) { @@ -11227,8 +14726,8 @@ typeof navigator === "object" && (function () { } var internalState$1 = { - set: set$2, - get: get$1, + set: set$3, + get: get$2, has: has$3, enforce: enforce$1, getterFor: getterFor$1 @@ -11244,7 +14743,7 @@ typeof navigator === "object" && (function () { var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { - if (typeof key == 'string' && !has$2(value, 'name')) createNonEnumerableProperty(value, 'name', key); + if (typeof key == 'string' && !has$2(value, 'name')) createNonEnumerableProperty$1(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global_1$1) { @@ -11257,10 +14756,10 @@ typeof navigator === "object" && (function () { simple = true; } if (simple) O[key] = value; - else createNonEnumerableProperty(O, key, value); + else createNonEnumerableProperty$1(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || inspectSource(this); + return typeof this == 'function' && getInternalState(this).source || inspectSource$1(this); }); }); @@ -11276,35 +14775,35 @@ typeof navigator === "object" && (function () { }; var ceil$1 = Math.ceil; - var floor$3 = Math.floor; + var floor$6 = Math.floor; // `ToInteger` abstract operation // https://tc39.github.io/ecma262/#sec-tointeger var toInteger$1 = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor$3 : ceil$1)(argument); + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor$6 : ceil$1)(argument); }; - var min$5 = Math.min; + var min$7 = Math.min; // `ToLength` abstract operation // https://tc39.github.io/ecma262/#sec-tolength var toLength$1 = function (argument) { - return argument > 0 ? min$5(toInteger$1(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 + return argument > 0 ? min$7(toInteger$1(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; var max$4 = Math.max; - var min$6 = Math.min; + var min$8 = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). var toAbsoluteIndex$1 = function (index, length) { var integer = toInteger$1(index); - return integer < 0 ? max$4(integer + length, 0) : min$6(integer, length); + return integer < 0 ? max$4(integer + length, 0) : min$8(integer, length); }; // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod = function (IS_INCLUDES) { + var createMethod$6 = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject$1($this); var length = toLength$1(O.length); @@ -11323,16 +14822,16 @@ typeof navigator === "object" && (function () { }; }; - var arrayIncludes$2 = { + var arrayIncludes$1 = { // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes - includes: createMethod(true), + includes: createMethod$6(true), // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) + indexOf: createMethod$6(false) }; - var indexOf = arrayIncludes$2.indexOf; + var indexOf$1 = arrayIncludes$1.indexOf; var objectKeysInternal$1 = function (object, names) { @@ -11343,7 +14842,7 @@ typeof navigator === "object" && (function () { for (key in O) !has$2(hiddenKeys$2, key) && has$2(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has$2(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); + ~indexOf$1(result, key) || result.push(key); } return result; }; @@ -11397,14 +14896,14 @@ typeof navigator === "object" && (function () { var replacement$1 = /#|\.prototype\./; var isForced$1 = function (feature, detection) { - var value = data$1[normalize$1(feature)]; + var value = data$1[normalize$2(feature)]; return value == POLYFILL$1 ? true : value == NATIVE$1 ? false : typeof detection == 'function' ? fails$1(detection) : !!detection; }; - var normalize$1 = isForced$1.normalize = function (string) { + var normalize$2 = isForced$1.normalize = function (string) { return String(string).replace(replacement$1, '.').toLowerCase(); }; @@ -11461,7 +14960,7 @@ typeof navigator === "object" && (function () { } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); + createNonEnumerableProperty$1(sourceProperty, 'sham', true); } // extend global redefine$1(target, key, sourceProperty, options); @@ -11470,7 +14969,7 @@ typeof navigator === "object" && (function () { // `IsArray` abstract operation // https://tc39.github.io/ecma262/#sec-isarray - var isArray$4 = Array.isArray || function isArray(arg) { + var isArray$2 = Array.isArray || function isArray(arg) { return classofRaw$1(arg) == 'Array'; }; @@ -11492,21 +14991,21 @@ typeof navigator === "object" && (function () { return !String(Symbol()); }); - var useSymbolAsUid = nativeSymbol$1 + var useSymbolAsUid$1 = nativeSymbol$1 // eslint-disable-next-line no-undef && !Symbol.sham // eslint-disable-next-line no-undef && typeof Symbol.iterator == 'symbol'; - var WellKnownSymbolsStore$1 = shared$1('wks'); + var WellKnownSymbolsStore$2 = shared$1('wks'); var Symbol$2 = global_1$1.Symbol; - var createWellKnownSymbol = useSymbolAsUid ? Symbol$2 : Symbol$2 && Symbol$2.withoutSetter || uid$1; + var createWellKnownSymbol$1 = useSymbolAsUid$1 ? Symbol$2 : Symbol$2 && Symbol$2.withoutSetter || uid$1; var wellKnownSymbol$1 = function (name) { - if (!has$2(WellKnownSymbolsStore$1, name)) { - if (nativeSymbol$1 && has$2(Symbol$2, name)) WellKnownSymbolsStore$1[name] = Symbol$2[name]; - else WellKnownSymbolsStore$1[name] = createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore$1[name]; + if (!has$2(WellKnownSymbolsStore$2, name)) { + if (nativeSymbol$1 && has$2(Symbol$2, name)) WellKnownSymbolsStore$2[name] = Symbol$2[name]; + else WellKnownSymbolsStore$2[name] = createWellKnownSymbol$1('Symbol.' + name); + } return WellKnownSymbolsStore$2[name]; }; var SPECIES$7 = wellKnownSymbol$1('species'); @@ -11515,36 +15014,36 @@ typeof navigator === "object" && (function () { // https://tc39.github.io/ecma262/#sec-arrayspeciescreate var arraySpeciesCreate$1 = function (originalArray, length) { var C; - if (isArray$4(originalArray)) { + if (isArray$2(originalArray)) { C = originalArray.constructor; // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray$4(C.prototype))) C = undefined; - else if (isObject$4(C)) { + if (typeof C == 'function' && (C === Array || isArray$2(C.prototype))) C = undefined; + else if (isObject$2(C)) { C = C[SPECIES$7]; if (C === null) C = undefined; } } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); }; - var engineUserAgent = getBuiltIn$1('navigator', 'userAgent') || ''; + var engineUserAgent$1 = getBuiltIn$1('navigator', 'userAgent') || ''; - var process$3 = global_1$1.process; - var versions$1 = process$3 && process$3.versions; + var process$5 = global_1$1.process; + var versions$1 = process$5 && process$5.versions; var v8$1 = versions$1 && versions$1.v8; - var match, version; + var match$1, version$1; if (v8$1) { - match = v8$1.split('.'); - version = match[0] + match[1]; - } else if (engineUserAgent) { - match = engineUserAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = engineUserAgent.match(/Chrome\/(\d+)/); - if (match) version = match[1]; + match$1 = v8$1.split('.'); + version$1 = match$1[0] + match$1[1]; + } else if (engineUserAgent$1) { + match$1 = engineUserAgent$1.match(/Edge\/(\d+)/); + if (!match$1 || match$1[1] >= 74) { + match$1 = engineUserAgent$1.match(/Chrome\/(\d+)/); + if (match$1) version$1 = match$1[1]; } } - var engineV8Version = version && +version; + var engineV8Version$1 = version$1 && +version$1; var SPECIES$8 = wellKnownSymbol$1('species'); @@ -11552,7 +15051,7 @@ typeof navigator === "object" && (function () { // We can't use this feature detection in V8 since it causes // deoptimization and serious performance degradation // https://github.com/zloirock/core-js/issues/677 - return engineV8Version >= 51 || !fails$1(function () { + return engineV8Version$1 >= 51 || !fails$1(function () { var array = []; var constructor = array.constructor = {}; constructor[SPECIES$8] = function () { @@ -11569,26 +15068,26 @@ typeof navigator === "object" && (function () { // We can't use this feature detection in V8 since it causes // deoptimization and serious performance degradation // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT$1 = engineV8Version >= 51 || !fails$1(function () { + var IS_CONCAT_SPREADABLE_SUPPORT$1 = engineV8Version$1 >= 51 || !fails$1(function () { var array = []; array[IS_CONCAT_SPREADABLE$1] = false; return array.concat()[0] !== array; }); - var SPECIES_SUPPORT$5 = arrayMethodHasSpeciesSupport$1('concat'); + var SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('concat'); var isConcatSpreadable$1 = function (O) { - if (!isObject$4(O)) return false; + if (!isObject$2(O)) return false; var spreadable = O[IS_CONCAT_SPREADABLE$1]; - return spreadable !== undefined ? !!spreadable : isArray$4(O); + return spreadable !== undefined ? !!spreadable : isArray$2(O); }; - var FORCED$6 = !IS_CONCAT_SPREADABLE_SUPPORT$1 || !SPECIES_SUPPORT$5; + var FORCED$8 = !IS_CONCAT_SPREADABLE_SUPPORT$1 || !SPECIES_SUPPORT$1; // `Array.prototype.concat` method // https://tc39.github.io/ecma262/#sec-array.prototype.concat // with adding support of @@isConcatSpreadable and @@species - _export$1({ target: 'Array', proto: true, forced: FORCED$6 }, { + _export$1({ target: 'Array', proto: true, forced: FORCED$8 }, { concat: function concat(arg) { // eslint-disable-line no-unused-vars var O = toObject$1(this); var A = arraySpeciesCreate$1(O, 0); @@ -11617,7 +15116,7 @@ typeof navigator === "object" && (function () { }; // optional / simple context binding - var functionBindContext = function (fn, that, length) { + var functionBindContext$1 = function (fn, that, length) { aFunction$3(fn); if (that === undefined) return fn; switch (length) { @@ -11639,10 +15138,10 @@ typeof navigator === "object" && (function () { }; }; - var push = [].push; + var push$1 = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation - var createMethod$1 = function (TYPE) { + var createMethod$7 = function (TYPE) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; @@ -11652,7 +15151,7 @@ typeof navigator === "object" && (function () { return function ($this, callbackfn, that, specificCreate) { var O = toObject$1($this); var self = indexedObject$1(O); - var boundFunction = functionBindContext(callbackfn, that, 3); + var boundFunction = functionBindContext$1(callbackfn, that, 3); var length = toLength$1(self.length); var index = 0; var create = specificCreate || arraySpeciesCreate$1; @@ -11667,7 +15166,7 @@ typeof navigator === "object" && (function () { case 3: return true; // some case 5: return value; // find case 6: return index; // findIndex - case 2: push.call(target, value); // filter + case 2: push$1.call(target, value); // filter } else if (IS_EVERY) return false; // every } } @@ -11675,68 +15174,68 @@ typeof navigator === "object" && (function () { }; }; - var arrayIteration = { + var arrayIteration$1 = { // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - forEach: createMethod$1(0), + forEach: createMethod$7(0), // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map - map: createMethod$1(1), + map: createMethod$7(1), // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter - filter: createMethod$1(2), + filter: createMethod$7(2), // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some - some: createMethod$1(3), + some: createMethod$7(3), // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every - every: createMethod$1(4), + every: createMethod$7(4), // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find - find: createMethod$1(5), + find: createMethod$7(5), // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod$1(6) + findIndex: createMethod$7(6) }; - var defineProperty$7 = Object.defineProperty; - var cache = {}; + var defineProperty$a = Object.defineProperty; + var cache$1 = {}; - var thrower = function (it) { throw it; }; + var thrower$1 = function (it) { throw it; }; - var arrayMethodUsesToLength = function (METHOD_NAME, options) { - if (has$2(cache, METHOD_NAME)) return cache[METHOD_NAME]; + var arrayMethodUsesToLength$1 = function (METHOD_NAME, options) { + if (has$2(cache$1, METHOD_NAME)) return cache$1[METHOD_NAME]; if (!options) options = {}; var method = [][METHOD_NAME]; var ACCESSORS = has$2(options, 'ACCESSORS') ? options.ACCESSORS : false; - var argument0 = has$2(options, 0) ? options[0] : thrower; + var argument0 = has$2(options, 0) ? options[0] : thrower$1; var argument1 = has$2(options, 1) ? options[1] : undefined; - return cache[METHOD_NAME] = !!method && !fails$1(function () { + return cache$1[METHOD_NAME] = !!method && !fails$1(function () { if (ACCESSORS && !descriptors$1) return true; var O = { length: -1 }; - if (ACCESSORS) defineProperty$7(O, 1, { enumerable: true, get: thrower }); + if (ACCESSORS) defineProperty$a(O, 1, { enumerable: true, get: thrower$1 }); else O[1] = 1; method.call(O, argument0, argument1); }); }; - var $filter = arrayIteration.filter; + var $filter$2 = arrayIteration$1.filter; - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport$1('filter'); + var HAS_SPECIES_SUPPORT$4 = arrayMethodHasSpeciesSupport$1('filter'); // Edge 14- issue - var USES_TO_LENGTH = arrayMethodUsesToLength('filter'); + var USES_TO_LENGTH$a = arrayMethodUsesToLength$1('filter'); // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter // with adding support of @@species - _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, { + _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$4 || !USES_TO_LENGTH$a }, { filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $filter$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -11760,21 +15259,21 @@ typeof navigator === "object" && (function () { var html$1 = getBuiltIn$1('document', 'documentElement'); - var GT = '>'; - var LT = '<'; - var PROTOTYPE$2 = 'prototype'; - var SCRIPT = 'script'; + var GT$1 = '>'; + var LT$1 = '<'; + var PROTOTYPE$3 = 'prototype'; + var SCRIPT$1 = 'script'; var IE_PROTO$2 = sharedKey$1('IE_PROTO'); - var EmptyConstructor = function () { /* empty */ }; + var EmptyConstructor$1 = function () { /* empty */ }; - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + var scriptTag$1 = function (content) { + return LT$1 + SCRIPT$1 + GT$1 + content + LT$1 + '/' + SCRIPT$1 + GT$1; }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); + var NullProtoObjectViaActiveX$1 = function (activeXDocument) { + activeXDocument.write(scriptTag$1('')); activeXDocument.close(); var temp = activeXDocument.parentWindow.Object; activeXDocument = null; // avoid memory leak @@ -11782,10 +15281,10 @@ typeof navigator === "object" && (function () { }; // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { + var NullProtoObjectViaIFrame$1 = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement$1('iframe'); - var JS = 'java' + SCRIPT + ':'; + var JS = 'java' + SCRIPT$1 + ':'; var iframeDocument; iframe.style.display = 'none'; html$1.appendChild(iframe); @@ -11793,7 +15292,7 @@ typeof navigator === "object" && (function () { iframe.src = String(JS); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.write(scriptTag$1('document.F=Object')); iframeDocument.close(); return iframeDocument.F; }; @@ -11803,16 +15302,16 @@ typeof navigator === "object" && (function () { // see https://github.com/es-shims/es5-shim/issues/150 // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { + var activeXDocument$1; + var NullProtoObject$1 = function () { try { /* global ActiveXObject */ - activeXDocument = document.domain && new ActiveXObject('htmlfile'); + activeXDocument$1 = document.domain && new ActiveXObject('htmlfile'); } catch (error) { /* ignore */ } - NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); + NullProtoObject$1 = activeXDocument$1 ? NullProtoObjectViaActiveX$1(activeXDocument$1) : NullProtoObjectViaIFrame$1(); var length = enumBugKeys$1.length; - while (length--) delete NullProtoObject[PROTOTYPE$2][enumBugKeys$1[length]]; - return NullProtoObject(); + while (length--) delete NullProtoObject$1[PROTOTYPE$3][enumBugKeys$1[length]]; + return NullProtoObject$1(); }; hiddenKeys$2[IE_PROTO$2] = true; @@ -11822,12 +15321,12 @@ typeof navigator === "object" && (function () { var objectCreate$1 = Object.create || function create(O, Properties) { var result; if (O !== null) { - EmptyConstructor[PROTOTYPE$2] = anObject$1(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE$2] = null; + EmptyConstructor$1[PROTOTYPE$3] = anObject$1(O); + result = new EmptyConstructor$1(); + EmptyConstructor$1[PROTOTYPE$3] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO$2] = O; - } else result = NullProtoObject(); + } else result = NullProtoObject$1(); return Properties === undefined ? result : objectDefineProperties$1(result, Properties); }; @@ -11848,23 +15347,23 @@ typeof navigator === "object" && (function () { ArrayPrototype$2[UNSCOPABLES$1][key] = true; }; - var $find = arrayIteration.find; + var $find$2 = arrayIteration$1.find; var FIND$1 = 'find'; var SKIPS_HOLES$1 = true; - var USES_TO_LENGTH$1 = arrayMethodUsesToLength(FIND$1); + var USES_TO_LENGTH$b = arrayMethodUsesToLength$1(FIND$1); // Shouldn't skip holes if (FIND$1 in []) Array(1)[FIND$1](function () { SKIPS_HOLES$1 = false; }); // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find - _export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 || !USES_TO_LENGTH$1 }, { + _export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 || !USES_TO_LENGTH$b }, { find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $find$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -11898,7 +15397,7 @@ typeof navigator === "object" && (function () { test$1[TO_STRING_TAG$5] = 'z'; - var toStringTagSupport = String(test$1) === '[object z]'; + var toStringTagSupport$1 = String(test$1) === '[object z]'; var TO_STRING_TAG$6 = wellKnownSymbol$1('toStringTag'); // ES3 wrong here @@ -11912,7 +15411,7 @@ typeof navigator === "object" && (function () { }; // getting tag from ES6+ `Object.prototype.toString` - var classof$1 = toStringTagSupport ? classofRaw$1 : function (it) { + var classof$1 = toStringTagSupport$1 ? classofRaw$1 : function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case @@ -11942,7 +15441,7 @@ typeof navigator === "object" && (function () { var iteratorMethod = getIteratorMethod$1(O); var index = 0; var length, result, step, iterator, next, value; - if (mapping) mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + if (mapping) mapfn = functionBindContext$1(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); // if the target is not iterable or it's an array with the default iterator - use a simple case if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod$1(iteratorMethod))) { iterator = iteratorMethod.call(O); @@ -12011,17 +15510,17 @@ typeof navigator === "object" && (function () { from: arrayFrom$1 }); - var $includes = arrayIncludes$2.includes; + var $includes$2 = arrayIncludes$1.includes; - var USES_TO_LENGTH$2 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + var USES_TO_LENGTH$c = arrayMethodUsesToLength$1('indexOf', { ACCESSORS: true, 1: 0 }); // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes - _export$1({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$2 }, { + _export$1({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$c }, { includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + return $includes$2(this, el, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -12070,7 +15569,7 @@ typeof navigator === "object" && (function () { // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() if ( !has$2(IteratorPrototype$3, ITERATOR$c)) { - createNonEnumerableProperty(IteratorPrototype$3, ITERATOR$c, returnThis$3); + createNonEnumerableProperty$1(IteratorPrototype$3, ITERATOR$c, returnThis$3); } var iteratorsCore$1 = { @@ -12078,7 +15577,7 @@ typeof navigator === "object" && (function () { BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$2 }; - var defineProperty$8 = objectDefineProperty$1.f; + var defineProperty$b = objectDefineProperty$1.f; @@ -12086,7 +15585,7 @@ typeof navigator === "object" && (function () { var setToStringTag$1 = function (it, TAG, STATIC) { if (it && !has$2(it = STATIC ? it : it.prototype, TO_STRING_TAG$7)) { - defineProperty$8(it, TO_STRING_TAG$7, { configurable: true, value: TAG }); + defineProperty$b(it, TO_STRING_TAG$7, { configurable: true, value: TAG }); } }; @@ -12106,8 +15605,8 @@ typeof navigator === "object" && (function () { return IteratorConstructor; }; - var aPossiblePrototype = function (it) { - if (!isObject$4(it) && it !== null) { + var aPossiblePrototype$1 = function (it) { + if (!isObject$2(it) && it !== null) { throw TypeError("Can't set " + String(it) + ' as a prototype'); } return it; }; @@ -12127,7 +15626,7 @@ typeof navigator === "object" && (function () { } catch (error) { /* empty */ } return function setPrototypeOf(O, proto) { anObject$1(O); - aPossiblePrototype(proto); + aPossiblePrototype$1(proto); if (CORRECT_SETTER) setter.call(O, proto); else O.__proto__ = proto; return O; @@ -12174,7 +15673,7 @@ typeof navigator === "object" && (function () { if (objectSetPrototypeOf$1) { objectSetPrototypeOf$1(CurrentIteratorPrototype, IteratorPrototype$5); } else if (typeof CurrentIteratorPrototype[ITERATOR$d] != 'function') { - createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$d, returnThis$5); + createNonEnumerableProperty$1(CurrentIteratorPrototype, ITERATOR$d, returnThis$5); } } // Set @@toStringTag to native iterators @@ -12190,7 +15689,7 @@ typeof navigator === "object" && (function () { // define iterator if ( IterablePrototype[ITERATOR$d] !== defaultIterator) { - createNonEnumerableProperty(IterablePrototype, ITERATOR$d, defaultIterator); + createNonEnumerableProperty$1(IterablePrototype, ITERATOR$d, defaultIterator); } iterators$1[NAME] = defaultIterator; @@ -12212,8 +15711,8 @@ typeof navigator === "object" && (function () { }; var ARRAY_ITERATOR$1 = 'Array Iterator'; - var setInternalState$6 = internalState$1.set; - var getInternalState$4 = internalState$1.getterFor(ARRAY_ITERATOR$1); + var setInternalState$9 = internalState$1.set; + var getInternalState$5 = internalState$1.getterFor(ARRAY_ITERATOR$1); // `Array.prototype.entries` method // https://tc39.github.io/ecma262/#sec-array.prototype.entries @@ -12226,7 +15725,7 @@ typeof navigator === "object" && (function () { // `CreateArrayIterator` internal method // https://tc39.github.io/ecma262/#sec-createarrayiterator var es_array_iterator$1 = defineIterator$1(Array, 'Array', function (iterated, kind) { - setInternalState$6(this, { + setInternalState$9(this, { type: ARRAY_ITERATOR$1, target: toIndexedObject$1(iterated), // target index: 0, // next index @@ -12235,7 +15734,7 @@ typeof navigator === "object" && (function () { // `%ArrayIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next }, function () { - var state = getInternalState$4(this); + var state = getInternalState$5(this); var target = state.target; var kind = state.kind; var index = state.index++; @@ -12258,7 +15757,7 @@ typeof navigator === "object" && (function () { addToUnscopables$1('values'); addToUnscopables$1('entries'); - var arrayMethodIsStrict = function (METHOD_NAME, argument) { + var arrayMethodIsStrict$1 = function (METHOD_NAME, argument) { var method = [][METHOD_NAME]; return !!method && fails$1(function () { // eslint-disable-next-line no-useless-call,no-throw-literal @@ -12269,30 +15768,30 @@ typeof navigator === "object" && (function () { var nativeJoin$1 = [].join; var ES3_STRINGS$1 = indexedObject$1 != Object; - var STRICT_METHOD = arrayMethodIsStrict('join', ','); + var STRICT_METHOD$5 = arrayMethodIsStrict$1('join', ','); // `Array.prototype.join` method // https://tc39.github.io/ecma262/#sec-array.prototype.join - _export$1({ target: 'Array', proto: true, forced: ES3_STRINGS$1 || !STRICT_METHOD }, { + _export$1({ target: 'Array', proto: true, forced: ES3_STRINGS$1 || !STRICT_METHOD$5 }, { join: function join(separator) { return nativeJoin$1.call(toIndexedObject$1(this), separator === undefined ? ',' : separator); } }); - var $map = arrayIteration.map; + var $map$2 = arrayIteration$1.map; - var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('map'); + var HAS_SPECIES_SUPPORT$5 = arrayMethodHasSpeciesSupport$1('map'); // FF49- issue - var USES_TO_LENGTH$3 = arrayMethodUsesToLength('map'); + var USES_TO_LENGTH$d = arrayMethodUsesToLength$1('map'); // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map // with adding support of @@species - _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$3 }, { + _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$5 || !USES_TO_LENGTH$d }, { map: function map(callbackfn /* , thisArg */) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $map$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -12305,7 +15804,7 @@ typeof navigator === "object" && (function () { // we haven't completely correct pre-ES6 way for getting `new.target`, so use this typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && - isObject$4(NewTargetPrototype = NewTarget.prototype) && + isObject$2(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype ) objectSetPrototypeOf$1($this, NewTargetPrototype); return $this; @@ -12320,7 +15819,7 @@ typeof navigator === "object" && (function () { var rtrim$1 = RegExp(whitespace$1 + whitespace$1 + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation - var createMethod$2 = function (TYPE) { + var createMethod$8 = function (TYPE) { return function ($this) { var string = String(requireObjectCoercible$1($this)); if (TYPE & 1) string = string.replace(ltrim$1, ''); @@ -12332,19 +15831,19 @@ typeof navigator === "object" && (function () { var stringTrim$1 = { // `String.prototype.{ trimLeft, trimStart }` methods // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart - start: createMethod$2(1), + start: createMethod$8(1), // `String.prototype.{ trimRight, trimEnd }` methods // https://tc39.github.io/ecma262/#sec-string.prototype.trimend - end: createMethod$2(2), + end: createMethod$8(2), // `String.prototype.trim` method // https://tc39.github.io/ecma262/#sec-string.prototype.trim - trim: createMethod$2(3) + trim: createMethod$8(3) }; - var getOwnPropertyNames$2 = objectGetOwnPropertyNames$1.f; + var getOwnPropertyNames$3 = objectGetOwnPropertyNames$1.f; var getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor$1.f; - var defineProperty$9 = objectDefineProperty$1.f; - var trim = stringTrim$1.trim; + var defineProperty$c = objectDefineProperty$1.f; + var trim$1 = stringTrim$1.trim; var NUMBER$1 = 'Number'; var NativeNumber$1 = global_1$1[NUMBER$1]; @@ -12359,7 +15858,7 @@ typeof navigator === "object" && (function () { var it = toPrimitive$1(argument, false); var first, third, radix, maxCode, digits, length, index, code; if (typeof it == 'string' && it.length > 2) { - it = trim(it); + it = trim$1(it); first = it.charCodeAt(0); if (first === 43 || first === 45) { third = it.charCodeAt(2); @@ -12393,15 +15892,15 @@ typeof navigator === "object" && (function () { && (BROKEN_CLASSOF$1 ? fails$1(function () { NumberPrototype$1.valueOf.call(dummy); }) : classofRaw$1(dummy) != NUMBER$1) ? inheritIfRequired$1(new NativeNumber$1(toNumber$1(it)), dummy, NumberWrapper$1) : toNumber$1(it); }; - for (var keys$4 = descriptors$1 ? getOwnPropertyNames$2(NativeNumber$1) : ( + for (var keys$5 = descriptors$1 ? getOwnPropertyNames$3(NativeNumber$1) : ( // ES3: 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before): 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' - ).split(','), j$1 = 0, key$1; keys$4.length > j$1; j$1++) { - if (has$2(NativeNumber$1, key$1 = keys$4[j$1]) && !has$2(NumberWrapper$1, key$1)) { - defineProperty$9(NumberWrapper$1, key$1, getOwnPropertyDescriptor$6(NativeNumber$1, key$1)); + ).split(','), j$2 = 0, key$2; keys$5.length > j$2; j$2++) { + if (has$2(NativeNumber$1, key$2 = keys$5[j$2]) && !has$2(NumberWrapper$1, key$2)) { + defineProperty$c(NumberWrapper$1, key$2, getOwnPropertyDescriptor$6(NativeNumber$1, key$2)); } } NumberWrapper$1.prototype = NumberPrototype$1; @@ -12421,13 +15920,13 @@ typeof navigator === "object" && (function () { // `Object.prototype.toString` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - var objectToString$1 = toStringTagSupport ? {}.toString : function toString() { + var objectToString$1 = toStringTagSupport$1 ? {}.toString : function toString() { return '[object ' + classof$1(this) + ']'; }; // `Object.prototype.toString` method // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - if (!toStringTagSupport) { + if (!toStringTagSupport$1) { redefine$1(Object.prototype, 'toString', objectToString$1, { unsafe: true }); } @@ -12447,27 +15946,27 @@ typeof navigator === "object" && (function () { // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, // so we use an intermediate function. - function RE(s, f) { + function RE$1(s, f) { return RegExp(s, f); } - var UNSUPPORTED_Y = fails$1(function () { + var UNSUPPORTED_Y$3 = fails$1(function () { // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var re = RE('a', 'y'); + var re = RE$1('a', 'y'); re.lastIndex = 2; return re.exec('abcd') != null; }); - var BROKEN_CARET = fails$1(function () { + var BROKEN_CARET$1 = fails$1(function () { // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = RE('^r', 'gy'); + var re = RE$1('^r', 'gy'); re.lastIndex = 2; return re.exec('str') != null; }); - var regexpStickyHelpers = { - UNSUPPORTED_Y: UNSUPPORTED_Y, - BROKEN_CARET: BROKEN_CARET + var regexpStickyHelpers$1 = { + UNSUPPORTED_Y: UNSUPPORTED_Y$3, + BROKEN_CARET: BROKEN_CARET$1 }; var nativeExec$1 = RegExp.prototype.exec; @@ -12486,18 +15985,18 @@ typeof navigator === "object" && (function () { return re1.lastIndex !== 0 || re2.lastIndex !== 0; })(); - var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; + var UNSUPPORTED_Y$4 = regexpStickyHelpers$1.UNSUPPORTED_Y || regexpStickyHelpers$1.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch. var NPCG_INCLUDED$1 = /()??/.exec('')[1] !== undefined; - var PATCH$1 = UPDATES_LAST_INDEX_WRONG$1 || NPCG_INCLUDED$1 || UNSUPPORTED_Y$1; + var PATCH$1 = UPDATES_LAST_INDEX_WRONG$1 || NPCG_INCLUDED$1 || UNSUPPORTED_Y$4; if (PATCH$1) { patchedExec$1 = function exec(str) { var re = this; var lastIndex, reCopy, match, i; - var sticky = UNSUPPORTED_Y$1 && re.sticky; + var sticky = UNSUPPORTED_Y$4 && re.sticky; var flags = regexpFlags$1.call(re); var source = re.source; var charsAdded = 0; @@ -12584,10 +16083,10 @@ typeof navigator === "object" && (function () { // https://tc39.github.io/ecma262/#sec-isregexp var isRegexp$1 = function (it) { var isRegExp; - return isObject$4(it) && ((isRegExp = it[MATCH$3]) !== undefined ? !!isRegExp : classofRaw$1(it) == 'RegExp'); + return isObject$2(it) && ((isRegExp = it[MATCH$3]) !== undefined ? !!isRegExp : classofRaw$1(it) == 'RegExp'); }; - var notARegexp = function (it) { + var notARegexp$1 = function (it) { if (isRegexp$1(it)) { throw TypeError("The method doesn't accept regular expressions"); } return it; @@ -12612,12 +16111,12 @@ typeof navigator === "object" && (function () { _export$1({ target: 'String', proto: true, forced: !correctIsRegexpLogic$1('includes') }, { includes: function includes(searchString /* , position = 0 */) { return !!~String(requireObjectCoercible$1(this)) - .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined); + .indexOf(notARegexp$1(searchString), arguments.length > 1 ? arguments[1] : undefined); } }); // `String.prototype.{ codePointAt, at }` methods implementation - var createMethod$3 = function (CONVERT_TO_STRING) { + var createMethod$9 = function (CONVERT_TO_STRING) { return function ($this, pos) { var S = String(requireObjectCoercible$1($this)); var position = toInteger$1(pos); @@ -12632,27 +16131,27 @@ typeof navigator === "object" && (function () { }; }; - var stringMultibyte = { + var stringMultibyte$1 = { // `String.prototype.codePointAt` method // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod$3(false), + codeAt: createMethod$9(false), // `String.prototype.at` method // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod$3(true) + charAt: createMethod$9(true) }; - var charAt = stringMultibyte.charAt; + var charAt$2 = stringMultibyte$1.charAt; var STRING_ITERATOR$1 = 'String Iterator'; - var setInternalState$7 = internalState$1.set; - var getInternalState$5 = internalState$1.getterFor(STRING_ITERATOR$1); + var setInternalState$a = internalState$1.set; + var getInternalState$6 = internalState$1.getterFor(STRING_ITERATOR$1); // `String.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator defineIterator$1(String, 'String', function (iterated) { - setInternalState$7(this, { + setInternalState$a(this, { type: STRING_ITERATOR$1, string: String(iterated), index: 0 @@ -12660,12 +16159,12 @@ typeof navigator === "object" && (function () { // `%StringIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next }, function next() { - var state = getInternalState$5(this); + var state = getInternalState$6(this); var string = state.string; var index = state.index; var point; if (index >= string.length) return { value: undefined, done: true }; - point = charAt(string, index); + point = charAt$2(string, index); state.index += point.length; return { value: point, done: false }; }); @@ -12695,15 +16194,15 @@ typeof navigator === "object" && (function () { // IE <= 11 replaces $0 with the whole match, as if it was $& // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 - var REPLACE_KEEPS_$0 = (function () { + var REPLACE_KEEPS_$0$1 = (function () { return 'a'.replace(/./, '$0') === '$0'; })(); - var REPLACE = wellKnownSymbol$1('replace'); + var REPLACE$1 = wellKnownSymbol$1('replace'); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { - if (/./[REPLACE]) { - return /./[REPLACE]('a', '$0') === ''; + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE$1 = (function () { + if (/./[REPLACE$1]) { + return /./[REPLACE$1]('a', '$0') === ''; } return false; })(); @@ -12757,8 +16256,8 @@ typeof navigator === "object" && (function () { !DELEGATES_TO_EXEC || (KEY === 'replace' && !( REPLACE_SUPPORTS_NAMED_GROUPS$1 && - REPLACE_KEEPS_$0 && - !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + REPLACE_KEEPS_$0$1 && + !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE$1 )) || (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC$1) ) { @@ -12775,8 +16274,8 @@ typeof navigator === "object" && (function () { } return { done: false }; }, { - REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, - REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0$1, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE$1 }); var stringMethod = methods[0]; var regexMethod = methods[1]; @@ -12792,7 +16291,7 @@ typeof navigator === "object" && (function () { ); } - if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); + if (sham) createNonEnumerableProperty$1(RegExp.prototype[SYMBOL], 'sham', true); }; // `SameValue` abstract operation @@ -12854,11 +16353,11 @@ typeof navigator === "object" && (function () { return target; }; - var freezing = !fails$1(function () { + var freezing$1 = !fails$1(function () { return Object.isExtensible(Object.preventExtensions({})); }); - var internalMetadata = createCommonjsModule(function (module) { + var internalMetadata$1 = createCommonjsModule(function (module) { var defineProperty = objectDefineProperty$1.f; @@ -12879,7 +16378,7 @@ typeof navigator === "object" && (function () { var fastKey = function (it, create) { // return a primitive with prefix - if (!isObject$4(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!isObject$2(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!has$2(it, METADATA)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; @@ -12905,7 +16404,7 @@ typeof navigator === "object" && (function () { // add metadata on freeze-family methods calling var onFreeze = function (it) { - if (freezing && meta.REQUIRED && isExtensible(it) && !has$2(it, METADATA)) setMetadata(it); + if (freezing$1 && meta.REQUIRED && isExtensible(it) && !has$2(it, METADATA)) setMetadata(it); return it; }; @@ -12918,19 +16417,19 @@ typeof navigator === "object" && (function () { hiddenKeys$2[METADATA] = true; }); - var internalMetadata_1 = internalMetadata.REQUIRED; - var internalMetadata_2 = internalMetadata.fastKey; - var internalMetadata_3 = internalMetadata.getWeakData; - var internalMetadata_4 = internalMetadata.onFreeze; + var internalMetadata_1$1 = internalMetadata$1.REQUIRED; + var internalMetadata_2$1 = internalMetadata$1.fastKey; + var internalMetadata_3$1 = internalMetadata$1.getWeakData; + var internalMetadata_4$1 = internalMetadata$1.onFreeze; - var iterate_1 = createCommonjsModule(function (module) { + var iterate_1$1 = createCommonjsModule(function (module) { var Result = function (stopped, result) { this.stopped = stopped; this.result = result; }; var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { - var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1); + var boundFunction = functionBindContext$1(fn, that, AS_ENTRIES ? 2 : 1); var iterator, iterFn, index, length, result, next, step; if (IS_ITERATOR) { @@ -12968,7 +16467,7 @@ typeof navigator === "object" && (function () { } return it; }; - var collection = function (CONSTRUCTOR_NAME, wrapper, common) { + var collection$1 = function (CONSTRUCTOR_NAME, wrapper, common) { var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; var ADDER = IS_MAP ? 'set' : 'add'; @@ -12984,11 +16483,11 @@ typeof navigator === "object" && (function () { nativeMethod.call(this, value === 0 ? 0 : value); return this; } : KEY == 'delete' ? function (key) { - return IS_WEAK && !isObject$4(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + return IS_WEAK && !isObject$2(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); } : KEY == 'get' ? function get(key) { - return IS_WEAK && !isObject$4(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); + return IS_WEAK && !isObject$2(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); } : KEY == 'has' ? function has(key) { - return IS_WEAK && !isObject$4(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + return IS_WEAK && !isObject$2(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); } : function set(key, value) { nativeMethod.call(this, key === 0 ? 0 : key, value); return this; @@ -13002,7 +16501,7 @@ typeof navigator === "object" && (function () { })))) { // create collection constructor Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); - internalMetadata.REQUIRED = true; + internalMetadata$1.REQUIRED = true; } else if (isForced_1$1(CONSTRUCTOR_NAME, true)) { var instance = new Constructor(); // early implementations not supports chaining @@ -13025,7 +16524,7 @@ typeof navigator === "object" && (function () { Constructor = wrapper(function (dummy, iterable) { anInstance$1(dummy, Constructor, CONSTRUCTOR_NAME); var that = inheritIfRequired$1(new NativeConstructor(), dummy, Constructor); - if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP); + if (iterable != undefined) iterate_1$1(iterable, that[ADDER], that, IS_MAP); return that; }); Constructor.prototype = NativePrototype; @@ -13054,7 +16553,7 @@ typeof navigator === "object" && (function () { return Constructor; }; - var getWeakData = internalMetadata.getWeakData; + var getWeakData$1 = internalMetadata$1.getWeakData; @@ -13063,42 +16562,42 @@ typeof navigator === "object" && (function () { - var setInternalState$8 = internalState$1.set; - var internalStateGetterFor = internalState$1.getterFor; - var find$1 = arrayIteration.find; - var findIndex = arrayIteration.findIndex; - var id$2 = 0; + var setInternalState$b = internalState$1.set; + var internalStateGetterFor$1 = internalState$1.getterFor; + var find$2 = arrayIteration$1.find; + var findIndex$1 = arrayIteration$1.findIndex; + var id$3 = 0; // fallback for uncaught frozen keys - var uncaughtFrozenStore = function (store) { - return store.frozen || (store.frozen = new UncaughtFrozenStore()); + var uncaughtFrozenStore$1 = function (store) { + return store.frozen || (store.frozen = new UncaughtFrozenStore$1()); }; - var UncaughtFrozenStore = function () { + var UncaughtFrozenStore$1 = function () { this.entries = []; }; - var findUncaughtFrozen = function (store, key) { - return find$1(store.entries, function (it) { + var findUncaughtFrozen$1 = function (store, key) { + return find$2(store.entries, function (it) { return it[0] === key; }); }; - UncaughtFrozenStore.prototype = { + UncaughtFrozenStore$1.prototype = { get: function (key) { - var entry = findUncaughtFrozen(this, key); + var entry = findUncaughtFrozen$1(this, key); if (entry) return entry[1]; }, has: function (key) { - return !!findUncaughtFrozen(this, key); + return !!findUncaughtFrozen$1(this, key); }, set: function (key, value) { - var entry = findUncaughtFrozen(this, key); + var entry = findUncaughtFrozen$1(this, key); if (entry) entry[1] = value; else this.entries.push([key, value]); }, 'delete': function (key) { - var index = findIndex(this.entries, function (it) { + var index = findIndex$1(this.entries, function (it) { return it[0] === key; }); if (~index) this.entries.splice(index, 1); @@ -13106,24 +16605,24 @@ typeof navigator === "object" && (function () { } }; - var collectionWeak = { + var collectionWeak$1 = { getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { var C = wrapper(function (that, iterable) { anInstance$1(that, C, CONSTRUCTOR_NAME); - setInternalState$8(that, { + setInternalState$b(that, { type: CONSTRUCTOR_NAME, - id: id$2++, + id: id$3++, frozen: undefined }); - if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP); + if (iterable != undefined) iterate_1$1(iterable, that[ADDER], that, IS_MAP); }); - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME); var define = function (that, key, value) { var state = getInternalState(that); - var data = getWeakData(anObject$1(key), true); - if (data === true) uncaughtFrozenStore(state).set(key, value); + var data = getWeakData$1(anObject$1(key), true); + if (data === true) uncaughtFrozenStore$1(state).set(key, value); else data[state.id] = value; return that; }; @@ -13133,18 +16632,18 @@ typeof navigator === "object" && (function () { // 23.4.3.3 WeakSet.prototype.delete(value) 'delete': function (key) { var state = getInternalState(this); - if (!isObject$4(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state)['delete'](key); + if (!isObject$2(key)) return false; + var data = getWeakData$1(key); + if (data === true) return uncaughtFrozenStore$1(state)['delete'](key); return data && has$2(data, state.id) && delete data[state.id]; }, // 23.3.3.4 WeakMap.prototype.has(key) // 23.4.3.4 WeakSet.prototype.has(value) has: function has(key) { var state = getInternalState(this); - if (!isObject$4(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).has(key); + if (!isObject$2(key)) return false; + var data = getWeakData$1(key); + if (data === true) return uncaughtFrozenStore$1(state).has(key); return data && has$2(data, state.id); } }); @@ -13153,9 +16652,9 @@ typeof navigator === "object" && (function () { // 23.3.3.3 WeakMap.prototype.get(key) get: function get(key) { var state = getInternalState(this); - if (isObject$4(key)) { - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).get(key); + if (isObject$2(key)) { + var data = getWeakData$1(key); + if (data === true) return uncaughtFrozenStore$1(state).get(key); return data ? data[state.id] : undefined; } }, @@ -13196,14 +16695,14 @@ typeof navigator === "object" && (function () { // `WeakMap` constructor // https://tc39.github.io/ecma262/#sec-weakmap-constructor - var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); + var $WeakMap = module.exports = collection$1('WeakMap', wrapper, collectionWeak$1); // IE11 WeakMap frozen keys fix // We can't use feature detection because it crash some old IE builds // https://github.com/zloirock/core-js/issues/485 if (nativeWeakMap$1 && IS_IE11) { - InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); - internalMetadata.REQUIRED = true; + InternalWeakMap = collectionWeak$1.getConstructor(wrapper, 'WeakMap', true); + internalMetadata$1.REQUIRED = true; var WeakMapPrototype = $WeakMap.prototype; var nativeDelete = WeakMapPrototype['delete']; var nativeHas = WeakMapPrototype.has; @@ -13211,28 +16710,28 @@ typeof navigator === "object" && (function () { var nativeSet = WeakMapPrototype.set; redefineAll$1(WeakMapPrototype, { 'delete': function (key) { - if (isObject$4(key) && !isExtensible(key)) { + if (isObject$2(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeDelete.call(this, key) || state.frozen['delete'](key); } return nativeDelete.call(this, key); }, has: function has(key) { - if (isObject$4(key) && !isExtensible(key)) { + if (isObject$2(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeHas.call(this, key) || state.frozen.has(key); } return nativeHas.call(this, key); }, get: function get(key) { - if (isObject$4(key) && !isExtensible(key)) { + if (isObject$2(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); } return nativeGet.call(this, key); }, set: function set(key, value) { - if (isObject$4(key) && !isExtensible(key)) { + if (isObject$2(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); @@ -13289,17 +16788,17 @@ typeof navigator === "object" && (function () { if (CollectionPrototype$2) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$2[ITERATOR$e] !== ArrayValues$1) try { - createNonEnumerableProperty(CollectionPrototype$2, ITERATOR$e, ArrayValues$1); + createNonEnumerableProperty$1(CollectionPrototype$2, ITERATOR$e, ArrayValues$1); } catch (error) { CollectionPrototype$2[ITERATOR$e] = ArrayValues$1; } if (!CollectionPrototype$2[TO_STRING_TAG$8]) { - createNonEnumerableProperty(CollectionPrototype$2, TO_STRING_TAG$8, COLLECTION_NAME$2); + createNonEnumerableProperty$1(CollectionPrototype$2, TO_STRING_TAG$8, COLLECTION_NAME$2); } if (domIterables$1[COLLECTION_NAME$2]) for (var METHOD_NAME$1 in es_array_iterator$1) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$2[METHOD_NAME$1] !== es_array_iterator$1[METHOD_NAME$1]) try { - createNonEnumerableProperty(CollectionPrototype$2, METHOD_NAME$1, es_array_iterator$1[METHOD_NAME$1]); + createNonEnumerableProperty$1(CollectionPrototype$2, METHOD_NAME$1, es_array_iterator$1[METHOD_NAME$1]); } catch (error) { CollectionPrototype$2[METHOD_NAME$1] = es_array_iterator$1[METHOD_NAME$1]; } @@ -13307,72 +16806,72 @@ typeof navigator === "object" && (function () { } } - var $every = arrayIteration.every; + var $every$1 = arrayIteration$1.every; - var STRICT_METHOD$1 = arrayMethodIsStrict('every'); - var USES_TO_LENGTH$4 = arrayMethodUsesToLength('every'); + var STRICT_METHOD$6 = arrayMethodIsStrict$1('every'); + var USES_TO_LENGTH$e = arrayMethodUsesToLength$1('every'); // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every - _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$1 || !USES_TO_LENGTH$4 }, { + _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$6 || !USES_TO_LENGTH$e }, { every: function every(callbackfn /* , thisArg */) { - return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $every$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); - var $forEach = arrayIteration.forEach; + var $forEach$3 = arrayIteration$1.forEach; - var STRICT_METHOD$2 = arrayMethodIsStrict('forEach'); - var USES_TO_LENGTH$5 = arrayMethodUsesToLength('forEach'); + var STRICT_METHOD$7 = arrayMethodIsStrict$1('forEach'); + var USES_TO_LENGTH$f = arrayMethodUsesToLength$1('forEach'); // `Array.prototype.forEach` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - var arrayForEach$2 = (!STRICT_METHOD$2 || !USES_TO_LENGTH$5) ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var arrayForEach$1 = (!STRICT_METHOD$7 || !USES_TO_LENGTH$f) ? function forEach(callbackfn /* , thisArg */) { + return $forEach$3(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } : [].forEach; // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - _export$1({ target: 'Array', proto: true, forced: [].forEach != arrayForEach$2 }, { - forEach: arrayForEach$2 + _export$1({ target: 'Array', proto: true, forced: [].forEach != arrayForEach$1 }, { + forEach: arrayForEach$1 }); - var $indexOf = arrayIncludes$2.indexOf; + var $indexOf$2 = arrayIncludes$1.indexOf; var nativeIndexOf$1 = [].indexOf; var NEGATIVE_ZERO$2 = !!nativeIndexOf$1 && 1 / [1].indexOf(1, -0) < 0; - var STRICT_METHOD$3 = arrayMethodIsStrict('indexOf'); - var USES_TO_LENGTH$6 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + var STRICT_METHOD$8 = arrayMethodIsStrict$1('indexOf'); + var USES_TO_LENGTH$g = arrayMethodUsesToLength$1('indexOf', { ACCESSORS: true, 1: 0 }); // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - _export$1({ target: 'Array', proto: true, forced: NEGATIVE_ZERO$2 || !STRICT_METHOD$3 || !USES_TO_LENGTH$6 }, { + _export$1({ target: 'Array', proto: true, forced: NEGATIVE_ZERO$2 || !STRICT_METHOD$8 || !USES_TO_LENGTH$g }, { indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { return NEGATIVE_ZERO$2 // convert -0 to +0 ? nativeIndexOf$1.apply(this, arguments) || 0 - : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + : $indexOf$2(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); } }); var nativeAssign$1 = Object.assign; - var defineProperty$a = Object.defineProperty; + var defineProperty$d = Object.defineProperty; // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign var objectAssign$1 = !nativeAssign$1 || fails$1(function () { // should have correct order of operations (Edge bug) - if (descriptors$1 && nativeAssign$1({ b: 1 }, nativeAssign$1(defineProperty$a({}, 'a', { + if (descriptors$1 && nativeAssign$1({ b: 1 }, nativeAssign$1(defineProperty$d({}, 'a', { enumerable: true, get: function () { - defineProperty$a(this, 'b', { + defineProperty$d(this, 'b', { value: 3, enumerable: false }); @@ -13422,16 +16921,16 @@ typeof navigator === "object" && (function () { return C === undefined || (S = anObject$1(C)[SPECIES$a]) == undefined ? defaultConstructor : aFunction$3(S); }; - var charAt$1 = stringMultibyte.charAt; + var charAt$3 = stringMultibyte$1.charAt; // `AdvanceStringIndex` abstract operation // https://tc39.github.io/ecma262/#sec-advancestringindex var advanceStringIndex$1 = function (S, index, unicode) { - return index + (unicode ? charAt$1(S, index).length : 1); + return index + (unicode ? charAt$3(S, index).length : 1); }; var arrayPush$1 = [].push; - var min$7 = Math.min; + var min$9 = Math.min; var MAX_UINT32$1 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError @@ -13534,7 +17033,7 @@ typeof navigator === "object" && (function () { var e; if ( z === null || - (e = min$7(toLength$1(splitter.lastIndex + (SUPPORTS_Y$1 ? 0 : q)), S.length)) === p + (e = min$9(toLength$1(splitter.lastIndex + (SUPPORTS_Y$1 ? 0 : q)), S.length)) === p ) { q = advanceStringIndex$1(S, q, unicodeMatching); } else { @@ -13578,10 +17077,10 @@ typeof navigator === "object" && (function () { var Collection$3 = global_1$1[COLLECTION_NAME$3]; var CollectionPrototype$3 = Collection$3 && Collection$3.prototype; // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype$3 && CollectionPrototype$3.forEach !== arrayForEach$2) try { - createNonEnumerableProperty(CollectionPrototype$3, 'forEach', arrayForEach$2); + if (CollectionPrototype$3 && CollectionPrototype$3.forEach !== arrayForEach$1) try { + createNonEnumerableProperty$1(CollectionPrototype$3, 'forEach', arrayForEach$1); } catch (error) { - CollectionPrototype$3.forEach = arrayForEach$2; + CollectionPrototype$3.forEach = arrayForEach$1; } } @@ -13629,7 +17128,7 @@ typeof navigator === "object" && (function () { var regexSeparators$1 = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators var OVERFLOW_ERROR$1 = 'Overflow: input needs wider integers to process'; var baseMinusTMin$1 = base$1 - tMin$1; - var floor$4 = Math.floor; + var floor$7 = Math.floor; var stringFromCharCode$1 = String.fromCharCode; /** @@ -13678,12 +17177,12 @@ typeof navigator === "object" && (function () { */ var adapt$1 = function (delta, numPoints, firstTime) { var k = 0; - delta = firstTime ? floor$4(delta / damp$1) : delta >> 1; - delta += floor$4(delta / numPoints); + delta = firstTime ? floor$7(delta / damp$1) : delta >> 1; + delta += floor$7(delta / numPoints); for (; delta > baseMinusTMin$1 * tMax$1 >> 1; k += base$1) { - delta = floor$4(delta / baseMinusTMin$1); + delta = floor$7(delta / baseMinusTMin$1); } - return floor$4(k + (baseMinusTMin$1 + 1) * delta / (delta + skew$1)); + return floor$7(k + (baseMinusTMin$1 + 1) * delta / (delta + skew$1)); }; /** @@ -13735,7 +17234,7 @@ typeof navigator === "object" && (function () { // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow. var handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor$4((maxInt$1 - delta) / handledCPCountPlusOne)) { + if (m - n > floor$7((maxInt$1 - delta) / handledCPCountPlusOne)) { throw RangeError(OVERFLOW_ERROR$1); } @@ -13756,7 +17255,7 @@ typeof navigator === "object" && (function () { var qMinusT = q - t; var baseMinusT = base$1 - t; output.push(stringFromCharCode$1(digitToBasic$1(t + qMinusT % baseMinusT))); - q = floor$4(qMinusT / baseMinusT); + q = floor$7(qMinusT / baseMinusT); } output.push(stringFromCharCode$1(digitToBasic$1(q))); @@ -13772,7 +17271,7 @@ typeof navigator === "object" && (function () { return output.join(''); }; - var stringPunycodeToAscii = function (input) { + var stringPunycodeToAscii$1 = function (input) { var encoded = []; var labels = input.toLowerCase().replace(regexSeparators$1, '\u002E').split('.'); var i, label; @@ -13812,12 +17311,12 @@ typeof navigator === "object" && (function () { - var $fetch$1 = getBuiltIn$1('fetch'); - var Headers$1 = getBuiltIn$1('Headers'); + var $fetch$2 = getBuiltIn$1('fetch'); + var Headers$2 = getBuiltIn$1('Headers'); var ITERATOR$g = wellKnownSymbol$1('iterator'); var URL_SEARCH_PARAMS$1 = 'URLSearchParams'; var URL_SEARCH_PARAMS_ITERATOR$1 = URL_SEARCH_PARAMS$1 + 'Iterator'; - var setInternalState$9 = internalState$1.set; + var setInternalState$c = internalState$1.set; var getInternalParamsState$1 = internalState$1.getterFor(URL_SEARCH_PARAMS$1); var getInternalIteratorState$1 = internalState$1.getterFor(URL_SEARCH_PARAMS_ITERATOR$1); @@ -13849,7 +17348,7 @@ typeof navigator === "object" && (function () { } }; - var find$2 = /[!'()~]|%20/g; + var find$3 = /[!'()~]|%20/g; var replace$1 = { '!': '%21', @@ -13865,7 +17364,7 @@ typeof navigator === "object" && (function () { }; var serialize$1 = function (it) { - return encodeURIComponent(it).replace(find$2, replacer$1); + return encodeURIComponent(it).replace(find$3, replacer$1); }; var parseSearchParams$1 = function (result, query) { @@ -13896,7 +17395,7 @@ typeof navigator === "object" && (function () { }; var URLSearchParamsIterator$1 = createIteratorConstructor$1(function Iterator(params, kind) { - setInternalState$9(this, { + setInternalState$c(this, { type: URL_SEARCH_PARAMS_ITERATOR$1, iterator: getIterator$1(getInternalParamsState$1(params).entries), kind: kind @@ -13920,7 +17419,7 @@ typeof navigator === "object" && (function () { var entries = []; var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key; - setInternalState$9(that, { + setInternalState$c(that, { type: URL_SEARCH_PARAMS$1, entries: entries, updateURL: function () { /* empty */ }, @@ -13928,7 +17427,7 @@ typeof navigator === "object" && (function () { }); if (init !== undefined) { - if (isObject$4(init)) { + if (isObject$2(init)) { iteratorMethod = getIteratorMethod$1(init); if (typeof iteratorMethod === 'function') { iterator = iteratorMethod.call(init); @@ -14060,7 +17559,7 @@ typeof navigator === "object" && (function () { // `URLSearchParams.prototype.forEach` method forEach: function forEach(callback /* , thisArg */) { var entries = getInternalParamsState$1(this).entries; - var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var boundFunction = functionBindContext$1(callback, arguments.length > 1 ? arguments[1] : undefined, 3); var index = 0; var entry; while (index < entries.length) { @@ -14106,17 +17605,17 @@ typeof navigator === "object" && (function () { // Wrap `fetch` for correct work with polyfilled `URLSearchParams` // https://github.com/zloirock/core-js/issues/674 - if (!nativeUrl$1 && typeof $fetch$1 == 'function' && typeof Headers$1 == 'function') { + if (!nativeUrl$1 && typeof $fetch$2 == 'function' && typeof Headers$2 == 'function') { _export$1({ global: true, enumerable: true, forced: true }, { fetch: function fetch(input /* , init */) { var args = [input]; var init, body, headers; if (arguments.length > 1) { init = arguments[1]; - if (isObject$4(init)) { + if (isObject$2(init)) { body = init.body; if (classof$1(body) === URL_SEARCH_PARAMS$1) { - headers = init.headers ? new Headers$1(init.headers) : new Headers$1(); + headers = init.headers ? new Headers$2(init.headers) : new Headers$2(); if (!headers.has('content-type')) { headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); } @@ -14127,7 +17626,7 @@ typeof navigator === "object" && (function () { } } args.push(init); - } return $fetch$1.apply(this, args); + } return $fetch$2.apply(this, args); } }); } @@ -14149,7 +17648,7 @@ typeof navigator === "object" && (function () { - var codeAt = stringMultibyte.codeAt; + var codeAt$1 = stringMultibyte$1.codeAt; @@ -14158,10 +17657,10 @@ typeof navigator === "object" && (function () { var NativeURL$1 = global_1$1.URL; var URLSearchParams$2 = web_urlSearchParams$1.URLSearchParams; var getInternalSearchParamsState$1 = web_urlSearchParams$1.getState; - var setInternalState$a = internalState$1.set; + var setInternalState$d = internalState$1.set; var getInternalURLState$1 = internalState$1.getterFor('URL'); - var floor$5 = Math.floor; - var pow$1 = Math.pow; + var floor$8 = Math.floor; + var pow$2 = Math.pow; var INVALID_AUTHORITY$1 = 'Invalid authority'; var INVALID_SCHEME$1 = 'Invalid scheme'; @@ -14169,7 +17668,7 @@ typeof navigator === "object" && (function () { var INVALID_PORT$1 = 'Invalid port'; var ALPHA$1 = /[A-Za-z]/; - var ALPHANUMERIC$1 = /[\d+\-.A-Za-z]/; + var ALPHANUMERIC$1 = /[\d+-.A-Za-z]/; var DIGIT$1 = /\d/; var HEX_START$1 = /^(0x|0X)/; var OCT$1 = /^[0-7]+$/; @@ -14202,7 +17701,7 @@ typeof navigator === "object" && (function () { } url.host = result; } else { - input = stringPunycodeToAscii(input); + input = stringPunycodeToAscii$1(input); if (FORBIDDEN_HOST_CODE_POINT$1.test(input)) return INVALID_HOST$1; result = parseIPv4$1(input); if (result === null) return INVALID_HOST$1; @@ -14238,12 +17737,12 @@ typeof navigator === "object" && (function () { for (index = 0; index < partsLength; index++) { number = numbers[index]; if (index == partsLength - 1) { - if (number >= pow$1(256, 5 - partsLength)) return null; + if (number >= pow$2(256, 5 - partsLength)) return null; } else if (number > 255) return null; } ipv4 = numbers.pop(); for (index = 0; index < numbers.length; index++) { - ipv4 += numbers[index] * pow$1(256, 3 - index); + ipv4 += numbers[index] * pow$2(256, 3 - index); } return ipv4; }; @@ -14358,7 +17857,7 @@ typeof navigator === "object" && (function () { result = []; for (index = 0; index < 4; index++) { result.unshift(host % 256); - host = floor$5(host / 256); + host = floor$8(host / 256); } return result.join('.'); // ipv6 } else if (typeof host == 'object') { @@ -14391,7 +17890,7 @@ typeof navigator === "object" && (function () { }); var percentEncode$1 = function (char, set) { - var code = codeAt(char, 0); + var code = codeAt$1(char, 0); return code > 0x20 && code < 0x7F && !has$2(set, char) ? char : encodeURIComponent(char); }; @@ -14875,7 +18374,7 @@ typeof navigator === "object" && (function () { var that = anInstance$1(this, URLConstructor$1, 'URL'); var base = arguments.length > 1 ? arguments[1] : undefined; var urlString = String(url); - var state = setInternalState$a(that, { type: 'URL' }); + var state = setInternalState$d(that, { type: 'URL' }); var baseState, failure; if (base !== undefined) { if (base instanceof URLConstructor$1) baseState = getInternalURLState$1(base); @@ -15144,18 +18643,18 @@ typeof navigator === "object" && (function () { URL: URLConstructor$1 }); - var $some = arrayIteration.some; + var $some$2 = arrayIteration$1.some; - var STRICT_METHOD$4 = arrayMethodIsStrict('some'); - var USES_TO_LENGTH$7 = arrayMethodUsesToLength('some'); + var STRICT_METHOD$9 = arrayMethodIsStrict$1('some'); + var USES_TO_LENGTH$h = arrayMethodUsesToLength$1('some'); // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some - _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$4 || !USES_TO_LENGTH$7 }, { + _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$9 || !USES_TO_LENGTH$h }, { some: function some(callbackfn /* , thisArg */) { - return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $some$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -15180,13 +18679,13 @@ typeof navigator === "object" && (function () { }; var nativeToFixed = 1.0.toFixed; - var floor$6 = Math.floor; + var floor$9 = Math.floor; - var pow$2 = function (x, n, acc) { - return n === 0 ? acc : n % 2 === 1 ? pow$2(x, n - 1, acc * x) : pow$2(x * x, n / 2, acc); + var pow$3 = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow$3(x, n - 1, acc * x) : pow$3(x * x, n / 2, acc); }; - var log = function (x) { + var log$1 = function (x) { var n = 0; var x2 = x; while (x2 >= 4096) { @@ -15199,7 +18698,7 @@ typeof navigator === "object" && (function () { } return n; }; - var FORCED$7 = nativeToFixed && ( + var FORCED$9 = nativeToFixed && ( 0.00008.toFixed(3) !== '0.000' || 0.9.toFixed(0) !== '1' || 1.255.toFixed(2) !== '1.25' || @@ -15211,7 +18710,7 @@ typeof navigator === "object" && (function () { // `Number.prototype.toFixed` method // https://tc39.github.io/ecma262/#sec-number.prototype.tofixed - _export$1({ target: 'Number', proto: true, forced: FORCED$7 }, { + _export$1({ target: 'Number', proto: true, forced: FORCED$9 }, { // eslint-disable-next-line max-statements toFixed: function toFixed(fractionDigits) { var number = thisNumberValue(this); @@ -15227,7 +18726,7 @@ typeof navigator === "object" && (function () { while (++index < 6) { c2 += n * data[index]; data[index] = c2 % 1e7; - c2 = floor$6(c2 / 1e7); + c2 = floor$9(c2 / 1e7); } }; @@ -15236,7 +18735,7 @@ typeof navigator === "object" && (function () { var c = 0; while (--index >= 0) { c += data[index]; - data[index] = floor$6(c / n); + data[index] = floor$9(c / n); c = (c % n) * 1e7; } }; @@ -15261,8 +18760,8 @@ typeof navigator === "object" && (function () { number = -number; } if (number > 1e-21) { - e = log(number * pow$2(2, 69, 1)) - 69; - z = e < 0 ? number * pow$2(2, -e, 1) : number / pow$2(2, e, 1); + e = log$1(number * pow$3(2, 69, 1)) - 69; + z = e < 0 ? number * pow$3(2, -e, 1) : number / pow$3(2, e, 1); z *= 0x10000000000000; e = 52 - e; if (e > 0) { @@ -15272,7 +18771,7 @@ typeof navigator === "object" && (function () { multiply(1e7, 0); j -= 7; } - multiply(pow$2(10, j, 1), 0); + multiply(pow$3(10, j, 1), 0); j = e - 1; while (j >= 23) { divide(1 << 23); @@ -15302,7 +18801,7 @@ typeof navigator === "object" && (function () { var propertyIsEnumerable$1 = objectPropertyIsEnumerable$1.f; // `Object.{ entries, values }` methods implementation - var createMethod$4 = function (TO_ENTRIES) { + var createMethod$a = function (TO_ENTRIES) { return function (it) { var O = toIndexedObject$1(it); var keys = objectKeys$1(O); @@ -15323,19 +18822,19 @@ typeof navigator === "object" && (function () { var objectToArray$1 = { // `Object.entries` method // https://tc39.github.io/ecma262/#sec-object.entries - entries: createMethod$4(true), + entries: createMethod$a(true), // `Object.values` method // https://tc39.github.io/ecma262/#sec-object.values - values: createMethod$4(false) + values: createMethod$a(false) }; - var $entries = objectToArray$1.entries; + var $entries$1 = objectToArray$1.entries; // `Object.entries` method // https://tc39.github.io/ecma262/#sec-object.entries _export$1({ target: 'Object', stat: true }, { entries: function entries(O) { - return $entries(O); + return $entries$1(O); } }); @@ -15350,8 +18849,8 @@ typeof navigator === "object" && (function () { }); var max$5 = Math.max; - var min$8 = Math.min; - var floor$7 = Math.floor; + var min$a = Math.min; + var floor$a = Math.floor; var SUBSTITUTION_SYMBOLS$1 = /\$([$&'`]|\d\d?|<[^>]*>)/g; var SUBSTITUTION_SYMBOLS_NO_NAMED$1 = /\$([$&'`]|\d\d?)/g; @@ -15415,7 +18914,7 @@ typeof navigator === "object" && (function () { result = results[i]; var matched = String(result[0]); - var position = max$5(min$8(toInteger$1(result.index), S.length), 0); + var position = max$5(min$a(toInteger$1(result.index), S.length), 0); var captures = []; // NOTE: This is equivalent to // captures = result.slice(1).map(maybeToString) @@ -15463,7 +18962,7 @@ typeof navigator === "object" && (function () { var n = +ch; if (n === 0) return match; if (n > m) { - var f = floor$7(n / 10); + var f = floor$a(n / 10); if (f === 0) return match; if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); return match; @@ -15503,42 +19002,42 @@ typeof navigator === "object" && (function () { var f$e = wellKnownSymbol$1; - var wellKnownSymbolWrapped = { + var wellKnownSymbolWrapped$1 = { f: f$e }; - var defineProperty$b = objectDefineProperty$1.f; + var defineProperty$e = objectDefineProperty$1.f; var defineWellKnownSymbol$1 = function (NAME) { var Symbol = path$1.Symbol || (path$1.Symbol = {}); - if (!has$2(Symbol, NAME)) defineProperty$b(Symbol, NAME, { - value: wellKnownSymbolWrapped.f(NAME) + if (!has$2(Symbol, NAME)) defineProperty$e(Symbol, NAME, { + value: wellKnownSymbolWrapped$1.f(NAME) }); }; - var $forEach$1 = arrayIteration.forEach; + var $forEach$4 = arrayIteration$1.forEach; var HIDDEN$1 = sharedKey$1('hidden'); var SYMBOL$1 = 'Symbol'; - var PROTOTYPE$3 = 'prototype'; + var PROTOTYPE$4 = 'prototype'; var TO_PRIMITIVE$1 = wellKnownSymbol$1('toPrimitive'); - var setInternalState$b = internalState$1.set; - var getInternalState$6 = internalState$1.getterFor(SYMBOL$1); - var ObjectPrototype$5 = Object[PROTOTYPE$3]; + var setInternalState$e = internalState$1.set; + var getInternalState$7 = internalState$1.getterFor(SYMBOL$1); + var ObjectPrototype$5 = Object[PROTOTYPE$4]; var $Symbol$1 = global_1$1.Symbol; - var $stringify = getBuiltIn$1('JSON', 'stringify'); - var nativeGetOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor$1.f; + var $stringify$1 = getBuiltIn$1('JSON', 'stringify'); + var nativeGetOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor$1.f; var nativeDefineProperty$3 = objectDefineProperty$1.f; var nativeGetOwnPropertyNames$3 = objectGetOwnPropertyNamesExternal$1.f; var nativePropertyIsEnumerable$3 = objectPropertyIsEnumerable$1.f; var AllSymbols$1 = shared$1('symbols'); var ObjectPrototypeSymbols$1 = shared$1('op-symbols'); - var StringToSymbolRegistry = shared$1('string-to-symbol-registry'); - var SymbolToStringRegistry = shared$1('symbol-to-string-registry'); - var WellKnownSymbolsStore$2 = shared$1('wks'); + var StringToSymbolRegistry$1 = shared$1('string-to-symbol-registry'); + var SymbolToStringRegistry$1 = shared$1('symbol-to-string-registry'); + var WellKnownSymbolsStore$3 = shared$1('wks'); var QObject$1 = global_1$1.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 - var USE_SETTER$1 = !QObject$1 || !QObject$1[PROTOTYPE$3] || !QObject$1[PROTOTYPE$3].findChild; + var USE_SETTER$1 = !QObject$1 || !QObject$1[PROTOTYPE$4] || !QObject$1[PROTOTYPE$4].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDescriptor$1 = descriptors$1 && fails$1(function () { @@ -15546,7 +19045,7 @@ typeof navigator === "object" && (function () { get: function () { return nativeDefineProperty$3(this, 'a', { value: 7 }).a; } })).a != 7; }) ? function (O, P, Attributes) { - var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$3(ObjectPrototype$5, P); + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$4(ObjectPrototype$5, P); if (ObjectPrototypeDescriptor) delete ObjectPrototype$5[P]; nativeDefineProperty$3(O, P, Attributes); if (ObjectPrototypeDescriptor && O !== ObjectPrototype$5) { @@ -15554,9 +19053,9 @@ typeof navigator === "object" && (function () { } } : nativeDefineProperty$3; - var wrap$2 = function (tag, description) { - var symbol = AllSymbols$1[tag] = objectCreate$1($Symbol$1[PROTOTYPE$3]); - setInternalState$b(symbol, { + var wrap$3 = function (tag, description) { + var symbol = AllSymbols$1[tag] = objectCreate$1($Symbol$1[PROTOTYPE$4]); + setInternalState$e(symbol, { type: SYMBOL$1, tag: tag, description: description @@ -15565,7 +19064,7 @@ typeof navigator === "object" && (function () { return symbol; }; - var isSymbol$1 = useSymbolAsUid ? function (it) { + var isSymbol$1 = useSymbolAsUid$1 ? function (it) { return typeof it == 'symbol'; } : function (it) { return Object(it) instanceof $Symbol$1; @@ -15591,7 +19090,7 @@ typeof navigator === "object" && (function () { anObject$1(O); var properties = toIndexedObject$1(Properties); var keys = objectKeys$1(properties).concat($getOwnPropertySymbols$1(properties)); - $forEach$1(keys, function (key) { + $forEach$4(keys, function (key) { if (!descriptors$1 || $propertyIsEnumerable$1.call(properties, key)) $defineProperty$1(O, key, properties[key]); }); return O; @@ -15612,7 +19111,7 @@ typeof navigator === "object" && (function () { var it = toIndexedObject$1(O); var key = toPrimitive$1(P, true); if (it === ObjectPrototype$5 && has$2(AllSymbols$1, key) && !has$2(ObjectPrototypeSymbols$1, key)) return; - var descriptor = nativeGetOwnPropertyDescriptor$3(it, key); + var descriptor = nativeGetOwnPropertyDescriptor$4(it, key); if (descriptor && has$2(AllSymbols$1, key) && !(has$2(it, HIDDEN$1) && it[HIDDEN$1][key])) { descriptor.enumerable = true; } @@ -15622,7 +19121,7 @@ typeof navigator === "object" && (function () { var $getOwnPropertyNames$1 = function getOwnPropertyNames(O) { var names = nativeGetOwnPropertyNames$3(toIndexedObject$1(O)); var result = []; - $forEach$1(names, function (key) { + $forEach$4(names, function (key) { if (!has$2(AllSymbols$1, key) && !has$2(hiddenKeys$2, key)) result.push(key); }); return result; @@ -15632,7 +19131,7 @@ typeof navigator === "object" && (function () { var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$5; var names = nativeGetOwnPropertyNames$3(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols$1 : toIndexedObject$1(O)); var result = []; - $forEach$1(names, function (key) { + $forEach$4(names, function (key) { if (has$2(AllSymbols$1, key) && (!IS_OBJECT_PROTOTYPE || has$2(ObjectPrototype$5, key))) { result.push(AllSymbols$1[key]); } @@ -15653,15 +19152,15 @@ typeof navigator === "object" && (function () { setSymbolDescriptor$1(this, tag, createPropertyDescriptor$1(1, value)); }; if (descriptors$1 && USE_SETTER$1) setSymbolDescriptor$1(ObjectPrototype$5, tag, { configurable: true, set: setter }); - return wrap$2(tag, description); + return wrap$3(tag, description); }; - redefine$1($Symbol$1[PROTOTYPE$3], 'toString', function toString() { - return getInternalState$6(this).tag; + redefine$1($Symbol$1[PROTOTYPE$4], 'toString', function toString() { + return getInternalState$7(this).tag; }); redefine$1($Symbol$1, 'withoutSetter', function (description) { - return wrap$2(uid$1(description), description); + return wrap$3(uid$1(description), description); }); objectPropertyIsEnumerable$1.f = $propertyIsEnumerable$1; @@ -15670,16 +19169,16 @@ typeof navigator === "object" && (function () { objectGetOwnPropertyNames$1.f = objectGetOwnPropertyNamesExternal$1.f = $getOwnPropertyNames$1; objectGetOwnPropertySymbols$1.f = $getOwnPropertySymbols$1; - wellKnownSymbolWrapped.f = function (name) { - return wrap$2(wellKnownSymbol$1(name), name); + wellKnownSymbolWrapped$1.f = function (name) { + return wrap$3(wellKnownSymbol$1(name), name); }; if (descriptors$1) { // https://github.com/tc39/proposal-Symbol-description - nativeDefineProperty$3($Symbol$1[PROTOTYPE$3], 'description', { + nativeDefineProperty$3($Symbol$1[PROTOTYPE$4], 'description', { configurable: true, get: function description() { - return getInternalState$6(this).description; + return getInternalState$7(this).description; } }); { @@ -15692,7 +19191,7 @@ typeof navigator === "object" && (function () { Symbol: $Symbol$1 }); - $forEach$1(objectKeys$1(WellKnownSymbolsStore$2), function (name) { + $forEach$4(objectKeys$1(WellKnownSymbolsStore$3), function (name) { defineWellKnownSymbol$1(name); }); @@ -15701,17 +19200,17 @@ typeof navigator === "object" && (function () { // https://tc39.github.io/ecma262/#sec-symbol.for 'for': function (key) { var string = String(key); - if (has$2(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + if (has$2(StringToSymbolRegistry$1, string)) return StringToSymbolRegistry$1[string]; var symbol = $Symbol$1(string); - StringToSymbolRegistry[string] = symbol; - SymbolToStringRegistry[symbol] = string; + StringToSymbolRegistry$1[string] = symbol; + SymbolToStringRegistry$1[symbol] = string; return symbol; }, // `Symbol.keyFor` method // https://tc39.github.io/ecma262/#sec-symbol.keyfor keyFor: function keyFor(sym) { if (!isSymbol$1(sym)) throw TypeError(sym + ' is not a symbol'); - if (has$2(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + if (has$2(SymbolToStringRegistry$1, sym)) return SymbolToStringRegistry$1[sym]; }, useSetter: function () { USE_SETTER$1 = true; }, useSimple: function () { USE_SETTER$1 = false; } @@ -15751,18 +19250,18 @@ typeof navigator === "object" && (function () { // `JSON.stringify` method behavior with symbols // https://tc39.github.io/ecma262/#sec-json.stringify - if ($stringify) { - var FORCED_JSON_STRINGIFY = !nativeSymbol$1 || fails$1(function () { + if ($stringify$1) { + var FORCED_JSON_STRINGIFY$1 = !nativeSymbol$1 || fails$1(function () { var symbol = $Symbol$1(); // MS Edge converts symbol values to JSON as {} - return $stringify([symbol]) != '[null]' + return $stringify$1([symbol]) != '[null]' // WebKit converts symbol values to JSON as null - || $stringify({ a: symbol }) != '{}' + || $stringify$1({ a: symbol }) != '{}' // V8 throws on boxed symbols - || $stringify(Object(symbol)) != '{}'; + || $stringify$1(Object(symbol)) != '{}'; }); - _export$1({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, { + _export$1({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY$1 }, { // eslint-disable-next-line no-unused-vars stringify: function stringify(it, replacer, space) { var args = [it]; @@ -15770,21 +19269,21 @@ typeof navigator === "object" && (function () { var $replacer; while (arguments.length > index) args.push(arguments[index++]); $replacer = replacer; - if (!isObject$4(replacer) && it === undefined || isSymbol$1(it)) return; // IE8 returns string on undefined - if (!isArray$4(replacer)) replacer = function (key, value) { + if (!isObject$2(replacer) && it === undefined || isSymbol$1(it)) return; // IE8 returns string on undefined + if (!isArray$2(replacer)) replacer = function (key, value) { if (typeof $replacer == 'function') value = $replacer.call(this, key, value); if (!isSymbol$1(value)) return value; }; args[1] = replacer; - return $stringify.apply(null, args); + return $stringify$1.apply(null, args); } }); } // `Symbol.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive - if (!$Symbol$1[PROTOTYPE$3][TO_PRIMITIVE$1]) { - createNonEnumerableProperty($Symbol$1[PROTOTYPE$3], TO_PRIMITIVE$1, $Symbol$1[PROTOTYPE$3].valueOf); + if (!$Symbol$1[PROTOTYPE$4][TO_PRIMITIVE$1]) { + createNonEnumerableProperty$1($Symbol$1[PROTOTYPE$4], TO_PRIMITIVE$1, $Symbol$1[PROTOTYPE$4].valueOf); } // `Symbol.prototype[@@toStringTag]` property // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag @@ -15801,17 +19300,17 @@ typeof navigator === "object" && (function () { } }); - var nativeGetOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor$1.f; + var nativeGetOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor$1.f; - var FAILS_ON_PRIMITIVES$3 = fails$1(function () { nativeGetOwnPropertyDescriptor$4(1); }); - var FORCED$8 = !descriptors$1 || FAILS_ON_PRIMITIVES$3; + var FAILS_ON_PRIMITIVES$3 = fails$1(function () { nativeGetOwnPropertyDescriptor$5(1); }); + var FORCED$a = !descriptors$1 || FAILS_ON_PRIMITIVES$3; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor - _export$1({ target: 'Object', stat: true, forced: FORCED$8, sham: !descriptors$1 }, { + _export$1({ target: 'Object', stat: true, forced: FORCED$a, sham: !descriptors$1 }, { getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { - return nativeGetOwnPropertyDescriptor$4(toIndexedObject$1(it), key); + return nativeGetOwnPropertyDescriptor$5(toIndexedObject$1(it), key); } }); @@ -15950,47 +19449,47 @@ typeof navigator === "object" && (function () { isNullOrUndefined$1 = function isNullOrUndefined(e) { return null == e; }, - isObject$5 = function isObject(e) { + isObject$3 = function isObject(e) { return getConstructor$1(e) === Object; }, isNumber$1 = function isNumber(e) { return getConstructor$1(e) === Number && !Number.isNaN(e); }, - isString$3 = function isString(e) { + isString$2 = function isString(e) { return getConstructor$1(e) === String; }, isBoolean$1 = function isBoolean(e) { return getConstructor$1(e) === Boolean; }, - isFunction$3 = function isFunction(e) { + isFunction$1 = function isFunction(e) { return getConstructor$1(e) === Function; }, - isArray$5 = function isArray(e) { + isArray$3 = function isArray(e) { return Array.isArray(e); }, isNodeList$1 = function isNodeList(e) { return instanceOf$1(e, NodeList); }, - isElement$1 = function isElement(e) { + isElement$2 = function isElement(e) { return instanceOf$1(e, Element); }, - isEvent$1 = function isEvent(e) { + isEvent$2 = function isEvent(e) { return instanceOf$1(e, Event); }, isEmpty$1 = function isEmpty(e) { - return isNullOrUndefined$1(e) || (isString$3(e) || isArray$5(e) || isNodeList$1(e)) && !e.length || isObject$5(e) && !Object.keys(e).length; + return isNullOrUndefined$1(e) || (isString$2(e) || isArray$3(e) || isNodeList$1(e)) && !e.length || isObject$3(e) && !Object.keys(e).length; }, is$1 = { nullOrUndefined: isNullOrUndefined$1, - object: isObject$5, + object: isObject$3, number: isNumber$1, - string: isString$3, + string: isString$2, boolean: isBoolean$1, - function: isFunction$3, - array: isArray$5, + function: isFunction$1, + array: isArray$3, nodeList: isNodeList$1, - element: isElement$1, - event: isEvent$1, + element: isElement$2, + event: isEvent$2, empty: isEmpty$1 }; @@ -16088,7 +19587,7 @@ typeof navigator === "object" && (function () { }]), e; }(); - var nativePromiseConstructor = global_1$1.Promise; + var nativePromiseConstructor$1 = global_1$1.Promise; var SPECIES$b = wellKnownSymbol$1('species'); @@ -16104,12 +19603,12 @@ typeof navigator === "object" && (function () { } }; - var engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent); + var engineIsIos$1 = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent$1); var location$1 = global_1$1.location; - var set$3 = global_1$1.setImmediate; + var set$4 = global_1$1.setImmediate; var clear$1 = global_1$1.clearImmediate; - var process$4 = global_1$1.process; + var process$6 = global_1$1.process; var MessageChannel$1 = global_1$1.MessageChannel; var Dispatch$1 = global_1$1.Dispatch; var counter$1 = 0; @@ -16142,8 +19641,8 @@ typeof navigator === "object" && (function () { }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: - if (!set$3 || !clear$1) { - set$3 = function setImmediate(fn) { + if (!set$4 || !clear$1) { + set$4 = function setImmediate(fn) { var args = []; var i = 1; while (arguments.length > i) args.push(arguments[i++]); @@ -16158,9 +19657,9 @@ typeof navigator === "object" && (function () { delete queue$1[id]; }; // Node.js 0.8- - if (classofRaw$1(process$4) == 'process') { + if (classofRaw$1(process$6) == 'process') { defer$1 = function (id) { - process$4.nextTick(runner$1(id)); + process$6.nextTick(runner$1(id)); }; // Sphere (JS game engine) Dispatch API } else if (Dispatch$1 && Dispatch$1.now) { @@ -16169,14 +19668,20 @@ typeof navigator === "object" && (function () { }; // Browsers with MessageChannel, includes WebWorkers // except iOS - https://github.com/zloirock/core-js/issues/624 - } else if (MessageChannel$1 && !engineIsIos) { + } else if (MessageChannel$1 && !engineIsIos$1) { channel$1 = new MessageChannel$1(); port$1 = channel$1.port2; channel$1.port1.onmessage = listener$1; - defer$1 = functionBindContext(port$1.postMessage, port$1, 1); + defer$1 = functionBindContext$1(port$1.postMessage, port$1, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global_1$1.addEventListener && typeof postMessage == 'function' && !global_1$1.importScripts && !fails$1(post$1)) { + } else if ( + global_1$1.addEventListener && + typeof postMessage == 'function' && + !global_1$1.importScripts && + !fails$1(post$1) && + location$1.protocol !== 'file:' + ) { defer$1 = post$1; global_1$1.addEventListener('message', listener$1, false); // IE8- @@ -16196,7 +19701,7 @@ typeof navigator === "object" && (function () { } var task$2 = { - set: set$3, + set: set$4, clear: clear$1 }; @@ -16206,20 +19711,20 @@ typeof navigator === "object" && (function () { var MutationObserver$2 = global_1$1.MutationObserver || global_1$1.WebKitMutationObserver; - var process$5 = global_1$1.process; + var process$7 = global_1$1.process; var Promise$2 = global_1$1.Promise; - var IS_NODE$2 = classofRaw$1(process$5) == 'process'; + var IS_NODE$2 = classofRaw$1(process$7) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` var queueMicrotaskDescriptor$1 = getOwnPropertyDescriptor$7(global_1$1, 'queueMicrotask'); var queueMicrotask$1 = queueMicrotaskDescriptor$1 && queueMicrotaskDescriptor$1.value; - var flush$1, head$1, last$1, notify$2, toggle$1, node$1, promise$1, then; + var flush$1, head$1, last$1, notify$2, toggle$1, node$1, promise$1, then$1; // modern engines have queueMicrotask method if (!queueMicrotask$1) { flush$1 = function () { var parent, fn; - if (IS_NODE$2 && (parent = process$5.domain)) parent.exit(); + if (IS_NODE$2 && (parent = process$7.domain)) parent.exit(); while (head$1) { fn = head$1.fn; head$1 = head$1.next; @@ -16237,10 +19742,10 @@ typeof navigator === "object" && (function () { // Node.js if (IS_NODE$2) { notify$2 = function () { - process$5.nextTick(flush$1); + process$7.nextTick(flush$1); }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 - } else if (MutationObserver$2 && !engineIsIos) { + } else if (MutationObserver$2 && !engineIsIos$1) { toggle$1 = true; node$1 = document.createTextNode(''); new MutationObserver$2(flush$1).observe(node$1, { characterData: true }); @@ -16251,9 +19756,9 @@ typeof navigator === "object" && (function () { } else if (Promise$2 && Promise$2.resolve) { // Promise.resolve without an argument throws an error in LG WebOS 2 promise$1 = Promise$2.resolve(undefined); - then = promise$1.then; + then$1 = promise$1.then; notify$2 = function () { - then.call(promise$1, flush$1); + then$1.call(promise$1, flush$1); }; // for other environments - macrotask based on: // - setImmediate @@ -16300,7 +19805,7 @@ typeof navigator === "object" && (function () { var promiseResolve$1 = function (C, x) { anObject$1(C); - if (isObject$4(x) && x.constructor === C) return x; + if (isObject$2(x) && x.constructor === C) return x; var promiseCapability = newPromiseCapability$2.f(C); var resolve = promiseCapability.resolve; resolve(x); @@ -16335,18 +19840,18 @@ typeof navigator === "object" && (function () { var SPECIES$c = wellKnownSymbol$1('species'); var PROMISE$1 = 'Promise'; - var getInternalState$7 = internalState$1.get; - var setInternalState$c = internalState$1.set; + var getInternalState$8 = internalState$1.get; + var setInternalState$f = internalState$1.set; var getInternalPromiseState$1 = internalState$1.getterFor(PROMISE$1); - var PromiseConstructor$1 = nativePromiseConstructor; + var PromiseConstructor$1 = nativePromiseConstructor$1; var TypeError$2 = global_1$1.TypeError; - var document$5 = global_1$1.document; - var process$6 = global_1$1.process; - var $fetch$2 = getBuiltIn$1('fetch'); + var document$4 = global_1$1.document; + var process$8 = global_1$1.process; + var $fetch$3 = getBuiltIn$1('fetch'); var newPromiseCapability$3 = newPromiseCapability$2.f; var newGenericPromiseCapability$1 = newPromiseCapability$3; - var IS_NODE$3 = classofRaw$1(process$6) == 'process'; - var DISPATCH_EVENT$1 = !!(document$5 && document$5.createEvent && global_1$1.dispatchEvent); + var IS_NODE$3 = classofRaw$1(process$8) == 'process'; + var DISPATCH_EVENT$1 = !!(document$4 && document$4.createEvent && global_1$1.dispatchEvent); var UNHANDLED_REJECTION$1 = 'unhandledrejection'; var REJECTION_HANDLED$1 = 'rejectionhandled'; var PENDING$1 = 0; @@ -16354,22 +19859,22 @@ typeof navigator === "object" && (function () { var REJECTED$1 = 2; var HANDLED$1 = 1; var UNHANDLED$1 = 2; - var Internal$1, OwnPromiseCapability$1, PromiseWrapper$1, nativeThen; + var Internal$1, OwnPromiseCapability$1, PromiseWrapper$1, nativeThen$1; - var FORCED$9 = isForced_1$1(PROMISE$1, function () { - var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor$1) !== String(PromiseConstructor$1); + var FORCED$b = isForced_1$1(PROMISE$1, function () { + var GLOBAL_CORE_JS_PROMISE = inspectSource$1(PromiseConstructor$1) !== String(PromiseConstructor$1); if (!GLOBAL_CORE_JS_PROMISE) { // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 // We can't detect it synchronously, so just check versions - if (engineV8Version === 66) return true; + if (engineV8Version$1 === 66) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test if (!IS_NODE$3 && typeof PromiseRejectionEvent != 'function') return true; } // We can't use @@species feature detection in V8 since it causes // deoptimization and performance degradation // https://github.com/zloirock/core-js/issues/679 - if (engineV8Version >= 51 && /native code/.test(PromiseConstructor$1)) return false; + if (engineV8Version$1 >= 51 && /native code/.test(PromiseConstructor$1)) return false; // Detect correctness of subclassing with @@species support var promise = PromiseConstructor$1.resolve(1); var FakePromise = function (exec) { @@ -16380,14 +19885,14 @@ typeof navigator === "object" && (function () { return !(promise.then(function () { /* empty */ }) instanceof FakePromise); }); - var INCORRECT_ITERATION$3 = FORCED$9 || !checkCorrectnessOfIteration$1(function (iterable) { + var INCORRECT_ITERATION$3 = FORCED$b || !checkCorrectnessOfIteration$1(function (iterable) { PromiseConstructor$1.all(iterable)['catch'](function () { /* empty */ }); }); // helpers - var isThenable$1 = function (it) { + var isThenable$2 = function (it) { var then; - return isObject$4(it) && typeof (then = it.then) == 'function' ? then : false; + return isObject$2(it) && typeof (then = it.then) == 'function' ? then : false; }; var notify$3 = function (promise, state, isReject) { @@ -16423,7 +19928,7 @@ typeof navigator === "object" && (function () { } if (result === reaction.promise) { reject(TypeError$2('Promise-chain cycle')); - } else if (then = isThenable$1(result)) { + } else if (then = isThenable$2(result)) { then.call(result, resolve, reject); } else resolve(result); } else reject(value); @@ -16441,7 +19946,7 @@ typeof navigator === "object" && (function () { var dispatchEvent$1 = function (name, promise, reason) { var event, handler; if (DISPATCH_EVENT$1) { - event = document$5.createEvent('Event'); + event = document$4.createEvent('Event'); event.promise = promise; event.reason = reason; event.initEvent(name, false, true); @@ -16459,7 +19964,7 @@ typeof navigator === "object" && (function () { if (IS_UNHANDLED) { result = perform$1(function () { if (IS_NODE$3) { - process$6.emit('unhandledRejection', value, promise); + process$8.emit('unhandledRejection', value, promise); } else dispatchEvent$1(UNHANDLED_REJECTION$1, promise, value); }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should @@ -16476,7 +19981,7 @@ typeof navigator === "object" && (function () { var onHandleUnhandled$1 = function (promise, state) { task$3.call(global_1$1, function () { if (IS_NODE$3) { - process$6.emit('rejectionHandled', promise); + process$8.emit('rejectionHandled', promise); } else dispatchEvent$1(REJECTION_HANDLED$1, promise, state.value); }); }; @@ -16502,7 +20007,7 @@ typeof navigator === "object" && (function () { if (unwrap) state = unwrap; try { if (promise === value) throw TypeError$2("Promise can't be resolved itself"); - var then = isThenable$1(value); + var then = isThenable$2(value); if (then) { microtask$1(function () { var wrapper = { done: false }; @@ -16526,13 +20031,13 @@ typeof navigator === "object" && (function () { }; // constructor polyfill - if (FORCED$9) { + if (FORCED$b) { // 25.4.3.1 Promise(executor) PromiseConstructor$1 = function Promise(executor) { anInstance$1(this, PromiseConstructor$1, PROMISE$1); aFunction$3(executor); Internal$1.call(this); - var state = getInternalState$7(this); + var state = getInternalState$8(this); try { executor(bind$1(internalResolve$1, this, state), bind$1(internalReject$1, this, state)); } catch (error) { @@ -16541,7 +20046,7 @@ typeof navigator === "object" && (function () { }; // eslint-disable-next-line no-unused-vars Internal$1 = function Promise(executor) { - setInternalState$c(this, { + setInternalState$f(this, { type: PROMISE$1, done: false, notified: false, @@ -16560,7 +20065,7 @@ typeof navigator === "object" && (function () { var reaction = newPromiseCapability$3(speciesConstructor$1(this, PromiseConstructor$1)); reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = IS_NODE$3 ? process$6.domain : undefined; + reaction.domain = IS_NODE$3 ? process$8.domain : undefined; state.parent = true; state.reactions.push(reaction); if (state.state != PENDING$1) notify$3(this, state, false); @@ -16574,7 +20079,7 @@ typeof navigator === "object" && (function () { }); OwnPromiseCapability$1 = function () { var promise = new Internal$1(); - var state = getInternalState$7(promise); + var state = getInternalState$8(promise); this.promise = promise; this.resolve = bind$1(internalResolve$1, promise, state); this.reject = bind$1(internalReject$1, promise, state); @@ -16585,29 +20090,29 @@ typeof navigator === "object" && (function () { : newGenericPromiseCapability$1(C); }; - if ( typeof nativePromiseConstructor == 'function') { - nativeThen = nativePromiseConstructor.prototype.then; + if ( typeof nativePromiseConstructor$1 == 'function') { + nativeThen$1 = nativePromiseConstructor$1.prototype.then; // wrap native Promise#then for native async functions - redefine$1(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) { + redefine$1(nativePromiseConstructor$1.prototype, 'then', function then(onFulfilled, onRejected) { var that = this; return new PromiseConstructor$1(function (resolve, reject) { - nativeThen.call(that, resolve, reject); + nativeThen$1.call(that, resolve, reject); }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640 }, { unsafe: true }); // wrap fetch result - if (typeof $fetch$2 == 'function') _export$1({ global: true, enumerable: true, forced: true }, { + if (typeof $fetch$3 == 'function') _export$1({ global: true, enumerable: true, forced: true }, { // eslint-disable-next-line no-unused-vars fetch: function fetch(input /* , init */) { - return promiseResolve$1(PromiseConstructor$1, $fetch$2.apply(global_1$1, arguments)); + return promiseResolve$1(PromiseConstructor$1, $fetch$3.apply(global_1$1, arguments)); } }); } } - _export$1({ global: true, wrap: true, forced: FORCED$9 }, { + _export$1({ global: true, wrap: true, forced: FORCED$b }, { Promise: PromiseConstructor$1 }); @@ -16617,7 +20122,7 @@ typeof navigator === "object" && (function () { PromiseWrapper$1 = getBuiltIn$1(PROMISE$1); // statics - _export$1({ target: PROMISE$1, stat: true, forced: FORCED$9 }, { + _export$1({ target: PROMISE$1, stat: true, forced: FORCED$b }, { // `Promise.reject` method // https://tc39.github.io/ecma262/#sec-promise.reject reject: function reject(r) { @@ -16627,7 +20132,7 @@ typeof navigator === "object" && (function () { } }); - _export$1({ target: PROMISE$1, stat: true, forced: FORCED$9 }, { + _export$1({ target: PROMISE$1, stat: true, forced: FORCED$b }, { // `Promise.resolve` method // https://tc39.github.io/ecma262/#sec-promise.resolve resolve: function resolve(x) { @@ -16648,7 +20153,7 @@ typeof navigator === "object" && (function () { var values = []; var counter = 0; var remaining = 1; - iterate_1(iterable, function (promise) { + iterate_1$1(iterable, function (promise) { var index = counter++; var alreadyCalled = false; values.push(undefined); @@ -16673,7 +20178,7 @@ typeof navigator === "object" && (function () { var reject = capability.reject; var result = perform$1(function () { var $promiseResolve = aFunction$3(C.resolve); - iterate_1(iterable, function (promise) { + iterate_1$1(iterable, function (promise) { $promiseResolve.call(C, promise).then(capability.resolve, reject); }); }); @@ -16690,7 +20195,7 @@ typeof navigator === "object" && (function () { var nativeStartsWith = ''.startsWith; - var min$9 = Math.min; + var min$b = Math.min; var CORRECT_IS_REGEXP_LOGIC = correctIsRegexpLogic$1('startsWith'); // https://github.com/zloirock/core-js/pull/702 @@ -16704,8 +20209,8 @@ typeof navigator === "object" && (function () { _export$1({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { startsWith: function startsWith(searchString /* , position = 0 */) { var that = String(requireObjectCoercible$1(this)); - notARegexp(searchString); - var index = toLength$1(min$9(arguments.length > 1 ? arguments[1] : undefined, that.length)); + notARegexp$1(searchString); + var index = toLength$1(min$b(arguments.length > 1 ? arguments[1] : undefined, that.length)); var search = String(searchString); return nativeStartsWith ? nativeStartsWith.call(that, search, index) @@ -16728,7 +20233,7 @@ typeof navigator === "object" && (function () { return input === null || typeof input === 'undefined'; }; - var isObject$6 = function isObject(input) { + var isObject$4 = function isObject(input) { return getConstructor$2(input) === Object; }; @@ -16736,7 +20241,7 @@ typeof navigator === "object" && (function () { return getConstructor$2(input) === Number && !Number.isNaN(input); }; - var isString$4 = function isString(input) { + var isString$3 = function isString(input) { return getConstructor$2(input) === String; }; @@ -16744,11 +20249,11 @@ typeof navigator === "object" && (function () { return getConstructor$2(input) === Boolean; }; - var isFunction$4 = function isFunction(input) { + var isFunction$2 = function isFunction(input) { return getConstructor$2(input) === Function; }; - var isArray$6 = function isArray(input) { + var isArray$4 = function isArray(input) { return Array.isArray(input); }; @@ -16760,7 +20265,7 @@ typeof navigator === "object" && (function () { return instanceOf$2(input, NodeList); }; - var isElement$2 = function isElement(input) { + var isElement$3 = function isElement(input) { return instanceOf$2(input, Element); }; @@ -16768,7 +20273,7 @@ typeof navigator === "object" && (function () { return getConstructor$2(input) === Text; }; - var isEvent$2 = function isEvent(input) { + var isEvent$3 = function isEvent(input) { return instanceOf$2(input, Event); }; @@ -16781,15 +20286,15 @@ typeof navigator === "object" && (function () { }; var isTrack = function isTrack(input) { - return instanceOf$2(input, TextTrack) || !isNullOrUndefined$2(input) && isString$4(input.kind); + return instanceOf$2(input, TextTrack) || !isNullOrUndefined$2(input) && isString$3(input.kind); }; var isPromise = function isPromise(input) { - return instanceOf$2(input, Promise); + return instanceOf$2(input, Promise) && isFunction$2(input.then); }; var isEmpty$2 = function isEmpty(input) { - return isNullOrUndefined$2(input) || (isString$4(input) || isArray$6(input) || isNodeList$2(input)) && !input.length || isObject$6(input) && !Object.keys(input).length; + return isNullOrUndefined$2(input) || (isString$3(input) || isArray$4(input) || isNodeList$2(input)) && !input.length || isObject$4(input) && !Object.keys(input).length; }; var isUrl = function isUrl(input) { @@ -16799,7 +20304,7 @@ typeof navigator === "object" && (function () { } // Must be string from here - if (!isString$4(input)) { + if (!isString$3(input)) { return false; } // Add the protocol if required @@ -16819,17 +20324,17 @@ typeof navigator === "object" && (function () { var is$2 = { nullOrUndefined: isNullOrUndefined$2, - object: isObject$6, + object: isObject$4, number: isNumber$2, - string: isString$4, + string: isString$3, boolean: isBoolean$2, - function: isFunction$4, - array: isArray$6, + function: isFunction$2, + array: isArray$4, weakMap: isWeakMap, nodeList: isNodeList$2, - element: isElement$2, + element: isElement$3, textNode: isTextNode, - event: isEvent$2, + event: isEvent$3, keyboardEvent: isKeyboardEvent, cue: isCue, track: isTrack, @@ -16881,7 +20386,7 @@ typeof navigator === "object" && (function () { }; // `Array.prototype.{ reduce, reduceRight }` methods implementation - var createMethod$5 = function (IS_RIGHT) { + var createMethod$b = function (IS_RIGHT) { return function (that, callbackfn, argumentsLength, memo) { aFunction$3(callbackfn); var O = toObject$1(that); @@ -16910,24 +20415,24 @@ typeof navigator === "object" && (function () { var arrayReduce$1 = { // `Array.prototype.reduce` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - left: createMethod$5(false), + left: createMethod$b(false), // `Array.prototype.reduceRight` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright - right: createMethod$5(true) + right: createMethod$b(true) }; - var $reduce = arrayReduce$1.left; + var $reduce$1 = arrayReduce$1.left; - var STRICT_METHOD$5 = arrayMethodIsStrict('reduce'); - var USES_TO_LENGTH$8 = arrayMethodUsesToLength('reduce', { 1: 0 }); + var STRICT_METHOD$a = arrayMethodIsStrict$1('reduce'); + var USES_TO_LENGTH$i = arrayMethodUsesToLength$1('reduce', { 1: 0 }); // `Array.prototype.reduce` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$5 || !USES_TO_LENGTH$8 }, { + _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$a || !USES_TO_LENGTH$i }, { reduce: function reduce(callbackfn /* , initialValue */) { - return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + return $reduce$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); } }); @@ -16972,7 +20477,7 @@ typeof navigator === "object" && (function () { return extend$1.apply(void 0, [target].concat(sources)); } - function wrap$3(elements, wrapper) { + function wrap$4(elements, wrapper) { // Convert `elements` to an array, if necessary. var targets = elements.length ? elements : [elements]; // Loops backwards to prevent having to clone the wrapper on the // first element (see `child` below). @@ -17177,12 +20682,33 @@ typeof navigator === "object" && (function () { } // Element matches selector function matches$2(element, selector) { + var _Element = Element, + prototype = _Element.prototype; function match() { return Array.from(document.querySelectorAll(selector)).includes(this); } - var method = match; + var method = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match; + return method.call(element, selector); + } // Closest ancestor element matching selector (also tests element itself) + + function closest(element, selector) { + var _Element2 = Element, + prototype = _Element2.prototype; // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill + + function closestElement() { + var el = this; + + do { + if (matches$2.matches(el, selector)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + + return null; + } + + var method = prototype.closest || closestElement; return method.call(element, selector); } // Find all elements @@ -17454,6 +20980,19 @@ typeof navigator === "object" && (function () { }).then(function () {}); } + /** + * Silence a Promise-like object. + * This is useful for avoiding non-harmful, but potentially confusing "uncaught + * play promise" rejection error messages. + * @param {Object} value An object that may or may not be `Promise`-like. + */ + + function silencePromise(value) { + if (is$2.promise(value)) { + value.then(null, function () {}); + } + } + function validateRatio(input) { if (!is$2.array(input) && (!is$2.string(input) || !input.includes(':'))) { return false; @@ -17522,8 +21061,8 @@ typeof navigator === "object" && (function () { var padding = 100 / w * h; wrapper.style.paddingBottom = "".concat(padding, "%"); // For Vimeo we have an extra <div> to hide the standard controls and UI - if (this.isVimeo && this.supported.ui) { - var height = 240; + if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) { + var height = 100 / this.media.offsetWidth * parseInt(window.getComputedStyle(this.media).paddingBottom, 10); var offset = (height - padding) / (height / 50); this.media.style.transform = "translateY(-".concat(offset, "%)"); } else if (this.isHTML5) { @@ -17629,7 +21168,7 @@ typeof navigator === "object" && (function () { player.currentTime = currentTime; // Resume playing if (!paused) { - player.play(); + silencePromise(player.play()); } }); // Load new source @@ -17676,7 +21215,7 @@ typeof navigator === "object" && (function () { }); } // Get the closest value in an array - function closest(array, value) { + function closest$1(array, value) { if (!is$2.array(array) || !array.length) { return null; } @@ -17686,8 +21225,8 @@ typeof navigator === "object" && (function () { }); } - var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$1('slice'); - var USES_TO_LENGTH$9 = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 }); + var HAS_SPECIES_SUPPORT$6 = arrayMethodHasSpeciesSupport$1('slice'); + var USES_TO_LENGTH$j = arrayMethodUsesToLength$1('slice', { ACCESSORS: true, 0: 0, 1: 2 }); var SPECIES$d = wellKnownSymbol$1('species'); var nativeSlice$1 = [].slice; @@ -17696,7 +21235,7 @@ typeof navigator === "object" && (function () { // `Array.prototype.slice` method // https://tc39.github.io/ecma262/#sec-array.prototype.slice // fallback for not array-like ES3 strings and DOM objects - _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$9 }, { + _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$6 || !USES_TO_LENGTH$j }, { slice: function slice(start, end) { var O = toIndexedObject$1(this); var length = toLength$1(O.length); @@ -17704,12 +21243,12 @@ typeof navigator === "object" && (function () { var fin = toAbsoluteIndex$1(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible var Constructor, result, n; - if (isArray$4(O)) { + if (isArray$2(O)) { Constructor = O.constructor; // cross-realm fallback - if (typeof Constructor == 'function' && (Constructor === Array || isArray$4(Constructor.prototype))) { + if (typeof Constructor == 'function' && (Constructor === Array || isArray$2(Constructor.prototype))) { Constructor = undefined; - } else if (isObject$4(Constructor)) { + } else if (isObject$2(Constructor)) { Constructor = Constructor[SPECIES$d]; if (Constructor === null) Constructor = undefined; } @@ -17724,14 +21263,14 @@ typeof navigator === "object" && (function () { } }); - var defineProperty$c = objectDefineProperty$1.f; - var getOwnPropertyNames$3 = objectGetOwnPropertyNames$1.f; + var defineProperty$f = objectDefineProperty$1.f; + var getOwnPropertyNames$4 = objectGetOwnPropertyNames$1.f; - var setInternalState$d = internalState$1.set; + var setInternalState$g = internalState$1.set; @@ -17744,9 +21283,9 @@ typeof navigator === "object" && (function () { // "new" should create a new object, old webkit bug var CORRECT_NEW$1 = new NativeRegExp$1(re1$1) !== re1$1; - var UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y; + var UNSUPPORTED_Y$5 = regexpStickyHelpers$1.UNSUPPORTED_Y; - var FORCED$a = descriptors$1 && isForced_1$1('RegExp', (!CORRECT_NEW$1 || UNSUPPORTED_Y$2 || fails$1(function () { + var FORCED$c = descriptors$1 && isForced_1$1('RegExp', (!CORRECT_NEW$1 || UNSUPPORTED_Y$5 || fails$1(function () { re2$1[MATCH$5] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match return NativeRegExp$1(re1$1) != re1$1 || NativeRegExp$1(re2$1) == re2$1 || NativeRegExp$1(re1$1, 'i') != '/a/i'; @@ -17754,7 +21293,7 @@ typeof navigator === "object" && (function () { // `RegExp` constructor // https://tc39.github.io/ecma262/#sec-regexp-constructor - if (FORCED$a) { + if (FORCED$c) { var RegExpWrapper$1 = function RegExp(pattern, flags) { var thisIsRegExp = this instanceof RegExpWrapper$1; var patternIsRegExp = isRegexp$1(pattern); @@ -17772,7 +21311,7 @@ typeof navigator === "object" && (function () { pattern = pattern.source; } - if (UNSUPPORTED_Y$2) { + if (UNSUPPORTED_Y$5) { sticky = !!flags && flags.indexOf('y') > -1; if (sticky) flags = flags.replace(/y/g, ''); } @@ -17783,20 +21322,20 @@ typeof navigator === "object" && (function () { RegExpWrapper$1 ); - if (UNSUPPORTED_Y$2 && sticky) setInternalState$d(result, { sticky: sticky }); + if (UNSUPPORTED_Y$5 && sticky) setInternalState$g(result, { sticky: sticky }); return result; }; var proxy$1 = function (key) { - key in RegExpWrapper$1 || defineProperty$c(RegExpWrapper$1, key, { + key in RegExpWrapper$1 || defineProperty$f(RegExpWrapper$1, key, { configurable: true, get: function () { return NativeRegExp$1[key]; }, set: function (it) { NativeRegExp$1[key] = it; } }); }; - var keys$5 = getOwnPropertyNames$3(NativeRegExp$1); - var index = 0; - while (keys$5.length > index) proxy$1(keys$5[index++]); + var keys$6 = getOwnPropertyNames$4(NativeRegExp$1); + var index$1 = 0; + while (keys$6.length > index$1) proxy$1(keys$6[index$1++]); RegExpPrototype$3.constructor = RegExpWrapper$1; RegExpWrapper$1.prototype = RegExpPrototype$3; redefine$1(global_1$1, 'RegExp', RegExpWrapper$1); @@ -17831,19 +21370,19 @@ typeof navigator === "object" && (function () { return (current / max * 100).toFixed(2); } // Replace all occurances of a string in a string - function replaceAll() { + var replaceAll = function replaceAll() { var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var find = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var replace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'), 'g'), replace.toString()); - } // Convert to title case + }; // Convert to title case - function toTitleCase() { + var toTitleCase = function toTitleCase() { var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; return input.toString().replace(/\w\S*/g, function (text) { return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase(); }); - } // Convert string to pascalCase + }; // Convert string to pascalCase function toPascalCase() { var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; @@ -18100,13 +21639,13 @@ typeof navigator === "object" && (function () { } var ceil$2 = Math.ceil; - var floor$8 = Math.floor; + var floor$b = Math.floor; // `Math.trunc` method // https://tc39.github.io/ecma262/#sec-math.trunc _export$1({ target: 'Math', stat: true }, { trunc: function trunc(it) { - return (it > 0 ? floor$8 : ceil$2)(it); + return (it > 0 ? floor$b : ceil$2)(it); } }); @@ -18950,39 +22489,39 @@ typeof navigator === "object" && (function () { // Set the looping options /* setLoopMenu() { - // Menu required - if (!is.element(this.elements.settings.panels.loop)) { - return; - } - const options = ['start', 'end', 'all', 'reset']; - const list = this.elements.settings.panels.loop.querySelector('[role="menu"]'); - // Show the pane and tab - toggleHidden(this.elements.settings.buttons.loop, false); - toggleHidden(this.elements.settings.panels.loop, false); - // Toggle the pane and tab - const toggle = !is.empty(this.loop.options); - controls.toggleMenuButton.call(this, 'loop', toggle); - // Empty the menu - emptyElement(list); - options.forEach(option => { - const item = createElement('li'); - const button = createElement( - 'button', - extend(getAttributesFromSelector(this.config.selectors.buttons.loop), { - type: 'button', - class: this.config.classNames.control, - 'data-plyr-loop-action': option, - }), - i18n.get(option, this.config) - ); - if (['start', 'end'].includes(option)) { - const badge = controls.createBadge.call(this, '00:00'); - button.appendChild(badge); - } - item.appendChild(button); - list.appendChild(item); - }); - }, */ + // Menu required + if (!is.element(this.elements.settings.panels.loop)) { + return; + } + const options = ['start', 'end', 'all', 'reset']; + const list = this.elements.settings.panels.loop.querySelector('[role="menu"]'); + // Show the pane and tab + toggleHidden(this.elements.settings.buttons.loop, false); + toggleHidden(this.elements.settings.panels.loop, false); + // Toggle the pane and tab + const toggle = !is.empty(this.loop.options); + controls.toggleMenuButton.call(this, 'loop', toggle); + // Empty the menu + emptyElement(list); + options.forEach(option => { + const item = createElement('li'); + const button = createElement( + 'button', + extend(getAttributesFromSelector(this.config.selectors.buttons.loop), { + type: 'button', + class: this.config.classNames.control, + 'data-plyr-loop-action': option, + }), + i18n.get(option, this.config) + ); + if (['start', 'end'].includes(option)) { + const badge = controls.createBadge.call(this, '00:00'); + button.appendChild(badge); + } + item.appendChild(button); + list.appendChild(item); + }); + }, */ // Get current selected caption language // TODO: rework this to user the getter in the API? // Set a list of available captions languages @@ -19645,7 +23184,7 @@ typeof navigator === "object" && (function () { * @param {Boolean} safe - failsafe parsing */ - function parseUrl$2(input) { + function parseUrl$1(input) { var safe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var url = input; @@ -19708,7 +23247,7 @@ typeof navigator === "object" && (function () { var elements = this.media.querySelectorAll('track'); Array.from(elements).forEach(function (track) { var src = track.getAttribute('src'); - var url = parseUrl$2(src); + var url = parseUrl$1(src); if (url !== null && url.hostname !== window.location.href.hostname && ['http:', 'https:'].includes(url.protocol)) { fetch(src, 'blob').then(function (blob) { @@ -19784,9 +23323,15 @@ typeof navigator === "object" && (function () { meta.set(track, { default: track.mode === 'showing' }); // Turn off native caption rendering to avoid double captions + // Note: mode='hidden' forces a track to download. To ensure every track + // isn't downloaded at once, only 'showing' tracks should be reassigned // eslint-disable-next-line no-param-reassign - track.mode = 'hidden'; // Add event listener for cue changes + if (track.mode === 'showing') { + // eslint-disable-next-line no-param-reassign + track.mode = 'hidden'; + } // Add event listener for cue changes + on.call(_this, track, 'cuechange', function () { return captions.updateCues.call(_this); @@ -19810,6 +23355,8 @@ typeof navigator === "object" && (function () { // Toggle captions display // Used internally for the toggleCaptions method, with the passive option forced to false toggle: function toggle(input) { + var _this2 = this; + var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; // If there's no full support @@ -19856,7 +23403,15 @@ typeof navigator === "object" && (function () { controls.updateSetting.call(this, 'captions'); // Trigger event (not used internally) triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled'); - } + } // Wait for the call stack to clear before setting mode='hidden' + // on the active track - forcing the browser to download it + + + setTimeout(function () { + if (active && _this2.captions.toggled) { + _this2.captions.currentTrackNode.mode = 'hidden'; + } + }); }, // Set captions by track index // Used internally for the currentTrack setter with the passive option forced to false @@ -19937,7 +23492,7 @@ typeof navigator === "object" && (function () { // If update is false it will also ignore tracks without metadata // This is used to "freeze" the language options when captions.update is false getTracks: function getTracks() { - var _this2 = this; + var _this3 = this; var update = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; // Handle media or textTracks missing or null @@ -19945,20 +23500,20 @@ typeof navigator === "object" && (function () { // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata) return tracks.filter(function (track) { - return !_this2.isHTML5 || update || _this2.captions.meta.has(track); + return !_this3.isHTML5 || update || _this3.captions.meta.has(track); }).filter(function (track) { return ['captions', 'subtitles'].includes(track.kind); }); }, // Match tracks based on languages and get the first findTrack: function findTrack(languages) { - var _this3 = this; + var _this4 = this; var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var tracks = captions.getTracks.call(this); var sortIsDefault = function sortIsDefault(track) { - return Number((_this3.captions.meta.get(track) || {}).default); + return Number((_this4.captions.meta.get(track) || {}).default); }; var sorted = Array.from(tracks).sort(function (a, b) { @@ -20091,7 +23646,7 @@ typeof navigator === "object" && (function () { // Sprite (for icons) loadSprite: true, iconPrefix: 'plyr', - iconUrl: 'https://cdn.plyr.io/3.5.10/plyr.svg', + iconUrl: 'https://cdn.plyr.io/3.6.1/plyr.svg', // Blank video (used to prevent errors on source change) blankVideo: 'https://cdn.plyr.io/static/blank.mp4', // Quality default @@ -20139,6 +23694,9 @@ typeof navigator === "object" && (function () { fallback: true, // Fallback using full viewport/window iosNative: false // Use the native fullscreen in iOS (disables custom controls) + // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode + // Non-ancestors of the player element will be ignored + // container: null, // defaults to the player element }, // Local storage @@ -20376,16 +23934,16 @@ typeof navigator === "object" && (function () { title: false, speed: true, transparent: false, - // These settings require a pro or premium account to work - sidedock: false, - controls: false, + // Whether the owner of the video has a Pro or Business account + // (which allows us to properly hide controls without CSS hacks, etc) + premium: false, // Custom settings from Plyr referrerPolicy: null // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy }, // YouTube plugin youtube: { - noCookie: false, + noCookie: true, // Whether to use an alternative version of YouTube without cookies rel: 0, // No related vids @@ -20495,7 +24053,10 @@ typeof navigator === "object" && (function () { y: 0 }; // Force the use of 'full window/browser' rather than fullscreen - this.forceFallback = player.config.fullscreen.fallback === 'force'; // Register event listeners + this.forceFallback = player.config.fullscreen.fallback === 'force'; // Get the fullscreen element + // Checks container is an ancestor, defaults to null + + this.player.elements.fullscreen = player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container); // Register event listeners // Handle event (incase user presses escape etc) on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : "".concat(this.prefix, "fullscreenchange"), function () { @@ -20668,7 +24229,7 @@ typeof navigator === "object" && (function () { if (browser.isIos && this.player.config.fullscreen.iosNative) { this.target.webkitExitFullscreen(); - this.player.play(); + silencePromise(this.player.play()); } else if (!Fullscreen.native || this.forceFallback) { this.toggleFallback(false); } else if (!this.prefix) { @@ -20715,13 +24276,13 @@ typeof navigator === "object" && (function () { } var element = !this.prefix ? document.fullscreenElement : document["".concat(this.prefix).concat(this.property, "Element")]; - return element === this.target; + return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target; } // Get target element }, { key: "target", get: function get() { - return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.container; + return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.fullscreen || this.player.elements.container; } }], [{ key: "native", @@ -20930,12 +24491,7 @@ typeof navigator === "object" && (function () { } // Set property synchronously to respect the call order - this.media.setAttribute('poster', poster); // HTML5 uses native poster attribute - - if (this.isHTML5) { - return Promise.resolve(poster); - } // Wait until ui is ready - + this.media.setAttribute('data-poster', poster); // Wait until ui is ready return ready.call(this) // Load image .then(function () { @@ -21011,6 +24567,26 @@ typeof navigator === "object" && (function () { this.toggleControls(Boolean(force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek)); } + }, + // Migrate any custom properties from the media to the parent + migrateStyles: function migrateStyles() { + var _this5 = this; + + // Loop through values (as they are the keys when the object is spread 🤔) + Object.values(_objectSpread2({}, this.media.style)) // We're only fussed about Plyr specific properties + .filter(function (key) { + return !is$2.empty(key) && key.startsWith('--plyr'); + }).forEach(function (key) { + // Set on the container + _this5.elements.container.style.setProperty(key, _this5.media.style.getPropertyValue(key)); // Clean up from media element + + + _this5.media.style.removeProperty(key); + }); // Remove attribute if empty + + if (is$2.empty(this.media.style)) { + this.media.removeAttribute('style'); + } } }; @@ -21105,7 +24681,7 @@ typeof navigator === "object" && (function () { case 75: // Space and K key if (!repeat) { - player.togglePlay(); + silencePromise(player.togglePlay()); } break; @@ -21219,15 +24795,17 @@ typeof navigator === "object" && (function () { removeCurrent(); // Delay the adding of classname until the focus has changed // This event fires before the focusin event - this.focusTimer = setTimeout(function () { - var focused = document.activeElement; // Ignore if current focus element isn't inside the player + if (event.type !== 'focusout') { + this.focusTimer = setTimeout(function () { + var focused = document.activeElement; // Ignore if current focus element isn't inside the player - if (!elements.container.contains(focused)) { - return; - } + if (!elements.container.contains(focused)) { + return; + } - toggleClass(document.activeElement, player.config.classNames.tabFocus, true); - }, 10); + toggleClass(document.activeElement, player.config.classNames.tabFocus, true); + }, 10); + } } // Global window & document listeners }, { @@ -21245,7 +24823,7 @@ typeof navigator === "object" && (function () { once.call(player, document.body, 'touchstart', this.firstTouch); // Tab focus detection - toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true); + toggleListener.call(player, document.body, 'keydown focus blur focusout', this.setTabFocus, toggle, false, true); } // Container listeners }, { @@ -21288,7 +24866,7 @@ typeof navigator === "object" && (function () { }); // Set a gutter for Vimeo var setGutter = function setGutter(ratio, padding, toggle) { - if (!player.isVimeo) { + if (!player.isVimeo || player.config.vimeo.premium) { return; } @@ -21345,7 +24923,7 @@ typeof navigator === "object" && (function () { ratio = _setPlayerSize.ratio; // Set Vimeo gutter - setGutter(ratio, padding, isEnter); // If not using native fullscreen, we need to check for resizes of viewport + setGutter(ratio, padding, isEnter); // If not using native browser fullscreen API, we need to check for resizes of viewport if (!usingNative) { if (isEnter) { @@ -21423,9 +25001,13 @@ typeof navigator === "object" && (function () { if (player.ended) { _this.proxy(event, player.restart, 'restart'); - _this.proxy(event, player.play, 'play'); + _this.proxy(event, function () { + silencePromise(player.play()); + }, 'play'); } else { - _this.proxy(event, player.togglePlay, 'play'); + _this.proxy(event, function () { + silencePromise(player.togglePlay()); + }, 'play'); } }); } // Disable right click @@ -21523,7 +25105,9 @@ typeof navigator === "object" && (function () { if (elements.buttons.play) { Array.from(elements.buttons.play).forEach(function (button) { - _this3.bind(button, 'click', player.togglePlay, 'play'); + _this3.bind(button, 'click', function () { + silencePromise(player.togglePlay()); + }, 'play'); }); } // Pause @@ -21620,7 +25204,7 @@ typeof navigator === "object" && (function () { if (play && done) { seek.removeAttribute(attribute); - player.play(); + silencePromise(player.play()); } else if (!done && player.playing) { seek.setAttribute(attribute, ''); player.pause(); @@ -21718,7 +25302,18 @@ typeof navigator === "object" && (function () { this.bind(elements.controls, 'mouseenter mouseleave', function (event) { elements.controls.hover = !player.touch && event.type === 'mouseenter'; - }); // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting) + }); // Also update controls.hover state for any non-player children of fullscreen element (as above) + + if (elements.fullscreen) { + Array.from(elements.fullscreen.children).filter(function (c) { + return !c.contains(elements.container); + }).forEach(function (child) { + _this3.bind(child, 'mouseenter mouseleave', function (event) { + elements.controls.hover = !player.touch && event.type === 'mouseenter'; + }); + }); + } // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting) + this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', function (event) { elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type); @@ -21774,18 +25369,18 @@ typeof navigator === "object" && (function () { return Listeners; }(); - var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$1('splice'); - var USES_TO_LENGTH$a = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 }); + var HAS_SPECIES_SUPPORT$7 = arrayMethodHasSpeciesSupport$1('splice'); + var USES_TO_LENGTH$k = arrayMethodUsesToLength$1('splice', { ACCESSORS: true, 0: 0, 1: 2 }); var max$7 = Math.max; - var min$a = Math.min; + var min$c = Math.min; var MAX_SAFE_INTEGER$3 = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_LENGTH_EXCEEDED$1 = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method // https://tc39.github.io/ecma262/#sec-array.prototype.splice // with adding support of @@species - _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$a }, { + _export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$7 || !USES_TO_LENGTH$k }, { splice: function splice(start, deleteCount /* , ...items */) { var O = toObject$1(this); var len = toLength$1(O.length); @@ -21799,7 +25394,7 @@ typeof navigator === "object" && (function () { actualDeleteCount = len - actualStart; } else { insertCount = argumentsLength - 2; - actualDeleteCount = min$a(max$7(toInteger$1(deleteCount), 0), len - actualStart); + actualDeleteCount = min$c(max$7(toInteger$1(deleteCount), 0), len - actualStart); } if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$3) { throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED$1); @@ -22187,15 +25782,28 @@ typeof navigator === "object" && (function () { var _this = this; var player = this; - var config = player.config.vimeo; // Get Vimeo params for the iframe + var config = player.config.vimeo; + + var premium = config.premium, + referrerPolicy = config.referrerPolicy, + frameParams = _objectWithoutProperties(config, ["premium", "referrerPolicy"]); // If the owner has a pro or premium account then we can hide controls etc + + + if (premium) { + Object.assign(frameParams, { + controls: false, + sidedock: false + }); + } // Get Vimeo params for the iframe + - var params = buildUrlParams(extend$1({}, { + var params = buildUrlParams(_objectSpread2({ loop: player.config.loop.active, autoplay: player.autoplay, muted: player.muted, gesture: 'media', playsinline: !this.config.fullscreen.iosNative - }, config)); // Get the source URL or ID + }, frameParams)); // Get the source URL or ID var source = player.media.getAttribute('src'); // Get from <div> if needed @@ -22209,22 +25817,27 @@ typeof navigator === "object" && (function () { var src = format(player.config.urls.vimeo.iframe, id, params); iframe.setAttribute('src', src); iframe.setAttribute('allowfullscreen', ''); - iframe.setAttribute('allowtransparency', ''); - iframe.setAttribute('allow', 'autoplay'); // Set the referrer policy if required + iframe.setAttribute('allow', 'autoplay,fullscreen,picture-in-picture'); // Set the referrer policy if required - if (!is$2.empty(config.referrerPolicy)) { - iframe.setAttribute('referrerPolicy', config.referrerPolicy); - } // Get poster, if already set + if (!is$2.empty(referrerPolicy)) { + iframe.setAttribute('referrerPolicy', referrerPolicy); + } // Inject the package - var poster = player.poster; // Inject the package + var poster = player.poster; + + if (premium) { + iframe.setAttribute('data-poster', poster); + player.media = replaceElement(iframe, player.media); + } else { + var wrapper = createElement$1('div', { + class: player.config.classNames.embedContainer, + 'data-poster': poster + }); + wrapper.appendChild(iframe); + player.media = replaceElement(wrapper, player.media); + } // Get poster image - var wrapper = createElement$1('div', { - poster: poster, - class: player.config.classNames.embedContainer - }); - wrapper.appendChild(iframe); - player.media = replaceElement(wrapper, player.media); // Get poster image fetch(format(player.config.urls.vimeo.api, id), 'json').then(function (response) { if (is$2.empty(response)) { @@ -22308,6 +25921,9 @@ typeof navigator === "object" && (function () { player.embed.setPlaybackRate(input).then(function () { speed = input; triggerEvent.call(player, player.media, 'ratechange'); + }).catch(function () { + // Cannot set Playback Rate, Video is probably not on Pro account + player.options.speed = [1]; }); } }); // Volume @@ -22592,7 +26208,7 @@ typeof navigator === "object" && (function () { var container = createElement$1('div', { id: id, - poster: poster + 'data-poster': poster }); player.media = replaceElement(container, player.media); // Id to poster wrapper @@ -22910,14 +26526,12 @@ typeof navigator === "object" && (function () { class: this.config.classNames.video }); // Wrap the video in a container - wrap$3(this.media, this.elements.wrapper); // Faux poster container + wrap$4(this.media, this.elements.wrapper); // Poster image container - if (this.isEmbed) { - this.elements.poster = createElement$1('div', { - class: this.config.classNames.poster - }); - this.elements.wrapper.appendChild(this.elements.poster); - } + this.elements.poster = createElement$1('div', { + class: this.config.classNames.poster + }); + this.elements.wrapper.appendChild(this.elements.poster); } if (this.isHTML5) { @@ -23044,6 +26658,8 @@ typeof navigator === "object" && (function () { * mobile devices, this initialization is done as the result of a user action. */ value: function setupIMA() { + var _this4 = this; + // Create the container for our advertisements this.elements.container = createElement$1('div', { class: this.player.config.classNames.ads @@ -23056,7 +26672,16 @@ typeof navigator === "object" && (function () { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads - this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Request video ads to be pre-loaded + this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Create ads loader + + this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events + + this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) { + return _this4.onAdsManagerLoaded(event); + }, false); + this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) { + return _this4.onAdError(error); + }, false); // Request video ads to be pre-loaded this.requestAds(); } @@ -23067,21 +26692,10 @@ typeof navigator === "object" && (function () { }, { key: "requestAds", value: function requestAds() { - var _this4 = this; - var container = this.player.elements.container; try { - // Create ads loader - this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events - - this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) { - return _this4.onAdsManagerLoaded(event); - }, false); - this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) { - return _this4.onAdError(error); - }, false); // Request video ads - + // Request video ads var request = new google.ima.AdsRequest(); request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK // to select the correct creative if multiple are returned @@ -23260,7 +26874,13 @@ typeof navigator === "object" && (function () { // }; // TODO: So there is still this thing where a video should only be allowed to start // playing when the IMA SDK is ready or has failed - this.loadAds(); + if (this.player.ended) { + this.loadAds(); + } else { + // The SDK won't allow new ads to be called without receiving a contentComplete() + this.loader.contentComplete(); + } + break; case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED: @@ -23396,7 +27016,7 @@ typeof navigator === "object" && (function () { this.playing = false; // Play video - this.player.media.play(); + silencePromise(this.player.media.play()); } /** * Pause our video @@ -23453,7 +27073,9 @@ typeof navigator === "object" && (function () { _this11.on('loaded', resolve); _this11.player.debug.log(_this11.manager); - }); // Now request some new advertisements + }); // Now that the manager has been destroyed set it to also be un-initialized + + _this11.initialized = false; // Now request some new advertisements _this11.requestAds(); }).catch(function () {}); @@ -23566,46 +27188,46 @@ typeof navigator === "object" && (function () { return Ads; }(); - var $findIndex = arrayIteration.findIndex; + var $findIndex$1 = arrayIteration$1.findIndex; var FIND_INDEX = 'findIndex'; var SKIPS_HOLES$2 = true; - var USES_TO_LENGTH$b = arrayMethodUsesToLength(FIND_INDEX); + var USES_TO_LENGTH$l = arrayMethodUsesToLength$1(FIND_INDEX); // Shouldn't skip holes if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES$2 = false; }); // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findindex - _export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$2 || !USES_TO_LENGTH$b }, { + _export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$2 || !USES_TO_LENGTH$l }, { findIndex: function findIndex(callbackfn /* , that = undefined */) { - return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return $findIndex$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables$1(FIND_INDEX); - var min$b = Math.min; + var min$d = Math.min; var nativeLastIndexOf$1 = [].lastIndexOf; var NEGATIVE_ZERO$3 = !!nativeLastIndexOf$1 && 1 / [1].lastIndexOf(1, -0) < 0; - var STRICT_METHOD$6 = arrayMethodIsStrict('lastIndexOf'); + var STRICT_METHOD$b = arrayMethodIsStrict$1('lastIndexOf'); // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method - var USES_TO_LENGTH$c = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); - var FORCED$b = NEGATIVE_ZERO$3 || !STRICT_METHOD$6 || !USES_TO_LENGTH$c; + var USES_TO_LENGTH$m = arrayMethodUsesToLength$1('indexOf', { ACCESSORS: true, 1: 0 }); + var FORCED$d = NEGATIVE_ZERO$3 || !STRICT_METHOD$b || !USES_TO_LENGTH$m; // `Array.prototype.lastIndexOf` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - var arrayLastIndexOf$1 = FORCED$b ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + var arrayLastIndexOf$1 = FORCED$d ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { // convert -0 to +0 if (NEGATIVE_ZERO$3) return nativeLastIndexOf$1.apply(this, arguments) || 0; var O = toIndexedObject$1(this); var length = toLength$1(O.length); var index = length - 1; - if (arguments.length > 1) index = min$b(index, toInteger$1(arguments[1])); + if (arguments.length > 1) index = min$d(index, toInteger$1(arguments[1])); if (index < 0) index = length + index; for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; return -1; @@ -23748,15 +27370,10 @@ typeof navigator === "object" && (function () { if (is$2.empty(src)) { throw new Error('Missing previewThumbnails.src config attribute'); - } // If string, convert into single-element list + } // Resolve promise - var urls = is$2.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails - - var promises = urls.map(function (u) { - return _this2.getThumbnail(u); - }); - Promise.all(promises).then(function () { + var sortAndResolve = function sortAndResolve() { // Sort smallest to biggest (e.g., [120p, 480p, 1080p]) _this2.thumbnails.sort(function (x, y) { return x.height - y.height; @@ -23765,7 +27382,25 @@ typeof navigator === "object" && (function () { _this2.player.debug.log('Preview thumbnails', _this2.thumbnails); resolve(); - }); + }; // Via callback() + + + if (is$2.function(src)) { + src(function (thumbnails) { + _this2.thumbnails = thumbnails; + sortAndResolve(); + }); + } // VTT urls + else { + // If string, convert into single-element list + var urls = is$2.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails + + var promises = urls.map(function (u) { + return _this2.getThumbnail(u); + }); // Resolve + + Promise.all(promises).then(sortAndResolve); + } }); } // Process individual VTT file @@ -24553,6 +28188,7 @@ typeof navigator === "object" && (function () { this.elements = { container: null, + fullscreen: null, captions: null, buttons: {}, display: {}, @@ -24629,7 +28265,7 @@ typeof navigator === "object" && (function () { if (is$2.element(iframe)) { // Detect provider - url = parseUrl$2(iframe.getAttribute('src')); + url = parseUrl$1(iframe.getAttribute('src')); this.provider = getProviderByUrl(url.toString()); // Rework elements this.elements.container = this.media; @@ -24726,10 +28362,12 @@ typeof navigator === "object" && (function () { this.elements.container = createElement$1('div', { tabindex: 0 }); - wrap$3(this.media, this.elements.container); - } // Add style hook + wrap$4(this.media, this.elements.container); + } // Migrate custom properties from media to container (so they work 😉) + ui.migrateStyles.call(this); // Add style hook + ui.addStyleHook.call(this); // Setup media media.setup.call(this); // Listen for events if debugging @@ -24738,10 +28376,12 @@ typeof navigator === "object" && (function () { on.call(this, this.elements.container, this.config.events.join(' '), function (event) { _this.debug.log("event: ".concat(event.type)); }); - } // Setup interface - // If embed but not fully supported, build interface now to avoid flash of controls + } // Setup fullscreen + this.fullscreen = new Fullscreen(this); // Setup interface + // If embed but not fully supported, build interface now to avoid flash of controls + if (this.isHTML5 || this.isEmbed && !this.supported.ui) { ui.build.call(this); } // Container listeners @@ -24749,9 +28389,7 @@ typeof navigator === "object" && (function () { this.listeners.container(); // Global listeners - this.listeners.global(); // Setup fullscreen - - this.fullscreen = new Fullscreen(this); // Setup ads if provided + this.listeners.global(); // Setup ads if provided if (this.config.ads.enabled) { this.ads = new Ads(this); @@ -24760,7 +28398,7 @@ typeof navigator === "object" && (function () { if (this.isHTML5 && this.config.autoplay) { setTimeout(function () { - return _this.play(); + return silencePromise(_this.play()); }, 10); } // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek @@ -24797,7 +28435,7 @@ typeof navigator === "object" && (function () { this.ads.managerPromise.then(function () { return _this2.ads.play(); }).catch(function () { - return _this2.media.play(); + return silencePromise(_this2.media.play()); }); } // Return the promise (for HTML5) @@ -25450,7 +29088,7 @@ typeof navigator === "object" && (function () { var updateStorage = true; if (!options.includes(quality)) { - var value = closest(options, quality); + var value = closest$1(options, quality); this.debug.warn("Unsupported quality option: ".concat(quality, ", using ").concat(value, " instead")); quality = value; // Don't update storage if quality is not supported @@ -25489,41 +29127,41 @@ typeof navigator === "object" && (function () { this.media.loop = toggle; // Set default to be a true toggle /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle'; - switch (type) { - case 'start': - if (this.config.loop.end && this.config.loop.end <= this.currentTime) { - this.config.loop.end = null; - } - this.config.loop.start = this.currentTime; - // this.config.loop.indicator.start = this.elements.display.played.value; - break; - case 'end': - if (this.config.loop.start >= this.currentTime) { - return this; - } - this.config.loop.end = this.currentTime; - // this.config.loop.indicator.end = this.elements.display.played.value; - break; - case 'all': - this.config.loop.start = 0; - this.config.loop.end = this.duration - 2; - this.config.loop.indicator.start = 0; - this.config.loop.indicator.end = 100; - break; - case 'toggle': - if (this.config.loop.active) { - this.config.loop.start = 0; - this.config.loop.end = null; - } else { + switch (type) { + case 'start': + if (this.config.loop.end && this.config.loop.end <= this.currentTime) { + this.config.loop.end = null; + } + this.config.loop.start = this.currentTime; + // this.config.loop.indicator.start = this.elements.display.played.value; + break; + case 'end': + if (this.config.loop.start >= this.currentTime) { + return this; + } + this.config.loop.end = this.currentTime; + // this.config.loop.indicator.end = this.elements.display.played.value; + break; + case 'all': this.config.loop.start = 0; this.config.loop.end = this.duration - 2; - } - break; - default: - this.config.loop.start = 0; - this.config.loop.end = null; - break; - } */ + this.config.loop.indicator.start = 0; + this.config.loop.indicator.end = 100; + break; + case 'toggle': + if (this.config.loop.active) { + this.config.loop.start = 0; + this.config.loop.end = null; + } else { + this.config.loop.start = 0; + this.config.loop.end = this.duration - 2; + } + break; + default: + this.config.loop.start = 0; + this.config.loop.end = null; + break; + } */ } /** * Get current loop state @@ -25595,7 +29233,7 @@ typeof navigator === "object" && (function () { return null; } - return this.media.getAttribute('poster'); + return this.media.getAttribute('poster') || this.media.getAttribute('data-poster'); } /** * Get the current aspect ratio in use @@ -25812,7 +29450,10 @@ typeof navigator === "object" && (function () { label: 'French', srclang: 'fr', src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt' - }] + }], + previewThumbnails: { + src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'] + } }, audio: { type: 'audio', @@ -25849,132 +29490,131 @@ typeof navigator === "object" && (function () { }; (function () { - var host = window.location.host; - var env = { - prod: host === 'plyr.io', - dev: host === 'dev.plyr.io' - }; + var production = 'plyr.io'; // Sentry for demo site (https://plyr.io) only + + if (window.location.host === production) { + init({ + dsn: 'https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555', + whitelistUrls: [production].map(function (d) { + return new RegExp("https://(([a-z0-9])+(.))*".concat(d)); + }) + }); + } + document.addEventListener('DOMContentLoaded', function () { - singleton.context(function () { - var selector = '#player'; // Setup share buttons + var selector = '#player'; // Setup share buttons - Shr.setup('.js-shr', { - count: { - className: 'button__count' - }, - wrapper: { - className: 'button--with-count' - } - }); // Setup the player - - var player = new Plyr(selector, { - debug: true, - title: 'View From A Blue Moon', - iconUrl: 'dist/demo.svg', - keyboard: { - global: true - }, - tooltips: { - controls: true - }, - captions: { - active: true - }, - ads: { - enabled: env.prod || env.dev, - publisherId: '918848828995742' - }, - previewThumbnails: { - enabled: true, - src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'] - }, - vimeo: { - // Prevent Vimeo blocking plyr.io demo site - referrerPolicy: 'no-referrer' - } - }); // Expose for tinkering in the console + Shr.setup('.js-shr', { + count: { + className: 'button__count' + }, + wrapper: { + className: 'button--with-count' + } + }); // Setup the player - window.player = player; // Setup type toggle + var player = new Plyr(selector, { + debug: true, + title: 'View From A Blue Moon', + iconUrl: 'dist/demo.svg', + keyboard: { + global: true + }, + tooltips: { + controls: true + }, + captions: { + active: true + }, + ads: { + enabled: window.location.host.includes(production), + publisherId: '918848828995742' + }, + previewThumbnails: { + enabled: true, + src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'] + }, + vimeo: { + // Prevent Vimeo blocking plyr.io demo site + referrerPolicy: 'no-referrer' + } + }); // Expose for tinkering in the console - var buttons = document.querySelectorAll('[data-source]'); - var types = Object.keys(sources); - var historySupport = Boolean(window.history && window.history.pushState); - var currentType = window.location.hash.substring(1); - var hasCurrentType = !currentType.length; + window.player = player; // Setup type toggle - function render(type) { - // Remove active classes - Array.from(buttons).forEach(function (button) { - return toggleClass$1(button.parentElement, 'active', false); - }); // Set active on parent + var buttons = document.querySelectorAll('[data-source]'); + var types = Object.keys(sources); + var historySupport = Boolean(window.history && window.history.pushState); + var currentType = window.location.hash.substring(1); + var hasInitialType = currentType.length; - toggleClass$1(document.querySelector("[data-source=\"".concat(type, "\"]")), 'active', true); // Show cite + function render(type) { + // Remove active classes + Array.from(buttons).forEach(function (button) { + return toggleClass$1(button.parentElement, 'active', false); + }); // Set active on parent - Array.from(document.querySelectorAll('.plyr__cite')).forEach(function (cite) { - // eslint-disable-next-line no-param-reassign - cite.hidden = true; - }); - document.querySelector(".plyr__cite--".concat(type)).hidden = false; - } // Set a new source + toggleClass$1(document.querySelector("[data-source=\"".concat(type, "\"]")), 'active', true); // Show cite + Array.from(document.querySelectorAll('.plyr__cite')).forEach(function (cite) { + // eslint-disable-next-line no-param-reassign + cite.hidden = true; + }); + document.querySelector(".plyr__cite--".concat(type)).hidden = false; + } // Set a new source - function setSource(type, init) { - // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video - if (!types.includes(type) || !init && type === currentType || !currentType.length && type === 'video') { - return; - } // Set the new source + function setSource(type, init) { + // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video + if (!types.includes(type) || !init && type === currentType || !currentType.length && type === 'video') { + return; + } // Set the new source - player.source = sources[type]; // Set the current type for next time - currentType = type; - render(type); - } // Bind to each button + player.source = sources[type]; // Set the current type for next time + currentType = type; + render(type); + } // Bind to each button - Array.from(buttons).forEach(function (button) { - button.addEventListener('click', function () { - var type = button.getAttribute('data-source'); - setSource(type); - - if (historySupport) { - window.history.pushState({ - type: type - }, '', "#".concat(type)); - } - }); - }); // List for backwards/forwards - window.addEventListener('popstate', function (event) { - if (event.state && Object.keys(event.state).includes('type')) { - setSource(event.state.type); + Array.from(buttons).forEach(function (button) { + button.addEventListener('click', function () { + var type = button.getAttribute('data-source'); + setSource(type); + + if (historySupport) { + window.history.pushState({ + type: type + }, '', "#".concat(type)); } - }); // If there's no current type set, assume video + }); + }); // List for backwards/forwards - if (hasCurrentType) { - currentType = 'video'; - } // Replace current history state + window.addEventListener('popstate', function (event) { + if (event.state && Object.keys(event.state).includes('type')) { + setSource(event.state.type); + } + }); // If there's no current type set, assume video + if (!hasInitialType) { + currentType = 'video'; + } // Replace current history state - if (historySupport && types.includes(currentType)) { - window.history.replaceState({ - type: currentType - }, '', hasCurrentType ? '' : "#".concat(currentType)); - } // If it's not video, load the source + if (historySupport && types.includes(currentType)) { + window.history.replaceState({ + type: currentType + }, '', hasInitialType ? "#".concat(currentType) : ''); + } // If it's not video, load the source - if (currentType !== 'video') { - setSource(currentType, true); - } - render(currentType); - }); - }); // Raven / Sentry - // For demo site (https://plyr.io) only + if (currentType !== 'video') { + setSource(currentType, true); + } - if (env.prod) { - singleton.config('https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555').install(); - } + render(currentType); + }); })(); }()); diff --git a/demo/dist/demo.min.js b/demo/dist/demo.min.js index aac8414b..516d30ba 100644 --- a/demo/dist/demo.min.js +++ b/demo/dist/demo.min.js @@ -1,4 +1,19 @@ -"object"==typeof navigator&&function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n,r,i,o="object",a=function(e){return e&&e.Math==Math&&e},s=a(typeof globalThis==o&&globalThis)||a(typeof window==o&&window)||a(typeof self==o&&self)||a(typeof e==o&&e)||Function("return this")(),c=function(e){try{return!!e()}catch(e){return!0}},l=!c((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),u={}.propertyIsEnumerable,f=Object.getOwnPropertyDescriptor,h={f:f&&!u.call({1:2},1)?function(e){var t=f(this,e);return!!t&&t.enumerable}:u},d=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},p={}.toString,g=function(e){return p.call(e).slice(8,-1)},m="".split,v=c((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==g(e)?m.call(e,""):Object(e)}:Object,y=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},b=function(e){return v(y(e))},w=function(e){return"object"==typeof e?null!==e:"function"==typeof e},k=function(e,t){if(!w(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!w(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!w(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!w(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},S={}.hasOwnProperty,E=function(e,t){return S.call(e,t)},_=s.document,T=w(_)&&w(_.createElement),x=function(e){return T?_.createElement(e):{}},A=!l&&!c((function(){return 7!=Object.defineProperty(x("div"),"a",{get:function(){return 7}}).a})),O=Object.getOwnPropertyDescriptor,P={f:l?O:function(e,t){if(e=b(e),t=k(t,!0),A)try{return O(e,t)}catch(e){}if(E(e,t))return d(!h.f.call(e,t),e[t])}},C=function(e){if(!w(e))throw TypeError(String(e)+" is not an object");return e},I=Object.defineProperty,j={f:l?I:function(e,t,n){if(C(e),t=k(t,!0),C(n),A)try{return I(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},R=l?function(e,t,n){return j.f(e,t,d(1,n))}:function(e,t,n){return e[t]=n,e},L=function(e,t){try{R(s,e,t)}catch(n){s[e]=t}return t},N=t((function(e){var t=s["__core-js_shared__"]||L("__core-js_shared__",{});(e.exports=function(e,n){return t[e]||(t[e]=void 0!==n?n:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),M=N("native-function-to-string",Function.toString),U=s.WeakMap,F="function"==typeof U&&/native code/.test(M.call(U)),D=0,B=Math.random(),q=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++D+B).toString(36))},H=N("keys"),V=function(e){return H[e]||(H[e]=q(e))},z={},W=s.WeakMap;if(F){var $=new W,K=$.get,Y=$.has,G=$.set;n=function(e,t){return G.call($,e,t),t},r=function(e){return K.call($,e)||{}},i=function(e){return Y.call($,e)}}else{var X=V("state");z[X]=!0,n=function(e,t){return R(e,X,t),t},r=function(e){return E(e,X)?e[X]:{}},i=function(e){return E(e,X)}}var J={set:n,get:r,has:i,enforce:function(e){return i(e)?r(e):n(e,{})},getterFor:function(e){return function(t){var n;if(!w(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Q=t((function(e){var t=J.get,n=J.enforce,r=String(M).split("toString");N("inspectSource",(function(e){return M.call(e)})),(e.exports=function(e,t,i,o){var a=!!o&&!!o.unsafe,c=!!o&&!!o.enumerable,l=!!o&&!!o.noTargetGet;"function"==typeof i&&("string"!=typeof t||E(i,"name")||R(i,"name",t),n(i).source=r.join("string"==typeof t?t:"")),e!==s?(a?!l&&e[t]&&(c=!0):delete e[t],c?e[t]=i:R(e,t,i)):c?e[t]=i:L(t,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||M.call(this)}))})),Z=Math.ceil,ee=Math.floor,te=function(e){return isNaN(e=+e)?0:(e>0?ee:Z)(e)},ne=Math.min,re=function(e){return e>0?ne(te(e),9007199254740991):0},ie=Math.max,oe=Math.min,ae=function(e,t){var n=te(e);return n<0?ie(n+t,0):oe(n,t)},se=function(e){return function(t,n,r){var i,o=b(t),a=re(o.length),s=ae(r,a);if(e&&n!=n){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===n)return e||s||0;return!e&&-1}},ce=se(!1),le=function(e,t){var n,r=b(e),i=0,o=[];for(n in r)!E(z,n)&&E(r,n)&&o.push(n);for(;t.length>i;)E(r,n=t[i++])&&(~ce(o,n)||o.push(n));return o},ue=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],fe=ue.concat("length","prototype"),he={f:Object.getOwnPropertyNames||function(e){return le(e,fe)}},de={f:Object.getOwnPropertySymbols},pe=s.Reflect,ge=pe&&pe.ownKeys||function(e){var t=he.f(C(e)),n=de.f;return n?t.concat(n(e)):t},me=function(e,t){for(var n=ge(t),r=j.f,i=P.f,o=0;o<n.length;o++){var a=n[o];E(e,a)||r(e,a,i(t,a))}},ve=/#|\.prototype\./,ye=function(e,t){var n=we[be(e)];return n==Se||n!=ke&&("function"==typeof t?c(t):!!t)},be=ye.normalize=function(e){return String(e).replace(ve,".").toLowerCase()},we=ye.data={},ke=ye.NATIVE="N",Se=ye.POLYFILL="P",Ee=ye,_e=P.f,Te=function(e,t){var n,r,i,o,a,c=e.target,l=e.global,u=e.stat;if(n=l?s:u?s[c]||L(c,{}):(s[c]||{}).prototype)for(r in t){if(o=t[r],i=e.noTargetGet?(a=_e(n,r))&&a.value:n[r],!Ee(l?r:c+(u?".":"#")+r,e.forced)&&void 0!==i){if(typeof o==typeof i)continue;me(o,i)}(e.sham||i&&i.sham)&&R(o,"sham",!0),Q(n,r,o,e)}},xe=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},Ae=function(e,t,n){if(xe(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}},Oe=function(e){return Object(y(e))},Pe=Array.isArray||function(e){return"Array"==g(e)},Ce=!!Object.getOwnPropertySymbols&&!c((function(){return!String(Symbol())})),Ie=s.Symbol,je=N("wks"),Re=function(e){return je[e]||(je[e]=Ce&&Ie[e]||(Ce?Ie:q)("Symbol."+e))},Le=Re("species"),Ne=function(e,t){var n;return Pe(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Pe(n.prototype)?w(n)&&null===(n=n[Le])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},Me=function(e,t){var n=1==e,r=2==e,i=3==e,o=4==e,a=6==e,s=5==e||a,c=t||Ne;return function(t,l,u){for(var f,h,d=Oe(t),p=v(d),g=Ae(l,u,3),m=re(p.length),y=0,b=n?c(t,m):r?c(t,0):void 0;m>y;y++)if((s||y in p)&&(h=g(f=p[y],y,d),e))if(n)b[y]=h;else if(h)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:b.push(f)}else if(o)return!1;return a?-1:i||o?o:b}},Ue=function(e,t){var n=[][e];return!n||!c((function(){n.call(null,t||function(){throw 1},1)}))},Fe=Me(0),De=Ue("forEach")?function(e){return Fe(this,e,arguments[1])}:[].forEach;Te({target:"Array",proto:!0,forced:[].forEach!=De},{forEach:De});var Be=function(e,t,n,r){try{return r?t(C(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&C(i.call(e)),t}},qe={},He=Re("iterator"),Ve=Array.prototype,ze=function(e){return void 0!==e&&(qe.Array===e||Ve[He]===e)},We=function(e,t,n){var r=k(t);r in e?j.f(e,r,d(0,n)):e[r]=n},$e=Re("toStringTag"),Ke="Arguments"==g(function(){return arguments}()),Ye=function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),$e))?n:Ke?g(t):"Object"==(r=g(t))&&"function"==typeof t.callee?"Arguments":r},Ge=Re("iterator"),Xe=function(e){if(null!=e)return e[Ge]||e["@@iterator"]||qe[Ye(e)]},Je=function(e){var t,n,r,i,o=Oe(e),a="function"==typeof this?this:Array,s=arguments.length,c=s>1?arguments[1]:void 0,l=void 0!==c,u=0,f=Xe(o);if(l&&(c=Ae(c,s>2?arguments[2]:void 0,2)),null==f||a==Array&&ze(f))for(n=new a(t=re(o.length));t>u;u++)We(n,u,l?c(o[u],u):o[u]);else for(i=f.call(o),n=new a;!(r=i.next()).done;u++)We(n,u,l?Be(i,c,[r.value,u],!0):r.value);return n.length=u,n},Qe=Re("iterator"),Ze=!1;try{var et=0,tt={next:function(){return{done:!!et++}},return:function(){Ze=!0}};tt[Qe]=function(){return this},Array.from(tt,(function(){throw 2}))}catch(e){}var nt=function(e,t){if(!t&&!Ze)return!1;var n=!1;try{var r={};r[Qe]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},rt=!nt((function(e){Array.from(e)}));Te({target:"Array",stat:!0,forced:rt},{from:Je});var it=Object.keys||function(e){return le(e,ue)},ot=l?Object.defineProperties:function(e,t){C(e);for(var n,r=it(t),i=r.length,o=0;i>o;)j.f(e,n=r[o++],t[n]);return e},at=s.document,st=at&&at.documentElement,ct=V("IE_PROTO"),lt=function(){},ut=function(){var e,t=x("iframe"),n=ue.length;for(t.style.display="none",st.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),ut=e.F;n--;)delete ut.prototype[ue[n]];return ut()},ft=Object.create||function(e,t){var n;return null!==e?(lt.prototype=C(e),n=new lt,lt.prototype=null,n[ct]=e):n=ut(),void 0===t?n:ot(n,t)};z[ct]=!0;var ht=Re("unscopables"),dt=Array.prototype;null==dt[ht]&&R(dt,ht,ft(null));var pt=function(e){dt[ht][e]=!0},gt=se(!0);Te({target:"Array",proto:!0},{includes:function(e){return gt(this,e,arguments.length>1?arguments[1]:void 0)}}),pt("includes");var mt=c((function(){it(1)}));Te({target:"Object",stat:!0,forced:mt},{keys:function(e){return it(Oe(e))}});var vt=Re("match"),yt=function(e){var t;return w(e)&&(void 0!==(t=e[vt])?!!t:"RegExp"==g(e))},bt=function(e,t,n){if(yt(t))throw TypeError("String.prototype."+n+" doesn't accept regex");return String(y(e))},wt=Re("match");Te({target:"String",proto:!0,forced:!function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[wt]=!1,"/./"[e](t)}catch(e){}}return!1}("includes")},{includes:function(e){return!!~bt(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}});var kt,St,Et,_t=function(e,t,n){var r,i,o=String(y(e)),a=te(t),s=o.length;return a<0||a>=s?n?"":void 0:(r=o.charCodeAt(a))<55296||r>56319||a+1===s||(i=o.charCodeAt(a+1))<56320||i>57343?n?o.charAt(a):r:n?o.slice(a,a+2):i-56320+(r-55296<<10)+65536},Tt=!c((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),xt=V("IE_PROTO"),At=Object.prototype,Ot=Tt?Object.getPrototypeOf:function(e){return e=Oe(e),E(e,xt)?e[xt]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?At:null},Pt=Re("iterator"),Ct=!1;[].keys&&("next"in(Et=[].keys())?(St=Ot(Ot(Et)))!==Object.prototype&&(kt=St):Ct=!0),null==kt&&(kt={}),E(kt,Pt)||R(kt,Pt,(function(){return this}));var It={IteratorPrototype:kt,BUGGY_SAFARI_ITERATORS:Ct},jt=j.f,Rt=Re("toStringTag"),Lt=function(e,t,n){e&&!E(e=n?e:e.prototype,Rt)&&jt(e,Rt,{configurable:!0,value:t})},Nt=It.IteratorPrototype,Mt=function(){return this},Ut=function(e,t,n){var r=t+" Iterator";return e.prototype=ft(Nt,{next:d(1,n)}),Lt(e,r,!1),qe[r]=Mt,e},Ft=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return function(e,t){if(C(e),!w(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype")}(n,r),t?e.call(n,r):n.__proto__=r,n}}():void 0),Dt=It.IteratorPrototype,Bt=It.BUGGY_SAFARI_ITERATORS,qt=Re("iterator"),Ht=function(){return this},Vt=function(e,t,n,r,i,o,a){Ut(n,t,r);var s,c,l,u=function(e){if(e===i&&g)return g;if(!Bt&&e in d)return d[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},f=t+" Iterator",h=!1,d=e.prototype,p=d[qt]||d["@@iterator"]||i&&d[i],g=!Bt&&p||u(i),m="Array"==t&&d.entries||p;if(m&&(s=Ot(m.call(new e)),Dt!==Object.prototype&&s.next&&(Ot(s)!==Dt&&(Ft?Ft(s,Dt):"function"!=typeof s[qt]&&R(s,qt,Ht)),Lt(s,f,!0))),"values"==i&&p&&"values"!==p.name&&(h=!0,g=function(){return p.call(this)}),d[qt]!==g&&R(d,qt,g),qe[t]=g,i)if(c={values:u("values"),keys:o?g:u("keys"),entries:u("entries")},a)for(l in c)(Bt||h||!(l in d))&&Q(d,l,c[l]);else Te({target:t,proto:!0,forced:Bt||h},c);return c},zt=J.set,Wt=J.getterFor("String Iterator");Vt(String,"String",(function(e){zt(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=Wt(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=_t(n,r,!0),t.index+=e.length,{value:e,done:!1})}));var $t={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0};for(var Kt in $t){var Yt=s[Kt],Gt=Yt&&Yt.prototype;if(Gt&&Gt.forEach!==De)try{R(Gt,"forEach",De)}catch(e){Gt.forEach=De}}var Xt=document.getElementById("container");document.addEventListener("focusout",(function(e){e.target.classList&&!Xt.contains(e.target)&&e.target.classList.remove("tab-focus")})),document.addEventListener("keydown",(function(e){9===e.keyCode&&setTimeout((function(){var e=document.activeElement;e&&e.classList&&!Xt.contains(e)&&e.classList.add("tab-focus")}),10)})),function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,r;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r=n.preventDefault,n.preventDefault=function(){r.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}();var Jt={f:Re},Qt=s,Zt=j.f,en=function(e){var t=Qt.Symbol||(Qt.Symbol={});E(t,e)||Zt(t,e,{value:Jt.f(e)})},tn=he.f,nn={}.toString,rn="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],on={f:function(e){return rn&&"[object Window]"==nn.call(e)?function(e){try{return tn(e)}catch(e){return rn.slice()}}(e):tn(b(e))}},an=V("hidden"),sn=J.set,cn=J.getterFor("Symbol"),ln=P.f,un=j.f,fn=on.f,hn=s.Symbol,dn=s.JSON,pn=dn&&dn.stringify,gn=Re("toPrimitive"),mn=h.f,vn=N("symbol-registry"),yn=N("symbols"),bn=N("op-symbols"),wn=N("wks"),kn=Object.prototype,Sn=s.QObject,En=!Sn||!Sn.prototype||!Sn.prototype.findChild,_n=l&&c((function(){return 7!=ft(un({},"a",{get:function(){return un(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=ln(kn,t);r&&delete kn[t],un(e,t,n),r&&e!==kn&&un(kn,t,r)}:un,Tn=function(e,t){var n=yn[e]=ft(hn.prototype);return sn(n,{type:"Symbol",tag:e,description:t}),l||(n.description=t),n},xn=Ce&&"symbol"==typeof hn.iterator?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof hn},An=function(e,t,n){return e===kn&&An(bn,t,n),C(e),t=k(t,!0),C(n),E(yn,t)?(n.enumerable?(E(e,an)&&e[an][t]&&(e[an][t]=!1),n=ft(n,{enumerable:d(0,!1)})):(E(e,an)||un(e,an,d(1,{})),e[an][t]=!0),_n(e,t,n)):un(e,t,n)},On=function(e,t){C(e);for(var n,r=function(e){var t=it(e),n=de.f;if(n)for(var r,i=n(e),o=h.f,a=0;i.length>a;)o.call(e,r=i[a++])&&t.push(r);return t}(t=b(t)),i=0,o=r.length;o>i;)An(e,n=r[i++],t[n]);return e},Pn=function(e){var t=mn.call(this,e=k(e,!0));return!(this===kn&&E(yn,e)&&!E(bn,e))&&(!(t||!E(this,e)||!E(yn,e)||E(this,an)&&this[an][e])||t)},Cn=function(e,t){if(e=b(e),t=k(t,!0),e!==kn||!E(yn,t)||E(bn,t)){var n=ln(e,t);return!n||!E(yn,t)||E(e,an)&&e[an][t]||(n.enumerable=!0),n}},In=function(e){for(var t,n=fn(b(e)),r=[],i=0;n.length>i;)E(yn,t=n[i++])||E(z,t)||r.push(t);return r},jn=function(e){for(var t,n=e===kn,r=fn(n?bn:b(e)),i=[],o=0;r.length>o;)!E(yn,t=r[o++])||n&&!E(kn,t)||i.push(yn[t]);return i};Ce||(Q((hn=function(){if(this instanceof hn)throw TypeError("Symbol is not a constructor");var e=void 0===arguments[0]?void 0:String(arguments[0]),t=q(e),n=function(e){this===kn&&n.call(bn,e),E(this,an)&&E(this[an],t)&&(this[an][t]=!1),_n(this,t,d(1,e))};return l&&En&&_n(kn,t,{configurable:!0,set:n}),Tn(t,e)}).prototype,"toString",(function(){return cn(this).tag})),h.f=Pn,j.f=An,P.f=Cn,he.f=on.f=In,de.f=jn,l&&(un(hn.prototype,"description",{configurable:!0,get:function(){return cn(this).description}}),Q(kn,"propertyIsEnumerable",Pn,{unsafe:!0})),Jt.f=function(e){return Tn(Re(e),e)}),Te({global:!0,wrap:!0,forced:!Ce,sham:!Ce},{Symbol:hn});for(var Rn=it(wn),Ln=0;Rn.length>Ln;)en(Rn[Ln++]);Te({target:"Symbol",stat:!0,forced:!Ce},{for:function(e){return E(vn,e+="")?vn[e]:vn[e]=hn(e)},keyFor:function(e){if(!xn(e))throw TypeError(e+" is not a symbol");for(var t in vn)if(vn[t]===e)return t},useSetter:function(){En=!0},useSimple:function(){En=!1}}),Te({target:"Object",stat:!0,forced:!Ce,sham:!l},{create:function(e,t){return void 0===t?ft(e):On(ft(e),t)},defineProperty:An,defineProperties:On,getOwnPropertyDescriptor:Cn}),Te({target:"Object",stat:!0,forced:!Ce},{getOwnPropertyNames:In,getOwnPropertySymbols:jn}),Te({target:"Object",stat:!0,forced:c((function(){de.f(1)}))},{getOwnPropertySymbols:function(e){return de.f(Oe(e))}}),dn&&Te({target:"JSON",stat:!0,forced:!Ce||c((function(){var e=hn();return"[null]"!=pn([e])||"{}"!=pn({a:e})||"{}"!=pn(Object(e))}))},{stringify:function(e){for(var t,n,r=[e],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=t=r[1],(w(t)||void 0!==e)&&!xn(e))return Pe(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!xn(t))return t}),r[1]=t,pn.apply(dn,r)}}),hn.prototype[gn]||R(hn.prototype,gn,hn.prototype.valueOf),Lt(hn,"Symbol"),z[an]=!0;var Nn=j.f,Mn=s.Symbol;if(l&&"function"==typeof Mn&&(!("description"in Mn.prototype)||void 0!==Mn().description)){var Un={},Fn=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof Fn?new Mn(e):void 0===e?Mn():Mn(e);return""===e&&(Un[t]=!0),t};me(Fn,Mn);var Dn=Fn.prototype=Mn.prototype;Dn.constructor=Fn;var Bn=Dn.toString,qn="Symbol(test)"==String(Mn("test")),Hn=/^Symbol\((.*)\)[^)]+$/;Nn(Dn,"description",{configurable:!0,get:function(){var e=w(this)?this.valueOf():this,t=Bn.call(e);if(E(Un,e))return"";var n=qn?t.slice(7,-1):t.replace(Hn,"$1");return""===n?void 0:n}}),Te({global:!0,forced:!0},{Symbol:Fn})}en("iterator");var Vn=se(!1),zn=[].indexOf,Wn=!!zn&&1/[1].indexOf(1,-0)<0,$n=Ue("indexOf");Te({target:"Array",proto:!0,forced:Wn||$n},{indexOf:function(e){return Wn?zn.apply(this,arguments)||0:Vn(this,e,arguments[1])}});var Kn=J.set,Yn=J.getterFor("Array Iterator"),Gn=Vt(Array,"Array",(function(e,t){Kn(this,{type:"Array Iterator",target:b(e),index:0,kind:t})}),(function(){var e=Yn(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values");qe.Arguments=qe.Array,pt("keys"),pt("values"),pt("entries");var Xn=[].join,Jn=v!=Object,Qn=Ue("join",",");Te({target:"Array",proto:!0,forced:Jn||Qn},{join:function(e){return Xn.call(b(this),void 0===e?",":e)}});var Zn=Re("species"),er=function(e){return!c((function(){var t=[];return(t.constructor={})[Zn]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},tr=Re("species"),nr=[].slice,rr=Math.max,ir=er("slice");Te({target:"Array",proto:!0,forced:!ir},{slice:function(e,t){var n,r,i,o=b(this),a=re(o.length),s=ae(e,a),c=ae(void 0===t?a:t,a);if(Pe(o)&&("function"!=typeof(n=o.constructor)||n!==Array&&!Pe(n.prototype)?w(n)&&null===(n=n[tr])&&(n=void 0):n=void 0,n===Array||void 0===n))return nr.call(o,s,c);for(r=new(void 0===n?Array:n)(rr(c-s,0)),i=0;s<c;s++,i++)s in o&&We(r,i,o[s]);return r.length=i,r}});var or={};or[Re("toStringTag")]="z";var ar="[object z]"!==String(or)?function(){return"[object "+Ye(this)+"]"}:or.toString,sr=Object.prototype;ar!==sr.toString&&Q(sr,"toString",ar,{unsafe:!0});var cr=function(){var e=C(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},lr=RegExp.prototype.exec,ur=String.prototype.replace,fr=lr,hr=function(){var e=/a/,t=/b*/g;return lr.call(e,"a"),lr.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),dr=void 0!==/()??/.exec("")[1];(hr||dr)&&(fr=function(e){var t,n,r,i,o=this;return dr&&(n=new RegExp("^"+o.source+"$(?!\\s)",cr.call(o))),hr&&(t=o.lastIndex),r=lr.call(o,e),hr&&r&&(o.lastIndex=o.global?r.index+r[0].length:t),dr&&r&&r.length>1&&ur.call(r[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r});var pr=fr;Te({target:"RegExp",proto:!0,forced:/./.exec!==pr},{exec:pr});var gr=/./.toString,mr=RegExp.prototype,vr=c((function(){return"/a/b"!=gr.call({source:"a",flags:"b"})})),yr="toString"!=gr.name;(vr||yr)&&Q(RegExp.prototype,"toString",(function(){var e=C(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in mr)?cr.call(e):n)}),{unsafe:!0});var br=Re("species"),wr=!c((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),kr=!c((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Sr=function(e,t,n,r){var i=Re(e),o=!c((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=o&&!c((function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[br]=function(){return n}),n[i](""),!t}));if(!o||!a||"replace"===e&&!wr||"split"===e&&!kr){var s=/./[i],l=n(i,""[e],(function(e,t,n,r,i){return t.exec===pr?o&&!i?{done:!0,value:s.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}})),u=l[0],f=l[1];Q(String.prototype,e,u),Q(RegExp.prototype,i,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)}),r&&R(RegExp.prototype[i],"sham",!0)}},Er=function(e,t,n){return t+(n?_t(e,t,!0).length:1)},_r=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==g(e))throw TypeError("RegExp#exec called on incompatible receiver");return pr.call(e,t)},Tr=Math.max,xr=Math.min,Ar=Math.floor,Or=/\$([$&'`]|\d\d?|<[^>]*>)/g,Pr=/\$([$&'`]|\d\d?)/g;Sr("replace",2,(function(e,t,n){return[function(n,r){var i=y(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,i){var o=n(t,e,this,i);if(o.done)return o.value;var a=C(e),s=String(this),c="function"==typeof i;c||(i=String(i));var l=a.global;if(l){var u=a.unicode;a.lastIndex=0}for(var f=[];;){var h=_r(a,s);if(null===h)break;if(f.push(h),!l)break;""===String(h[0])&&(a.lastIndex=Er(s,re(a.lastIndex),u))}for(var d,p="",g=0,m=0;m<f.length;m++){h=f[m];for(var v=String(h[0]),y=Tr(xr(te(h.index),s.length),0),b=[],w=1;w<h.length;w++)b.push(void 0===(d=h[w])?d:String(d));var k=h.groups;if(c){var S=[v].concat(b,y,s);void 0!==k&&S.push(k);var E=String(i.apply(void 0,S))}else E=r(v,s,y,b,k,i);y>=g&&(p+=s.slice(g,y)+E,g=y+v.length)}return p+s.slice(g)}];function r(e,n,r,i,o,a){var s=r+e.length,c=i.length,l=Pr;return void 0!==o&&(o=Oe(o),l=Or),t.call(a,l,(function(t,a){var l;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(s);case"<":l=o[a.slice(1,-1)];break;default:var u=+a;if(0===u)return t;if(u>c){var f=Ar(u/10);return 0===f?t:f<=c?void 0===i[f-1]?a.charAt(1):i[f-1]+a.charAt(1):t}l=i[u-1]}return void 0===l?"":l}))}}));var Cr=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Sr("search",1,(function(e,t,n){return[function(t){var n=y(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=C(e),o=String(this),a=i.lastIndex;Cr(a,0)||(i.lastIndex=0);var s=_r(i,o);return Cr(i.lastIndex,a)||(i.lastIndex=a),null===s?-1:s.index}]}));var Ir=Re("species"),jr=function(e,t){var n,r=C(e).constructor;return void 0===r||null==(n=C(r)[Ir])?t:xe(n)},Rr=[].push,Lr=Math.min,Nr=!c((function(){return!RegExp(4294967295,"y")}));Sr("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(y(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!yt(e))return t.call(r,e,i);for(var o,a,s,c=[],l=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,f=new RegExp(e.source,l+"g");(o=pr.call(f,r))&&!((a=f.lastIndex)>u&&(c.push(r.slice(u,o.index)),o.length>1&&o.index<r.length&&Rr.apply(c,o.slice(1)),s=o[0].length,u=a,c.length>=i));)f.lastIndex===o.index&&f.lastIndex++;return u===r.length?!s&&f.test("")||c.push(""):c.push(r.slice(u)),c.length>i?c.slice(0,i):c}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=y(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var o=n(r,e,this,i,r!==t);if(o.done)return o.value;var a=C(e),s=String(this),c=jr(a,RegExp),l=a.unicode,u=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(Nr?"y":"g"),f=new c(Nr?a:"^(?:"+a.source+")",u),h=void 0===i?4294967295:i>>>0;if(0===h)return[];if(0===s.length)return null===_r(f,s)?[s]:[];for(var d=0,p=0,g=[];p<s.length;){f.lastIndex=Nr?p:0;var m,v=_r(f,Nr?s:s.slice(p));if(null===v||(m=Lr(re(f.lastIndex+(Nr?0:p)),s.length))===d)p=Er(s,p,l);else{if(g.push(s.slice(d,p)),g.length===h)return g;for(var y=1;y<=v.length-1;y++)if(g.push(v[y]),g.length===h)return g;p=d=m}}return g.push(s.slice(d)),g}]}),!Nr);var Mr=Re("iterator"),Ur=Re("toStringTag"),Fr=Gn.values;for(var Dr in $t){var Br=s[Dr],qr=Br&&Br.prototype;if(qr){if(qr[Mr]!==Fr)try{R(qr,Mr,Fr)}catch(e){qr[Mr]=Fr}if(qr[Ur]||R(qr,Ur,Dr),$t[Dr])for(var Hr in Gn)if(qr[Hr]!==Gn[Hr])try{R(qr,Hr,Gn[Hr])}catch(e){qr[Hr]=Gn[Hr]}}}var Vr=Re("iterator"),zr=!c((function(){var e=new URL("b?e=1","http://a"),t=e.searchParams;return e.pathname="c%20d",!t.sort||"http://a/c%20d?e=1"!==e.href||"1"!==t.get("e")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[Vr]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash})),Wr=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},$r=Object.assign,Kr=!$r||c((function(){var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=$r({},e)[n]||"abcdefghijklmnopqrst"!=it($r({},t)).join("")}))?function(e,t){for(var n=Oe(e),r=arguments.length,i=1,o=de.f,a=h.f;r>i;)for(var s,c=v(arguments[i++]),u=o?it(c).concat(o(c)):it(c),f=u.length,d=0;f>d;)s=u[d++],l&&!a.call(c,s)||(n[s]=c[s]);return n}:$r,Yr=/[^\0-\u007E]/,Gr=/[.\u3002\uFF0E\uFF61]/g,Xr="Overflow: input needs wider integers to process",Jr=Math.floor,Qr=String.fromCharCode,Zr=function(e){return e+22+75*(e<26)},ei=function(e,t,n){var r=0;for(e=n?Jr(e/700):e>>1,e+=Jr(e/t);e>455;r+=36)e=Jr(e/35);return Jr(r+36*e/(e+38))},ti=function(e){var t,n,r=[],i=(e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=e.charCodeAt(n++);56320==(64512&o)?t.push(((1023&i)<<10)+(1023&o)+65536):(t.push(i),n--)}else t.push(i)}return t}(e)).length,o=128,a=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&r.push(Qr(n));var c=r.length,l=c;for(c&&r.push("-");l<i;){var u=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=o&&n<u&&(u=n);var f=l+1;if(u-o>Jr((2147483647-a)/f))throw RangeError(Xr);for(a+=(u-o)*f,o=u,t=0;t<e.length;t++){if((n=e[t])<o&&++a>2147483647)throw RangeError(Xr);if(n==o){for(var h=a,d=36;;d+=36){var p=d<=s?1:d>=s+26?26:d-s;if(h<p)break;var g=h-p,m=36-p;r.push(Qr(Zr(p+g%m))),h=Jr(g/m)}r.push(Qr(Zr(h))),s=ei(a,f,l==c),a=0,++l}}++a,++o}return r.join("")},ni=function(e,t,n){for(var r in t)Q(e,r,t[r],n);return e},ri=function(e){var t=Xe(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return C(t.call(e))},ii=Re("iterator"),oi=J.set,ai=J.getterFor("URLSearchParams"),si=J.getterFor("URLSearchParamsIterator"),ci=/\+/g,li=Array(4),ui=function(e){return li[e-1]||(li[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},fi=function(e){try{return decodeURIComponent(e)}catch(t){return e}},hi=function(e){var t=e.replace(ci," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(ui(n--),fi);return t}},di=/[!'()~]|%20/g,pi={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},gi=function(e){return pi[e]},mi=function(e){return encodeURIComponent(e).replace(di,gi)},vi=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o<i.length;)(n=i[o++]).length&&(r=n.split("="),e.push({key:hi(r.shift()),value:hi(r.join("="))}));return e},yi=function(e){this.entries.length=0,vi(this.entries,e)},bi=function(e,t){if(e<t)throw TypeError("Not enough arguments")},wi=Ut((function(e,t){oi(this,{type:"URLSearchParamsIterator",iterator:ri(ai(e).entries),kind:t})}),"Iterator",(function(){var e=si(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n})),ki=function(){Wr(this,ki,"URLSearchParams");var e,t,n,r,i,o,a,s=arguments.length>0?arguments[0]:void 0,c=this,l=[];if(oi(c,{type:"URLSearchParams",entries:l,updateURL:null,updateSearchParams:yi}),void 0!==s)if(w(s))if("function"==typeof(e=Xe(s)))for(t=e.call(s);!(n=t.next()).done;){if((i=(r=ri(C(n.value))).next()).done||(o=r.next()).done||!r.next().done)throw TypeError("Expected sequence with length 2");l.push({key:i.value+"",value:o.value+""})}else for(a in s)E(s,a)&&l.push({key:a,value:s[a]+""});else vi(l,"string"==typeof s?"?"===s.charAt(0)?s.slice(1):s:s+"")},Si=ki.prototype;ni(Si,{append:function(e,t){bi(arguments.length,2);var n=ai(this);n.entries.push({key:e+"",value:t+""}),n.updateURL&&n.updateURL()},delete:function(e){bi(arguments.length,1);for(var t=ai(this),n=t.entries,r=e+"",i=0;i<n.length;)n[i].key===r?n.splice(i,1):i++;t.updateURL&&t.updateURL()},get:function(e){bi(arguments.length,1);for(var t=ai(this).entries,n=e+"",r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){bi(arguments.length,1);for(var t=ai(this).entries,n=e+"",r=[],i=0;i<t.length;i++)t[i].key===n&&r.push(t[i].value);return r},has:function(e){bi(arguments.length,1);for(var t=ai(this).entries,n=e+"",r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){bi(arguments.length,1);for(var n,r=ai(this),i=r.entries,o=!1,a=e+"",s=t+"",c=0;c<i.length;c++)(n=i[c]).key===a&&(o?i.splice(c--,1):(o=!0,n.value=s));o||i.push({key:a,value:s}),r.updateURL&&r.updateURL()},sort:function(){var e,t,n,r=ai(this),i=r.entries,o=i.slice();for(i.length=0,t=0;t<o.length;t++){for(e=o[t],n=0;n<t;n++)if(i[n].key>e.key){i.splice(n,0,e);break}n===t&&i.push(e)}r.updateURL&&r.updateURL()},forEach:function(e){for(var t,n=ai(this).entries,r=Ae(e,arguments.length>1?arguments[1]:void 0,3),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new wi(this,"keys")},values:function(){return new wi(this,"values")},entries:function(){return new wi(this,"entries")}},{enumerable:!0}),Q(Si,ii,Si.entries),Q(Si,"toString",(function(){for(var e,t=ai(this).entries,n=[],r=0;r<t.length;)e=t[r++],n.push(mi(e.key)+"="+mi(e.value));return n.join("&")}),{enumerable:!0}),Lt(ki,"URLSearchParams"),Te({global:!0,forced:!zr},{URLSearchParams:ki});var Ei,_i={URLSearchParams:ki,getState:ai},Ti=s.URL,xi=_i.URLSearchParams,Ai=_i.getState,Oi=J.set,Pi=J.getterFor("URL"),Ci=Math.pow,Ii=/[A-Za-z]/,ji=/[\d+\-.A-Za-z]/,Ri=/\d/,Li=/^(0x|0X)/,Ni=/^[0-7]+$/,Mi=/^\d+$/,Ui=/^[\dA-Fa-f]+$/,Fi=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,Di=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,Bi=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,qi=/[\u0009\u000A\u000D]/g,Hi=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=zi(t.slice(1,-1))))return"Invalid host";e.host=n}else if(Qi(e)){if(t=function(e){var t,n,r=[],i=e.toLowerCase().replace(Gr,".").split(".");for(t=0;t<i.length;t++)n=i[t],r.push(Yr.test(n)?"xn--"+ti(n):n);return r.join(".")}(t),Fi.test(t))return"Invalid host";if(null===(n=Vi(t)))return"Invalid host";e.host=n}else{if(Di.test(t))return"Invalid host";for(n="",r=Je(t),i=0;i<r.length;i++)n+=Xi(r[i],$i);e.host=n}},Vi=function(e){var t,n,r,i,o,a,s,c=e.split(".");if(""==c[c.length-1]&&c.length&&c.pop(),(t=c.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=c[r]))return e;if(o=10,i.length>1&&"0"==i.charAt(0)&&(o=Li.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)a=0;else{if(!(10==o?Mi:8==o?Ni:Ui).test(i))return e;a=parseInt(i,o)}n.push(a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=Ci(256,5-t))return null}else if(a>255)return null;for(s=n.pop(),r=0;r<n.length;r++)s+=n[r]*Ci(256,3-r);return s},zi=function(e){var t,n,r,i,o,a,s,c=[0,0,0,0,0,0,0,0],l=0,u=null,f=0,h=function(){return e.charAt(f)};if(":"==h()){if(":"!=e.charAt(1))return;f+=2,u=++l}for(;h();){if(8==l)return;if(":"!=h()){for(t=n=0;n<4&&Ui.test(h());)t=16*t+parseInt(h(),16),f++,n++;if("."==h()){if(0==n)return;if(f-=n,l>6)return;for(r=0;h();){if(i=null,r>0){if(!("."==h()&&r<4))return;f++}if(!Ri.test(h()))return;for(;Ri.test(h());){if(o=parseInt(h(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;f++}c[l]=256*c[l]+i,2!=++r&&4!=r||l++}if(4!=r)return;break}if(":"==h()){if(f++,!h())return}else if(h())return;c[l++]=t}else{if(null!==u)return;f++,u=++l}}if(null!==u)for(a=l-u,l=7;0!=l&&a>0;)s=c[l],c[l--]=c[u+a-1],c[u+--a]=s;else if(8!=l)return;return c},Wi=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=Math.floor(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},$i={},Ki=Kr({},$i,{" ":1,'"':1,"<":1,">":1,"`":1}),Yi=Kr({},Ki,{"#":1,"?":1,"{":1,"}":1}),Gi=Kr({},Yi,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Xi=function(e,t){var n=_t(e,0);return n>32&&n<127&&!E(t,e)?e:encodeURIComponent(e)},Ji={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Qi=function(e){return E(Ji,e.scheme)},Zi=function(e){return""!=e.username||""!=e.password},eo=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},to=function(e,t){var n;return 2==e.length&&Ii.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},no=function(e){var t;return e.length>1&&to(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},ro=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&to(t[0],!0)||t.pop()},io=function(e){return"."===e||"%2e"===e.toLowerCase()},oo={},ao={},so={},co={},lo={},uo={},fo={},ho={},po={},go={},mo={},vo={},yo={},bo={},wo={},ko={},So={},Eo={},_o={},To={},xo={},Ao=function(e,t,n,r){var i,o,a,s,c,l=n||oo,u=0,f="",h=!1,d=!1,p=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(Bi,"")),t=t.replace(qi,""),i=Je(t);u<=i.length;){switch(o=i[u],l){case oo:if(!o||!Ii.test(o)){if(n)return"Invalid scheme";l=so;continue}f+=o.toLowerCase(),l=ao;break;case ao:if(o&&(ji.test(o)||"+"==o||"-"==o||"."==o))f+=o.toLowerCase();else{if(":"!=o){if(n)return"Invalid scheme";f="",l=so,u=0;continue}if(n&&(Qi(e)!=E(Ji,f)||"file"==f&&(Zi(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(Qi(e)&&Ji[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?l=bo:Qi(e)&&r&&r.scheme==e.scheme?l=co:Qi(e)?l=ho:"/"==i[u+1]?(l=lo,u++):(e.cannotBeABaseURL=!0,e.path.push(""),l=_o)}break;case so:if(!r||r.cannotBeABaseURL&&"#"!=o)return"Invalid scheme";if(r.cannotBeABaseURL&&"#"==o){e.scheme=r.scheme,e.path=r.path.slice(),e.query=r.query,e.fragment="",e.cannotBeABaseURL=!0,l=xo;break}l="file"==r.scheme?bo:uo;continue;case co:if("/"!=o||"/"!=i[u+1]){l=uo;continue}l=po,u++;break;case lo:if("/"==o){l=go;break}l=Eo;continue;case uo:if(e.scheme=r.scheme,o==Ei)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query;else if("/"==o||"\\"==o&&Qi(e))l=fo;else if("?"==o)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query="",l=To;else{if("#"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.path.pop(),l=Eo;continue}e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query,e.fragment="",l=xo}break;case fo:if(!Qi(e)||"/"!=o&&"\\"!=o){if("/"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,l=Eo;continue}l=go}else l=po;break;case ho:if(l=po,"/"!=o||"/"!=f.charAt(u+1))continue;u++;break;case po:if("/"!=o&&"\\"!=o){l=go;continue}break;case go:if("@"==o){h&&(f="%40"+f),h=!0,a=Je(f);for(var g=0;g<a.length;g++){var m=a[g];if(":"!=m||p){var v=Xi(m,Gi);p?e.password+=v:e.username+=v}else p=!0}f=""}else if(o==Ei||"/"==o||"?"==o||"#"==o||"\\"==o&&Qi(e)){if(h&&""==f)return"Invalid authority";u-=Je(f).length+1,f="",l=mo}else f+=o;break;case mo:case vo:if(n&&"file"==e.scheme){l=ko;continue}if(":"!=o||d){if(o==Ei||"/"==o||"?"==o||"#"==o||"\\"==o&&Qi(e)){if(Qi(e)&&""==f)return"Invalid host";if(n&&""==f&&(Zi(e)||null!==e.port))return;if(s=Hi(e,f))return s;if(f="",l=So,n)return;continue}"["==o?d=!0:"]"==o&&(d=!1),f+=o}else{if(""==f)return"Invalid host";if(s=Hi(e,f))return s;if(f="",l=yo,n==vo)return}break;case yo:if(!Ri.test(o)){if(o==Ei||"/"==o||"?"==o||"#"==o||"\\"==o&&Qi(e)||n){if(""!=f){var y=parseInt(f,10);if(y>65535)return"Invalid port";e.port=Qi(e)&&y===Ji[e.scheme]?null:y,f=""}if(n)return;l=So;continue}return"Invalid port"}f+=o;break;case bo:if(e.scheme="file","/"==o||"\\"==o)l=wo;else{if(!r||"file"!=r.scheme){l=Eo;continue}if(o==Ei)e.host=r.host,e.path=r.path.slice(),e.query=r.query;else if("?"==o)e.host=r.host,e.path=r.path.slice(),e.query="",l=To;else{if("#"!=o){no(i.slice(u).join(""))||(e.host=r.host,e.path=r.path.slice(),ro(e)),l=Eo;continue}e.host=r.host,e.path=r.path.slice(),e.query=r.query,e.fragment="",l=xo}}break;case wo:if("/"==o||"\\"==o){l=ko;break}r&&"file"==r.scheme&&!no(i.slice(u).join(""))&&(to(r.path[0],!0)?e.path.push(r.path[0]):e.host=r.host),l=Eo;continue;case ko:if(o==Ei||"/"==o||"\\"==o||"?"==o||"#"==o){if(!n&&to(f))l=Eo;else if(""==f){if(e.host="",n)return;l=So}else{if(s=Hi(e,f))return s;if("localhost"==e.host&&(e.host=""),n)return;f="",l=So}continue}f+=o;break;case So:if(Qi(e)){if(l=Eo,"/"!=o&&"\\"!=o)continue}else if(n||"?"!=o)if(n||"#"!=o){if(o!=Ei&&(l=Eo,"/"!=o))continue}else e.fragment="",l=xo;else e.query="",l=To;break;case Eo:if(o==Ei||"/"==o||"\\"==o&&Qi(e)||!n&&("?"==o||"#"==o)){if(".."===(c=(c=f).toLowerCase())||"%2e."===c||".%2e"===c||"%2e%2e"===c?(ro(e),"/"==o||"\\"==o&&Qi(e)||e.path.push("")):io(f)?"/"==o||"\\"==o&&Qi(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&to(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(o==Ei||"?"==o||"#"==o))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==o?(e.query="",l=To):"#"==o&&(e.fragment="",l=xo)}else f+=Xi(o,Yi);break;case _o:"?"==o?(e.query="",l=To):"#"==o?(e.fragment="",l=xo):o!=Ei&&(e.path[0]+=Xi(o,$i));break;case To:n||"#"!=o?o!=Ei&&("'"==o&&Qi(e)?e.query+="%27":e.query+="#"==o?"%23":Xi(o,$i)):(e.fragment="",l=xo);break;case xo:o!=Ei&&(e.fragment+=Xi(o,Ki))}u++}},Oo=function(e){var t,n,r=Wr(this,Oo,"URL"),i=arguments.length>1?arguments[1]:void 0,o=String(e),a=Oi(r,{type:"URL"});if(void 0!==i)if(i instanceof Oo)t=Pi(i);else if(n=Ao(t={},String(i)))throw TypeError(n);if(n=Ao(a,o,null,t))throw TypeError(n);var s=a.searchParams=new xi,c=Ai(s);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(s)||null},l||(r.href=Co.call(r),r.origin=Io.call(r),r.protocol=jo.call(r),r.username=Ro.call(r),r.password=Lo.call(r),r.host=No.call(r),r.hostname=Mo.call(r),r.port=Uo.call(r),r.pathname=Fo.call(r),r.search=Do.call(r),r.searchParams=Bo.call(r),r.hash=qo.call(r))},Po=Oo.prototype,Co=function(){var e=Pi(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,a=e.path,s=e.query,c=e.fragment,l=t+":";return null!==i?(l+="//",Zi(e)&&(l+=n+(r?":"+r:"")+"@"),l+=Wi(i),null!==o&&(l+=":"+o)):"file"==t&&(l+="//"),l+=e.cannotBeABaseURL?a[0]:a.length?"/"+a.join("/"):"",null!==s&&(l+="?"+s),null!==c&&(l+="#"+c),l},Io=function(){var e=Pi(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&Qi(e)?t+"://"+Wi(e.host)+(null!==n?":"+n:""):"null"},jo=function(){return Pi(this).scheme+":"},Ro=function(){return Pi(this).username},Lo=function(){return Pi(this).password},No=function(){var e=Pi(this),t=e.host,n=e.port;return null===t?"":null===n?Wi(t):Wi(t)+":"+n},Mo=function(){var e=Pi(this).host;return null===e?"":Wi(e)},Uo=function(){var e=Pi(this).port;return null===e?"":String(e)},Fo=function(){var e=Pi(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Do=function(){var e=Pi(this).query;return e?"?"+e:""},Bo=function(){return Pi(this).searchParams},qo=function(){var e=Pi(this).fragment;return e?"#"+e:""},Ho=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(l&&ot(Po,{href:Ho(Co,(function(e){var t=Pi(this),n=String(e),r=Ao(t,n);if(r)throw TypeError(r);Ai(t.searchParams).updateSearchParams(t.query)})),origin:Ho(Io),protocol:Ho(jo,(function(e){var t=Pi(this);Ao(t,String(e)+":",oo)})),username:Ho(Ro,(function(e){var t=Pi(this),n=Je(String(e));if(!eo(t)){t.username="";for(var r=0;r<n.length;r++)t.username+=Xi(n[r],Gi)}})),password:Ho(Lo,(function(e){var t=Pi(this),n=Je(String(e));if(!eo(t)){t.password="";for(var r=0;r<n.length;r++)t.password+=Xi(n[r],Gi)}})),host:Ho(No,(function(e){var t=Pi(this);t.cannotBeABaseURL||Ao(t,String(e),mo)})),hostname:Ho(Mo,(function(e){var t=Pi(this);t.cannotBeABaseURL||Ao(t,String(e),vo)})),port:Ho(Uo,(function(e){var t=Pi(this);eo(t)||(""==(e=String(e))?t.port=null:Ao(t,e,yo))})),pathname:Ho(Fo,(function(e){var t=Pi(this);t.cannotBeABaseURL||(t.path=[],Ao(t,e+"",So))})),search:Ho(Do,(function(e){var t=Pi(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",Ao(t,e,To)),Ai(t.searchParams).updateSearchParams(t.query)})),searchParams:Ho(Bo),hash:Ho(qo,(function(e){var t=Pi(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",Ao(t,e,xo)):t.fragment=null}))}),Q(Po,"toJSON",(function(){return Co.call(this)}),{enumerable:!0}),Q(Po,"toString",(function(){return Co.call(this)}),{enumerable:!0}),Ti){var Vo=Ti.createObjectURL,zo=Ti.revokeObjectURL;Vo&&Q(Oo,"createObjectURL",(function(e){return Vo.apply(Ti,arguments)})),zo&&Q(Oo,"revokeObjectURL",(function(e){return zo.apply(Ti,arguments)}))}function Wo(e){return(Wo="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 $o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ko(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Yo(e,t,n){return t&&Ko(e.prototype,t),n&&Ko(e,n),e}function Go(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Xo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Jo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xo(Object(n),!0).forEach((function(t){Go(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Qo(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,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,t)||ea(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 Zo(e){return function(e){if(Array.isArray(e))return ta(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||ea(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ea(e,t){if(e){if("string"==typeof e)return ta(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(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ta(e,t):void 0}}function ta(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Lt(Oo,"URL"),Te({global:!0,forced:!zr,sham:!l},{URL:Oo}),function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},r=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},i=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};"URLSearchParams"in e&&"a=1"===new e.URLSearchParams("?a=1").toString()||function(){var i=function e(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var n=Wo(t);if("undefined"===n);else if("string"===n)""!==t&&this._fromString(t);else if(t instanceof e){var r=this;t.forEach((function(e,t){r.append(t,e)}))}else{if(null===t||"object"!==n)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var i=0;i<t.length;i++){var o=t[i];if("[object Array]"!==Object.prototype.toString.call(o)&&2===o.length)throw new TypeError("Expected [string, any] as entry at index "+i+" of URLSearchParams's input");this.append(o[0],o[1])}else for(var a in t)t.hasOwnProperty(a)&&this.append(a,t[a])}},o=i.prototype;o.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},o.delete=function(e){delete this._entries[e]},o.get=function(e){return e in this._entries?this._entries[e][0]:null},o.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},o.has=function(e){return e in this._entries},o.set=function(e,t){this._entries[e]=[String(t)]},o.forEach=function(e,t){var n;for(var r in this._entries)if(this._entries.hasOwnProperty(r)){n=this._entries[r];for(var i=0;i<n.length;i++)e.call(t,n[i],r,this)}},o.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},o.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},o.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(o[Symbol.iterator]=o.entries),o.toString=function(){var e=[];return this.forEach((function(t,n){e.push(r(n)+"="+r(t))})),e.join("&")},e.URLSearchParams=i}();var o=e.URLSearchParams.prototype;"function"!=typeof o.sort&&(o.sort=function(){var e=this,t=[];this.forEach((function(n,r){t.push([r,n]),e._entries||e.delete(r)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof o._fromString&&Object.defineProperty(o,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var r,o=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<o.length;n++)r=o[n].split("="),this.append(i(r[0]),r.length>1?i(r[1]):"")}})}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c%20d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var r,i=document;if(n&&(void 0===e.location||n!==e.location.href)){(r=(i=document.implementation.createHTMLDocument("")).createElement("base")).href=n,i.head.appendChild(r);try{if(0!==r.href.indexOf(n))throw new Error(r.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var o=i.createElement("a");if(o.href=t,r&&(i.body.appendChild(o),o.href=o.href),":"===o.protocol||!/:/.test(o.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:o});var a=new e.URLSearchParams(this.search),s=!0,c=!0,l=this;["append","delete","set"].forEach((function(e){var t=a[e];a[e]=function(){t.apply(a,arguments),s&&(c=!1,l.search=a.toString(),c=!0)}})),Object.defineProperty(this,"searchParams",{value:a,enumerable:!0});var u=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==u&&(u=this.search,c&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},r=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(r,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(r,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(r,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e);var na=Re("isConcatSpreadable"),ra=!c((function(){var e=[];return e[na]=!1,e.concat()[0]!==e})),ia=er("concat"),oa=function(e){if(!w(e))return!1;var t=e[na];return void 0!==t?!!t:Pe(e)};Te({target:"Array",proto:!0,forced:!ra||!ia},{concat:function(e){var t,n,r,i,o,a=Oe(this),s=Ne(a,0),c=0;for(t=-1,r=arguments.length;t<r;t++)if(o=-1===t?a:arguments[t],oa(o)){if(c+(i=re(o.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<i;n++,c++)n in o&&We(s,c,o[n])}else{if(c>=9007199254740991)throw TypeError("Maximum allowed index exceeded");We(s,c++,o)}return s.length=c,s}});var aa=function(e){for(var t=Oe(this),n=re(t.length),r=arguments.length,i=ae(r>1?arguments[1]:void 0,n),o=r>2?arguments[2]:void 0,a=void 0===o?n:ae(o,n);a>i;)t[i++]=e;return t};Te({target:"Array",proto:!0},{fill:aa}),pt("fill");var sa=[].lastIndexOf,ca=!!sa&&1/[1].lastIndexOf(1,-0)<0,la=Ue("lastIndexOf"),ua=ca||la?function(e){if(ca)return sa.apply(this,arguments)||0;var t=b(this),n=re(t.length),r=n-1;for(arguments.length>1&&(r=Math.min(r,te(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:sa;Te({target:"Array",proto:!0,forced:ua!==[].lastIndexOf},{lastIndexOf:ua});var fa=j.f,ha=Function.prototype,da=ha.toString,pa=/^\s*function ([^ (]*)/;l&&!("name"in ha)&&fa(ha,"name",{configurable:!0,get:function(){try{return da.call(this).match(pa)[1]}catch(e){return""}}});var ga,ma,va,ya=function(e){return"function"==typeof e?e:void 0},ba=Re("species"),wa=function(e){var t=function(e,t){return arguments.length<2?ya(Qt[e])||ya(s[e]):Qt[e]&&Qt[e][t]||s[e]&&s[e][t]}(e),n=j.f;l&&t&&!t[ba]&&n(t,ba,{configurable:!0,get:function(){return this}})},ka=t((function(e){var t={};(e.exports=function(e,n,r,i,o){var a,s,c,l,u,f=Ae(n,r,i?2:1);if(o)a=e;else{if("function"!=typeof(s=Xe(e)))throw TypeError("Target is not iterable");if(ze(s)){for(c=0,l=re(e.length);l>c;c++)if((i?f(C(u=e[c])[0],u[1]):f(e[c]))===t)return t;return}a=s.call(e)}for(;!(u=a.next()).done;)if(Be(a,f,u.value,i)===t)return t}).BREAK=t})),Sa=s.location,Ea=s.setImmediate,_a=s.clearImmediate,Ta=s.process,xa=s.MessageChannel,Aa=s.Dispatch,Oa=0,Pa={},Ca=function(e){if(Pa.hasOwnProperty(e)){var t=Pa[e];delete Pa[e],t()}},Ia=function(e){return function(){Ca(e)}},ja=function(e){Ca(e.data)},Ra=function(e){s.postMessage(e+"",Sa.protocol+"//"+Sa.host)};Ea&&_a||(Ea=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return Pa[++Oa]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},ga(Oa),Oa},_a=function(e){delete Pa[e]},"process"==g(Ta)?ga=function(e){Ta.nextTick(Ia(e))}:Aa&&Aa.now?ga=function(e){Aa.now(Ia(e))}:xa?(va=(ma=new xa).port2,ma.port1.onmessage=ja,ga=Ae(va.postMessage,va,1)):!s.addEventListener||"function"!=typeof postMessage||s.importScripts||c(Ra)?ga="onreadystatechange"in x("script")?function(e){st.appendChild(x("script")).onreadystatechange=function(){st.removeChild(this),Ca(e)}}:function(e){setTimeout(Ia(e),0)}:(ga=Ra,s.addEventListener("message",ja,!1)));var La,Na,Ma,Ua,Fa,Da,Ba,qa={set:Ea,clear:_a},Ha=s.navigator,Va=Ha&&Ha.userAgent||"",za=P.f,Wa=qa.set,$a=s.MutationObserver||s.WebKitMutationObserver,Ka=s.process,Ya=s.Promise,Ga="process"==g(Ka),Xa=za(s,"queueMicrotask"),Ja=Xa&&Xa.value;Ja||(La=function(){var e,t;for(Ga&&(e=Ka.domain)&&e.exit();Na;){t=Na.fn,Na=Na.next;try{t()}catch(e){throw Na?Ua():Ma=void 0,e}}Ma=void 0,e&&e.enter()},Ga?Ua=function(){Ka.nextTick(La)}:$a&&!/(iphone|ipod|ipad).*applewebkit/i.test(Va)?(Fa=!0,Da=document.createTextNode(""),new $a(La).observe(Da,{characterData:!0}),Ua=function(){Da.data=Fa=!Fa}):Ya&&Ya.resolve?(Ba=Ya.resolve(void 0),Ua=function(){Ba.then(La)}):Ua=function(){Wa.call(s,La)});var Qa,Za,es,ts=Ja||function(e){var t={fn:e,next:void 0};Ma&&(Ma.next=t),Na||(Na=t,Ua()),Ma=t},ns=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=xe(t),this.reject=xe(n)},rs={f:function(e){return new ns(e)}},is=function(e,t){if(C(e),w(t)&&t.constructor===e)return t;var n=rs.f(e);return(0,n.resolve)(t),n.promise},os=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},as=qa.set,ss=Re("species"),cs="Promise",ls=J.get,us=J.set,fs=J.getterFor(cs),hs=s[cs],ds=s.TypeError,ps=s.document,gs=s.process,ms=s.fetch,vs=gs&&gs.versions,ys=vs&&vs.v8||"",bs=rs.f,ws=bs,ks="process"==g(gs),Ss=!!(ps&&ps.createEvent&&s.dispatchEvent),Es=Ee(cs,(function(){var e=hs.resolve(1),t=function(){},n=(e.constructor={})[ss]=function(e){e(t,t)};return!((ks||"function"==typeof PromiseRejectionEvent)&&e.then(t)instanceof n&&0!==ys.indexOf("6.6")&&-1===Va.indexOf("Chrome/66"))})),_s=Es||!nt((function(e){hs.all(e).catch((function(){}))})),Ts=function(e){var t;return!(!w(e)||"function"!=typeof(t=e.then))&&t},xs=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;ts((function(){for(var i=t.value,o=1==t.state,a=0,s=function(n){var r,a,s,c=o?n.ok:n.fail,l=n.resolve,u=n.reject,f=n.domain;try{c?(o||(2===t.rejection&&Cs(e,t),t.rejection=1),!0===c?r=i:(f&&f.enter(),r=c(i),f&&(f.exit(),s=!0)),r===n.promise?u(ds("Promise-chain cycle")):(a=Ts(r))?a.call(r,l,u):l(r)):u(i)}catch(e){f&&!s&&f.exit(),u(e)}};r.length>a;)s(r[a++]);t.reactions=[],t.notified=!1,n&&!t.rejection&&Os(e,t)}))}},As=function(e,t,n){var r,i;Ss?((r=ps.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),s.dispatchEvent(r)):r={promise:t,reason:n},(i=s["on"+e])?i(r):"unhandledrejection"===e&&function(e,t){var n=s.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},Os=function(e,t){as.call(s,(function(){var n,r=t.value;if(Ps(t)&&(n=os((function(){ks?gs.emit("unhandledRejection",r,e):As("unhandledrejection",e,r)})),t.rejection=ks||Ps(t)?2:1,n.error))throw n.value}))},Ps=function(e){return 1!==e.rejection&&!e.parent},Cs=function(e,t){as.call(s,(function(){ks?gs.emit("rejectionHandled",e):As("rejectionhandled",e,t.value)}))},Is=function(e,t,n,r){return function(i){e(t,n,i,r)}},js=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,xs(e,t,!0))},Rs=function(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw ds("Promise can't be resolved itself");var i=Ts(n);i?ts((function(){var r={done:!1};try{i.call(n,Is(Rs,e,r,t),Is(js,e,r,t))}catch(n){js(e,r,n,t)}})):(t.value=n,t.state=1,xs(e,t,!1))}catch(n){js(e,{done:!1},n,t)}}};Es&&(hs=function(e){Wr(this,hs,cs),xe(e),Qa.call(this);var t=ls(this);try{e(Is(Rs,this,t),Is(js,this,t))}catch(e){js(this,t,e)}},(Qa=function(e){us(this,{type:cs,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=ni(hs.prototype,{then:function(e,t){var n=fs(this),r=bs(jr(this,hs));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=ks?gs.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&xs(this,n,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),Za=function(){var e=new Qa,t=ls(e);this.promise=e,this.resolve=Is(Rs,e,t),this.reject=Is(js,e,t)},rs.f=bs=function(e){return e===hs||e===es?new Za(e):ws(e)},"function"==typeof ms&&Te({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return is(hs,ms.apply(s,arguments))}})),Te({global:!0,wrap:!0,forced:Es},{Promise:hs}),Lt(hs,cs,!1),wa(cs),es=Qt[cs],Te({target:cs,stat:!0,forced:Es},{reject:function(e){var t=bs(this);return t.reject.call(void 0,e),t.promise}}),Te({target:cs,stat:!0,forced:Es},{resolve:function(e){return is(this,e)}}),Te({target:cs,stat:!0,forced:_s},{all:function(e){var t=this,n=bs(t),r=n.resolve,i=n.reject,o=os((function(){var n=xe(t.resolve),o=[],a=0,s=1;ka(e,(function(e){var c=a++,l=!1;o.push(void 0),s++,n.call(t,e).then((function(e){l||(l=!0,o[c]=e,--s||r(o))}),i)})),--s||r(o)}));return o.error&&i(o.value),n.promise},race:function(e){var t=this,n=bs(t),r=n.reject,i=os((function(){var i=xe(t.resolve);ka(e,(function(e){i.call(t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var Ls=Math.max,Ns=Math.min,Ms=er("splice");Te({target:"Array",proto:!0,forced:!Ms},{splice:function(e,t){var n,r,i,o,a,s,c=Oe(this),l=re(c.length),u=ae(e,l),f=arguments.length;if(0===f?n=r=0:1===f?(n=0,r=l-u):(n=f-2,r=Ns(Ls(te(t),0),l-u)),l+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(i=Ne(c,r),o=0;o<r;o++)(a=u+o)in c&&We(i,o,c[a]);if(i.length=r,n<r){for(o=u;o<l-r;o++)s=o+n,(a=o+r)in c?c[s]=c[a]:delete c[s];for(o=l;o>l-r+n;o--)delete c[o-1]}else if(n>r)for(o=l-r;o>u;o--)s=o+n-1,(a=o+r-1)in c?c[s]=c[a]:delete c[s];for(o=0;o<n;o++)c[o+u]=arguments[o+2];return c.length=l-r+n,i}}),Sr("match",1,(function(e,t,n){return[function(t){var n=y(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=C(e),o=String(this);if(!i.global)return _r(i,o);var a=i.unicode;i.lastIndex=0;for(var s,c=[],l=0;null!==(s=_r(i,o));){var u=String(s[0]);c[l]=u,""===u&&(i.lastIndex=Er(o,re(i.lastIndex),a)),l++}return 0===l?null:c}]}));var Us=Me(2),Fs=er("filter");Te({target:"Array",proto:!0,forced:!Fs},{filter:function(e){return Us(this,e,arguments[1])}});var Ds=Me(1),Bs=er("map");Te({target:"Array",proto:!0,forced:!Bs},{map:function(e){return Ds(this,e,arguments[1])}});var qs=function(e,t,n,r,i){xe(t);var o=Oe(e),a=v(o),s=re(o.length),c=i?s-1:0,l=i?-1:1;if(n<2)for(;;){if(c in a){r=a[c],c+=l;break}if(c+=l,i?c<0:s<=c)throw TypeError("Reduce of empty array with no initial value")}for(;i?c>=0:s>c;c+=l)c in a&&(r=t(r,a[c],c,o));return r},Hs=Ue("reduce");Te({target:"Array",proto:!0,forced:Hs},{reduce:function(e){return qs(this,e,arguments.length,arguments[1],!1)}});var Vs=Object.isFrozen,zs=c((function(){Vs(1)}));Te({target:"Object",stat:!0,forced:zs},{isFrozen:function(e){return!w(e)||!!Vs&&Vs(e)}});var Ws=function(e,t,n){var r,i=t.constructor;return i!==n&&"function"==typeof i&&(r=i.prototype)!==n.prototype&&w(r)&&Ft&&Ft(e,r),e},$s=j.f,Ks=he.f,Ys=Re("match"),Gs=s.RegExp,Xs=Gs.prototype,Js=/a/g,Qs=/a/g,Zs=new Gs(Js)!==Js;if(Ee("RegExp",l&&(!Zs||c((function(){return Qs[Ys]=!1,Gs(Js)!=Js||Gs(Qs)==Qs||"/a/i"!=Gs(Js,"i")}))))){for(var ec=function(e,t){var n=this instanceof ec,r=yt(e),i=void 0===t;return!n&&r&&e.constructor===ec&&i?e:Ws(Zs?new Gs(r&&!i?e.source:e,t):Gs((r=e instanceof ec)?e.source:e,r&&i?cr.call(e):t),n?this:Xs,ec)},tc=function(e){e in ec||$s(ec,e,{configurable:!0,get:function(){return Gs[e]},set:function(t){Gs[e]=t}})},nc=Ks(Gs),rc=0;rc<nc.length;)tc(nc[rc++]);Xs.constructor=ec,ec.prototype=Xs,Q(s,"RegExp",ec)}wa("RegExp");var ic,oc=j.f,ac=s.DataView,sc=ac&&ac.prototype,cc=s.Int8Array,lc=cc&&cc.prototype,uc=s.Uint8ClampedArray,fc=uc&&uc.prototype,hc=cc&&Ot(cc),dc=lc&&Ot(lc),pc=Object.prototype,gc=pc.isPrototypeOf,mc=Re("toStringTag"),vc=q("TYPED_ARRAY_TAG"),yc=!(!s.ArrayBuffer||!s.DataView),bc=yc&&!!Ft,wc=!1,kc={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Sc=function(e){return w(e)&&E(kc,Ye(e))};for(ic in kc)s[ic]||(bc=!1);if((!bc||"function"!=typeof hc||hc===Function.prototype)&&(hc=function(){throw TypeError("Incorrect invocation")},bc))for(ic in kc)s[ic]&&Ft(s[ic],hc);if((!bc||!dc||dc===pc)&&(dc=hc.prototype,bc))for(ic in kc)s[ic]&&Ft(s[ic].prototype,dc);if(bc&&Ot(fc)!==dc&&Ft(fc,dc),l&&!E(dc,mc))for(ic in wc=!0,oc(dc,mc,{get:function(){return w(this)?this[vc]:void 0}}),kc)s[ic]&&R(s[ic],vc,ic);yc&&Ft&&Ot(sc)!==pc&&Ft(sc,pc);var Ec={NATIVE_ARRAY_BUFFER:yc,NATIVE_ARRAY_BUFFER_VIEWS:bc,TYPED_ARRAY_TAG:wc&&vc,aTypedArray:function(e){if(Sc(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(Ft){if(gc.call(hc,e))return e}else for(var t in kc)if(E(kc,ic)){var n=s[t];if(n&&(e===n||gc.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportProto:function(e,t,n){if(l){if(n)for(var r in kc){var i=s[r];i&&E(i.prototype,e)&&delete i.prototype[e]}dc[e]&&!n||Q(dc,e,n?t:bc&&lc[e]||t)}},exportStatic:function(e,t,n){var r,i;if(l){if(Ft){if(n)for(r in kc)(i=s[r])&&E(i,e)&&delete i[e];if(hc[e]&&!n)return;try{return Q(hc,e,n?t:bc&&cc[e]||t)}catch(e){}}for(r in kc)!(i=s[r])||i[e]&&!n||Q(i,e,t)}},isView:function(e){var t=Ye(e);return"DataView"===t||E(kc,t)},isTypedArray:Sc,TypedArray:hc,TypedArrayPrototype:dc},_c=Ec.NATIVE_ARRAY_BUFFER_VIEWS,Tc=s.ArrayBuffer,xc=s.Int8Array,Ac=!_c||!c((function(){xc(1)}))||!c((function(){new xc(-1)}))||!nt((function(e){new xc,new xc(null),new xc(1.5),new xc(e)}),!0)||c((function(){return 1!==new xc(new Tc(2),1,void 0).length})),Oc=function(e){if(void 0===e)return 0;var t=te(e),n=re(t);if(t!==n)throw RangeError("Wrong length or index");return n},Pc=t((function(e,t){var n=Ec.NATIVE_ARRAY_BUFFER,r=he.f,i=j.f,o=J.get,a=J.set,u=s.ArrayBuffer,f=u,h=s.DataView,d=s.Math,p=s.RangeError,g=d.abs,m=d.pow,v=d.floor,y=d.log,b=d.LN2,w=function(e,t,n){var r,i,o,a=new Array(n),s=8*n-t-1,c=(1<<s)-1,l=c>>1,u=23===t?m(2,-24)-m(2,-77):0,f=e<0||0===e&&1/e<0?1:0,h=0;for((e=g(e))!=e||e===1/0?(i=e!=e?1:0,r=c):(r=v(y(e)/b),e*(o=m(2,-r))<1&&(r--,o*=2),(e+=r+l>=1?u/o:u*m(2,1-l))*o>=2&&(r++,o/=2),r+l>=c?(i=0,r=c):r+l>=1?(i=(e*o-1)*m(2,t),r+=l):(i=e*m(2,l-1)*m(2,t),r=0));t>=8;a[h++]=255&i,i/=256,t-=8);for(r=r<<t|i,s+=t;s>0;a[h++]=255&r,r/=256,s-=8);return a[--h]|=128*f,a},k=function(e,t){var n,r=e.length,i=8*r-t-1,o=(1<<i)-1,a=o>>1,s=i-7,c=r-1,l=e[c--],u=127&l;for(l>>=7;s>0;u=256*u+e[c],c--,s-=8);for(n=u&(1<<-s)-1,u>>=-s,s+=t;s>0;n=256*n+e[c],c--,s-=8);if(0===u)u=1-a;else{if(u===o)return n?NaN:l?-1/0:1/0;n+=m(2,t),u-=a}return(l?-1:1)*n*m(2,u-t)},S=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},E=function(e){return[255&e]},_=function(e){return[255&e,e>>8&255]},T=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},x=function(e){return w(e,23,4)},A=function(e){return w(e,52,8)},O=function(e,t){i(e.prototype,t,{get:function(){return o(this)[t]}})},P=function(e,t,n,r){var i=Oc(+n),a=o(e);if(i+t>a.byteLength)throw p("Wrong index");var s=o(a.buffer).bytes,c=i+a.byteOffset,l=s.slice(c,c+t);return r?l:l.reverse()},C=function(e,t,n,r,i,a){var s=Oc(+n),c=o(e);if(s+t>c.byteLength)throw p("Wrong index");for(var l=o(c.buffer).bytes,u=s+c.byteOffset,f=r(+i),h=0;h<t;h++)l[u+h]=f[a?h:t-h-1]};if(n){if(!c((function(){u(1)}))||!c((function(){new u(-1)}))||c((function(){return new u,new u(1.5),new u(NaN),"ArrayBuffer"!=u.name}))){for(var I,L=(f=function(e){return Wr(this,f),new u(Oc(e))}).prototype=u.prototype,N=r(u),M=0;N.length>M;)(I=N[M++])in f||R(f,I,u[I]);L.constructor=f}var U=new h(new f(2)),F=h.prototype.setInt8;U.setInt8(0,2147483648),U.setInt8(1,2147483649),!U.getInt8(0)&&U.getInt8(1)||ni(h.prototype,{setInt8:function(e,t){F.call(this,e,t<<24>>24)},setUint8:function(e,t){F.call(this,e,t<<24>>24)}},{unsafe:!0})}else f=function(e){Wr(this,f,"ArrayBuffer");var t=Oc(e);a(this,{bytes:aa.call(new Array(t),0),byteLength:t}),l||(this.byteLength=t)},h=function(e,t,n){Wr(this,h,"DataView"),Wr(e,f,"DataView");var r=o(e).byteLength,i=te(t);if(i<0||i>r)throw p("Wrong offset");if(i+(n=void 0===n?r-i:re(n))>r)throw p("Wrong length");a(this,{buffer:e,byteLength:n,byteOffset:i}),l||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},l&&(O(f,"byteLength"),O(h,"buffer"),O(h,"byteLength"),O(h,"byteOffset")),ni(h.prototype,{getInt8:function(e){return P(this,1,e)[0]<<24>>24},getUint8:function(e){return P(this,1,e)[0]},getInt16:function(e){var t=P(this,2,e,arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=P(this,2,e,arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return S(P(this,4,e,arguments[1]))},getUint32:function(e){return S(P(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return k(P(this,4,e,arguments[1]),23)},getFloat64:function(e){return k(P(this,8,e,arguments[1]),52)},setInt8:function(e,t){C(this,1,e,E,t)},setUint8:function(e,t){C(this,1,e,E,t)},setInt16:function(e,t){C(this,2,e,_,t,arguments[2])},setUint16:function(e,t){C(this,2,e,_,t,arguments[2])},setInt32:function(e,t){C(this,4,e,T,t,arguments[2])},setUint32:function(e,t){C(this,4,e,T,t,arguments[2])},setFloat32:function(e,t){C(this,4,e,x,t,arguments[2])},setFloat64:function(e,t){C(this,8,e,A,t,arguments[2])}});Lt(f,"ArrayBuffer"),Lt(h,"DataView"),t.ArrayBuffer=f,t.DataView=h})),Cc=function(e,t){var n=te(e);if(n<0||n%t)throw RangeError("Wrong offset");return n},Ic=Ec.aTypedArrayConstructor,jc=function(e){var t,n,r,i,o,a=Oe(e),s=arguments.length,c=s>1?arguments[1]:void 0,l=void 0!==c,u=Xe(a);if(null!=u&&!ze(u))for(o=u.call(a),a=[];!(i=o.next()).done;)a.push(i.value);for(l&&s>2&&(c=Ae(c,arguments[2],2)),n=re(a.length),r=new(Ic(this))(n),t=0;n>t;t++)r[t]=l?c(a[t],t):a[t];return r};t((function(e){var t=he.f,n=J.get,r=J.set,i=j.f,o=P.f,a=Me(0),c=s.RangeError,u=Pc.ArrayBuffer,f=Pc.DataView,h=Ec.NATIVE_ARRAY_BUFFER_VIEWS,p=Ec.TYPED_ARRAY_TAG,g=Ec.TypedArray,m=Ec.TypedArrayPrototype,v=Ec.aTypedArrayConstructor,y=Ec.isTypedArray,b=function(e,t){for(var n=0,r=t.length,i=new(v(e))(r);r>n;)i[n]=t[n++];return i},S=function(e,t){i(e,t,{get:function(){return n(this)[t]}})},_=function(e){var t;return e instanceof u||"ArrayBuffer"==(t=Ye(e))||"SharedArrayBuffer"==t},T=function(e,t){return y(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},x=function(e,t){return T(e,t=k(t,!0))?d(2,e[t]):o(e,t)},A=function(e,t,n){return!(T(e,t=k(t,!0))&&w(n)&&E(n,"value"))||E(n,"get")||E(n,"set")||n.configurable||E(n,"writable")&&!n.writable||E(n,"enumerable")&&!n.enumerable?i(e,t,n):(e[t]=n.value,e)};l?(h||(P.f=x,j.f=A,S(m,"buffer"),S(m,"byteOffset"),S(m,"byteLength"),S(m,"length")),Te({target:"Object",stat:!0,forced:!h},{getOwnPropertyDescriptor:x,defineProperty:A}),e.exports=function(e,o,l,d){var v=e+(d?"Clamped":"")+"Array",k="get"+e,S="set"+e,E=s[v],T=E,x=T&&T.prototype,A={},O=function(e,t){i(e,t,{get:function(){return function(e,t){var r=n(e);return r.view[k](t*o+r.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=n(e);d&&(r=(r=Math.round(r))<0?0:r>255?255:255&r),i.view[S](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};h?Ac&&(T=l((function(e,t,n,r){return Wr(e,T,v),w(t)?_(t)?void 0!==r?new E(t,Cc(n,o),r):void 0!==n?new E(t,Cc(n,o)):new E(t):y(t)?b(T,t):jc.call(T,t):new E(Oc(t))})),Ft&&Ft(T,g),a(t(E),(function(e){e in T||R(T,e,E[e])})),T.prototype=x):(T=l((function(e,t,n,i){Wr(e,T,v);var a,s,l,h=0,d=0;if(w(t)){if(!_(t))return y(t)?b(T,t):jc.call(T,t);a=t,d=Cc(n,o);var p=t.byteLength;if(void 0===i){if(p%o)throw c("Wrong length");if((s=p-d)<0)throw c("Wrong length")}else if((s=re(i)*o)+d>p)throw c("Wrong length");l=s/o}else l=Oc(t),a=new u(s=l*o);for(r(e,{buffer:a,byteOffset:d,byteLength:s,length:l,view:new f(a)});h<l;)O(e,h++)})),Ft&&Ft(T,g),x=T.prototype=ft(m)),x.constructor!==T&&R(x,"constructor",T),p&&R(x,p,v),A[v]=T,Te({global:!0,forced:T!=E,sham:!h},A),"BYTES_PER_ELEMENT"in T||R(T,"BYTES_PER_ELEMENT",o),"BYTES_PER_ELEMENT"in x||R(x,"BYTES_PER_ELEMENT",o),wa(v)}):e.exports=function(){}}))("Uint16",2,(function(e){return function(t,n,r){return e(this,t,n,r)}}));var Rc=[].copyWithin||function(e,t){var n=Oe(this),r=re(n.length),i=ae(e,r),o=ae(t,r),a=arguments.length>2?arguments[2]:void 0,s=Math.min((void 0===a?r:ae(a,r))-o,r-i),c=1;for(o<i&&i<o+s&&(c=-1,o+=s-1,i+=s-1);s-- >0;)o in n?n[i]=n[o]:delete n[i],i+=c,o+=c;return n},Lc=Ec.aTypedArray;Ec.exportProto("copyWithin",(function(e,t){return Rc.call(Lc(this),e,t,arguments.length>2?arguments[2]:void 0)}));var Nc=Me(4),Mc=Ec.aTypedArray;Ec.exportProto("every",(function(e){return Nc(Mc(this),e,arguments.length>1?arguments[1]:void 0)}));var Uc=Ec.aTypedArray;Ec.exportProto("fill",(function(e){return aa.apply(Uc(this),arguments)}));var Fc=Me(2),Dc=Ec.aTypedArray,Bc=Ec.aTypedArrayConstructor;Ec.exportProto("filter",(function(e){for(var t=Fc(Dc(this),e,arguments.length>1?arguments[1]:void 0),n=jr(this,this.constructor),r=0,i=t.length,o=new(Bc(n))(i);i>r;)o[r]=t[r++];return o}));var qc=Me(5),Hc=Ec.aTypedArray;Ec.exportProto("find",(function(e){return qc(Hc(this),e,arguments.length>1?arguments[1]:void 0)}));var Vc=Me(6),zc=Ec.aTypedArray;Ec.exportProto("findIndex",(function(e){return Vc(zc(this),e,arguments.length>1?arguments[1]:void 0)}));var Wc=Me(0),$c=Ec.aTypedArray;Ec.exportProto("forEach",(function(e){Wc($c(this),e,arguments.length>1?arguments[1]:void 0)}));var Kc=Ec.aTypedArray,Yc=se(!0);Ec.exportProto("includes",(function(e){return Yc(Kc(this),e,arguments.length>1?arguments[1]:void 0)}));var Gc=Ec.aTypedArray,Xc=se(!1);Ec.exportProto("indexOf",(function(e){return Xc(Gc(this),e,arguments.length>1?arguments[1]:void 0)}));var Jc=Re("iterator"),Qc=s.Uint8Array,Zc=Gn.values,el=Gn.keys,tl=Gn.entries,nl=Ec.aTypedArray,rl=Ec.exportProto,il=Qc&&Qc.prototype[Jc],ol=!!il&&("values"==il.name||null==il.name),al=function(){return Zc.call(nl(this))};rl("entries",(function(){return tl.call(nl(this))})),rl("keys",(function(){return el.call(nl(this))})),rl("values",al,!ol),rl(Jc,al,!ol);var sl=Ec.aTypedArray,cl=[].join;Ec.exportProto("join",(function(e){return cl.apply(sl(this),arguments)}));var ll=Ec.aTypedArray;Ec.exportProto("lastIndexOf",(function(e){return ua.apply(ll(this),arguments)}));var ul=Ec.aTypedArray,fl=Ec.aTypedArrayConstructor,hl=Me(1,(function(e,t){return new(fl(jr(e,e.constructor)))(t)}));Ec.exportProto("map",(function(e){return hl(ul(this),e,arguments.length>1?arguments[1]:void 0)}));var dl=Ec.aTypedArray;Ec.exportProto("reduce",(function(e){return qs(dl(this),e,arguments.length,arguments[1],!1)}));var pl=Ec.aTypedArray;Ec.exportProto("reduceRight",(function(e){return qs(pl(this),e,arguments.length,arguments[1],!0)}));var gl=Ec.aTypedArray;Ec.exportProto("reverse",(function(){for(var e,t=gl(this).length,n=Math.floor(t/2),r=0;r<n;)e=this[r],this[r++]=this[--t],this[t]=e;return this}));var ml=Ec.aTypedArray,vl=c((function(){new Int8Array(1).set({})}));Ec.exportProto("set",(function(e){ml(this);var t=Cc(arguments[1],1),n=this.length,r=Oe(e),i=re(r.length),o=0;if(i+t>n)throw RangeError("Wrong length");for(;o<i;)this[t+o]=r[o++]}),vl);var yl=Ec.aTypedArray,bl=Ec.aTypedArrayConstructor,wl=[].slice,kl=c((function(){new Int8Array(1).slice()}));Ec.exportProto("slice",(function(e,t){for(var n=wl.call(yl(this),e,t),r=jr(this,this.constructor),i=0,o=n.length,a=new(bl(r))(o);o>i;)a[i]=n[i++];return a}),kl);var Sl=Me(3),El=Ec.aTypedArray;Ec.exportProto("some",(function(e){return Sl(El(this),e,arguments.length>1?arguments[1]:void 0)}));var _l=Ec.aTypedArray,Tl=[].sort;Ec.exportProto("sort",(function(e){return Tl.call(_l(this),e)}));var xl=Ec.aTypedArray;Ec.exportProto("subarray",(function(e,t){var n=xl(this),r=n.length,i=ae(e,r);return new(jr(n,n.constructor))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,re((void 0===t?r:ae(t,r))-i))}));var Al=s.Int8Array,Ol=Ec.aTypedArray,Pl=[].toLocaleString,Cl=[].slice,Il=!!Al&&c((function(){Pl.call(new Al(1))})),jl=c((function(){return[1,2].toLocaleString()!=new Al([1,2]).toLocaleString()}))||!c((function(){Al.prototype.toLocaleString.call([1,2])}));Ec.exportProto("toLocaleString",(function(){return Pl.apply(Il?Cl.call(Ol(this)):Ol(this),arguments)}),jl);var Rl=s.Uint8Array,Ll=Rl&&Rl.prototype,Nl=[].toString,Ml=[].join;c((function(){Nl.call({})}))&&(Nl=function(){return Ml.call(this)}),Ec.exportProto("toString",Nl,(Ll||{}).toString!=Nl);var Ul=t((function(e,t){function n(e,t){for(var n=0;n<e.length;++n)if(e[n]===t)return n;return-1}function r(e,t){var r=[],i=[];return null==t&&(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n(r,t)).join(".")+"]"}),function(o,a){if(r.length>0){var s=n(r,this);~s?r.splice(s+1):r.push(this),~s?i.splice(s,1/0,o):i.push(o),~n(r,a)&&(a=t.call(this,o,a))}else r.push(a);return null==e?a instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}(a):a:e.call(this,o,a)}}(e.exports=function(e,t,n,i){return JSON.stringify(e,r(t,i),n)}).getSerialize=r})),Fl=(Ul.getSerialize,"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{});function Dl(e){return void 0===e}function Bl(e){return"[object Object]"===Object.prototype.toString.call(e)}function ql(e){return"[object String]"===Object.prototype.toString.call(e)}function Hl(e){return"[object Array]"===Object.prototype.toString.call(e)}function Vl(){if(!("fetch"in Fl))return!1;try{return new Headers,new Request(""),new Response,!0}catch(e){return!1}}function zl(e,t){var n,r;if(Dl(e.length))for(n in e)$l(e,n)&&t.call(null,n,e[n]);else if(r=e.length)for(n=0;n<r;n++)t.call(null,n,e[n])}function Wl(e,t){if("number"!=typeof t)throw new Error("2nd argument to `truncate` function should be a number");return"string"!=typeof e||0===t||e.length<=t?e:e.substr(0,t)+"…"}function $l(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Kl(e){for(var t,n=[],r=0,i=e.length;r<i;r++)ql(t=e[r])?n.push(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):t&&t.source&&n.push(t.source);return new RegExp(n.join("|"),"i")}function Yl(e){var t,n,r,i,o,a=[];if(!e||!e.tagName)return"";if(a.push(e.tagName.toLowerCase()),e.id&&a.push("#"+e.id),(t=e.className)&&ql(t))for(n=t.split(/\s+/),o=0;o<n.length;o++)a.push("."+n[o]);var s=["type","name","title","alt"];for(o=0;o<s.length;o++)r=s[o],(i=e.getAttribute(r))&&a.push("["+r+'="'+i+'"]');return a.join("")}function Gl(e,t){return!!(!!e^!!t)}function Xl(e,t){if(Gl(e,t))return!1;var n,r,i=e.frames,o=t.frames;if(void 0===i||void 0===o)return!1;if(i.length!==o.length)return!1;for(var a=0;a<i.length;a++)if(n=i[a],r=o[a],n.filename!==r.filename||n.lineno!==r.lineno||n.colno!==r.colno||n.function!==r.function)return!1;return!0}function Jl(e){return function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(e))}function Ql(e){if("string"==typeof e){return Wl(e,40)}if("number"==typeof e||"boolean"==typeof e||void 0===e)return e;var t=Object.prototype.toString.call(e);return"[object Object]"===t?"[Object]":"[object Array]"===t?"[Array]":"[object Function]"===t?e.name?"[Function: "+e.name+"]":"[Function]":e}var Zl={isObject:function(e){return"object"===Wo(e)&&null!==e},isError:function(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}},isErrorEvent:function(e){return"[object ErrorEvent]"===Object.prototype.toString.call(e)},isDOMError:function(e){return"[object DOMError]"===Object.prototype.toString.call(e)},isDOMException:function(e){return"[object DOMException]"===Object.prototype.toString.call(e)},isUndefined:Dl,isFunction:function(e){return"function"==typeof e},isPlainObject:Bl,isString:ql,isArray:Hl,isEmptyObject:function(e){if(!Bl(e))return!1;for(var t in e)if(e.hasOwnProperty(t))return!1;return!0},supportsErrorEvent:function(){try{return new ErrorEvent(""),!0}catch(e){return!1}},supportsDOMError:function(){try{return new DOMError(""),!0}catch(e){return!1}},supportsDOMException:function(){try{return new DOMException(""),!0}catch(e){return!1}},supportsFetch:Vl,supportsReferrerPolicy:function(){if(!Vl())return!1;try{return new Request("pickleRick",{referrerPolicy:"origin"}),!0}catch(e){return!1}},supportsPromiseRejectionEvent:function(){return"function"==typeof PromiseRejectionEvent},wrappedCallback:function(e){return function(t,n){var r=e(t)||t;return n&&n(r)||r}},each:zl,objectMerge:function(e,t){return t?(zl(t,(function(t,n){e[t]=n})),e):e},truncate:Wl,objectFrozen:function(e){return!!Object.isFrozen&&Object.isFrozen(e)},hasKey:$l,joinRegExp:Kl,urlencode:function(e){var t=[];return zl(e,(function(e,n){t.push(encodeURIComponent(e)+"="+encodeURIComponent(n))})),t.join("&")},uuid4:function(){var e=Fl.crypto||Fl.msCrypto;if(!Dl(e)&&e.getRandomValues){var t=new Uint16Array(8);e.getRandomValues(t),t[3]=4095&t[3]|16384,t[4]=16383&t[4]|32768;var n=function(e){for(var t=e.toString(16);t.length<4;)t="0"+t;return t};return n(t[0])+n(t[1])+n(t[2])+n(t[3])+n(t[4])+n(t[5])+n(t[6])+n(t[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))},htmlTreeAsString:function(e){for(var t,n=[],r=0,i=0,o=" > ".length;e&&r++<5&&!("html"===(t=Yl(e))||r>1&&i+n.length*o+t.length>=80);)n.push(t),i+=t.length,e=e.parentNode;return n.reverse().join(" > ")},htmlElementAsString:Yl,isSameException:function(e,t){return!Gl(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&(n=e.stacktrace,r=t.stacktrace,(!Dl(n)||!Dl(r))&&Xl(e.stacktrace,t.stacktrace)));var n,r},isSameStacktrace:Xl,parseUrl:function(e){if("string"!=typeof e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/),n=t[6]||"",r=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+n+r}},fill:function(e,t,n,r){if(null!=e){var i=e[t];e[t]=n(i),e[t].__raven__=!0,e[t].__orig__=i,r&&r.push([e,t,i])}},safeJoin:function(e,t){if(!Hl(e))return"";for(var n=[],r=0;r<e.length;r++)try{n.push(String(e[r]))}catch(e){n.push("[value cannot be serialized]")}return n.join(t)},serializeException:function e(t,n,r){if(!Bl(t))return t;r="number"!=typeof(n="number"!=typeof n?3:n)?51200:r;var i=function e(t,n){return 0===n?Ql(t):Bl(t)?Object.keys(t).reduce((function(r,i){return r[i]=e(t[i],n-1),r}),{}):Array.isArray(t)?t.map((function(t){return e(t,n-1)})):Ql(t)}(t,n);return Jl(Ul(i))>r?e(t,n-1):i},serializeKeysForMessage:function(e,t){if("number"==typeof e||"string"==typeof e)return e.toString();if(!Array.isArray(e))return"";if(0===(e=e.filter((function(e){return"string"==typeof e}))).length)return"[object has no keys]";if(t="number"!=typeof t?40:t,e[0].length>=t)return e[0];for(var n=e.length;n>0;n--){var r=e.slice(0,n).join(", ");if(!(r.length>t))return n===e.length?r:r+"…"}return""},sanitize:function(e,t){if(!Hl(t)||Hl(t)&&0===t.length)return e;var n,r=Kl(t);try{n=JSON.parse(Ul(e))}catch(t){return e}return function e(t){return Hl(t)?t.map((function(t){return e(t)})):Bl(t)?Object.keys(t).reduce((function(n,i){return r.test(i)?n[i]="********":n[i]=e(t[i]),n}),{}):t}(n)}},eu={collectWindowErrors:!0,debug:!1},tu="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},nu=[].slice,ru=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function iu(){return"undefined"==typeof document||null==document.location?"":document.location.href}eu.report=function(){var e,t,n=[],r=null,i=null,o=null;function a(e,t){var r=null;if(!t||eu.collectWindowErrors){for(var i in n)if(n.hasOwnProperty(i))try{n[i].apply(null,[e].concat(nu.call(arguments,2)))}catch(e){r=e}if(r)throw r}}function s(t,n,r,i,s){var l=Zl.isErrorEvent(s)?s.error:s,u=Zl.isErrorEvent(t)?t.message:t;if(o)eu.computeStackTrace.augmentStackTraceWithInitialElement(o,n,r,u),c();else if(l&&Zl.isError(l))a(eu.computeStackTrace(l),!0);else{var f,h={url:n,line:r,column:i},d=void 0;if("[object String]"==={}.toString.call(u))(f=u.match(ru))&&(d=f[1],u=f[2]);h.func="?",a({name:d,message:u,url:iu(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function c(){var e=o,t=r;r=null,o=null,i=null,a.apply(null,[e,!1].concat(t))}function l(e,t){var n=nu.call(arguments,1);if(o){if(i===e)return;c()}var a=eu.computeStackTrace(e);if(o=a,i=e,r=n,setTimeout((function(){i===e&&c()}),a.incomplete?2e3:0),!1!==t)throw e}return l.subscribe=function(r){!function(){if(t)return;e=tu.onerror,tu.onerror=s,t=!0}(),n.push(r)},l.unsubscribe=function(e){for(var t=n.length-1;t>=0;--t)n[t]===e&&n.splice(t,1)},l.uninstall=function(){!function(){if(!t)return;tu.onerror=e,t=!1,e=void 0}(),n=[]},l}(),eu.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,n,r,i=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,o=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,c=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=e.stack.split("\n"),u=[],f=(/^(.*) is undefined$/.exec(e.message),0),h=l.length;f<h;++f){if(n=i.exec(l[f])){var d=n[2]&&0===n[2].indexOf("native");n[2]&&0===n[2].indexOf("eval")&&(t=c.exec(n[2]))&&(n[2]=t[1],n[3]=t[2],n[4]=t[3]),r={url:d?null:n[2],func:n[1]||"?",args:d?[n[2]]:[],line:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}else if(n=o.exec(l[f]))r={url:n[2],func:n[1]||"?",args:[],line:+n[3],column:n[4]?+n[4]:null};else{if(!(n=a.exec(l[f])))continue;n[3]&&n[3].indexOf(" > eval")>-1&&(t=s.exec(n[3]))?(n[3]=t[1],n[4]=t[2],n[5]=null):0!==f||n[5]||void 0===e.columnNumber||(u[0].column=e.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}if(!r.func&&r.line&&(r.func="?"),r.url&&"blob:"===r.url.substr(0,5)){var p=new XMLHttpRequest;if(p.open("GET",r.url,!1),p.send(null),200===p.status){var g=p.responseText||"",m=(g=g.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(m){var v=m[1];"~"===v.charAt(0)&&(v=("undefined"==typeof document||null==document.location?"":document.location.origin?document.location.origin:document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:""))+v.slice(1)),r.url=v.slice(0,-4)}}}u.push(r)}return u.length?{name:e.name,message:e.message,url:iu(),stack:u}:null}}function t(e,t,n,r){var i={url:t,line:n};if(i.url&&i.line){if(e.incomplete=!1,i.func||(i.func="?"),e.stack.length>0&&e.stack[0].url===i.url){if(e.stack[0].line===i.line)return!1;if(!e.stack[0].line&&e.stack[0].func===i.func)return e.stack[0].line=i.line,!1}return e.stack.unshift(i),e.partial=!0,!0}return e.incomplete=!0,!1}function n(e,i){for(var o,a,s=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,c=[],l={},u=!1,f=n.caller;f&&!u;f=f.caller)if(f!==r&&f!==eu.report){if(a={url:null,func:"?",line:null,column:null},f.name?a.func=f.name:(o=s.exec(f.toString()))&&(a.func=o[1]),void 0===a.func)try{a.func=o.input.substring(0,o.input.indexOf("{"))}catch(e){}l[""+f]?u=!0:l[""+f]=!0,c.push(a)}i&&c.splice(0,i);var h={name:e.name,message:e.message,url:iu(),stack:c};return t(h,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),h}function r(t,r){var i=null;r=null==r?0:+r;try{if(i=e(t))return i}catch(e){if(eu.debug)throw e}try{if(i=n(t,r+1))return i}catch(e){if(eu.debug)throw e}return{name:t.name,message:t.message,url:iu()}}return r.augmentStackTraceWithInitialElement=t,r.computeStackTraceFromStackProp=e,r}();var ou=eu;function au(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function su(e,t,n,r,i,o){return au((a=au(au(t,e),au(r,o)))<<(s=i)|a>>>32-s,n);var a,s}function cu(e,t,n,r,i,o,a){return su(t&n|~t&r,e,t,i,o,a)}function lu(e,t,n,r,i,o,a){return su(t&r|n&~r,e,t,i,o,a)}function uu(e,t,n,r,i,o,a){return su(t^n^r,e,t,i,o,a)}function fu(e,t,n,r,i,o,a){return su(n^(t|~r),e,t,i,o,a)}function hu(e,t){var n,r,i,o,a;e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var s=1732584193,c=-271733879,l=-1732584194,u=271733878;for(n=0;n<e.length;n+=16)r=s,i=c,o=l,a=u,s=cu(s,c,l,u,e[n],7,-680876936),u=cu(u,s,c,l,e[n+1],12,-389564586),l=cu(l,u,s,c,e[n+2],17,606105819),c=cu(c,l,u,s,e[n+3],22,-1044525330),s=cu(s,c,l,u,e[n+4],7,-176418897),u=cu(u,s,c,l,e[n+5],12,1200080426),l=cu(l,u,s,c,e[n+6],17,-1473231341),c=cu(c,l,u,s,e[n+7],22,-45705983),s=cu(s,c,l,u,e[n+8],7,1770035416),u=cu(u,s,c,l,e[n+9],12,-1958414417),l=cu(l,u,s,c,e[n+10],17,-42063),c=cu(c,l,u,s,e[n+11],22,-1990404162),s=cu(s,c,l,u,e[n+12],7,1804603682),u=cu(u,s,c,l,e[n+13],12,-40341101),l=cu(l,u,s,c,e[n+14],17,-1502002290),s=lu(s,c=cu(c,l,u,s,e[n+15],22,1236535329),l,u,e[n+1],5,-165796510),u=lu(u,s,c,l,e[n+6],9,-1069501632),l=lu(l,u,s,c,e[n+11],14,643717713),c=lu(c,l,u,s,e[n],20,-373897302),s=lu(s,c,l,u,e[n+5],5,-701558691),u=lu(u,s,c,l,e[n+10],9,38016083),l=lu(l,u,s,c,e[n+15],14,-660478335),c=lu(c,l,u,s,e[n+4],20,-405537848),s=lu(s,c,l,u,e[n+9],5,568446438),u=lu(u,s,c,l,e[n+14],9,-1019803690),l=lu(l,u,s,c,e[n+3],14,-187363961),c=lu(c,l,u,s,e[n+8],20,1163531501),s=lu(s,c,l,u,e[n+13],5,-1444681467),u=lu(u,s,c,l,e[n+2],9,-51403784),l=lu(l,u,s,c,e[n+7],14,1735328473),s=uu(s,c=lu(c,l,u,s,e[n+12],20,-1926607734),l,u,e[n+5],4,-378558),u=uu(u,s,c,l,e[n+8],11,-2022574463),l=uu(l,u,s,c,e[n+11],16,1839030562),c=uu(c,l,u,s,e[n+14],23,-35309556),s=uu(s,c,l,u,e[n+1],4,-1530992060),u=uu(u,s,c,l,e[n+4],11,1272893353),l=uu(l,u,s,c,e[n+7],16,-155497632),c=uu(c,l,u,s,e[n+10],23,-1094730640),s=uu(s,c,l,u,e[n+13],4,681279174),u=uu(u,s,c,l,e[n],11,-358537222),l=uu(l,u,s,c,e[n+3],16,-722521979),c=uu(c,l,u,s,e[n+6],23,76029189),s=uu(s,c,l,u,e[n+9],4,-640364487),u=uu(u,s,c,l,e[n+12],11,-421815835),l=uu(l,u,s,c,e[n+15],16,530742520),s=fu(s,c=uu(c,l,u,s,e[n+2],23,-995338651),l,u,e[n],6,-198630844),u=fu(u,s,c,l,e[n+7],10,1126891415),l=fu(l,u,s,c,e[n+14],15,-1416354905),c=fu(c,l,u,s,e[n+5],21,-57434055),s=fu(s,c,l,u,e[n+12],6,1700485571),u=fu(u,s,c,l,e[n+3],10,-1894986606),l=fu(l,u,s,c,e[n+10],15,-1051523),c=fu(c,l,u,s,e[n+1],21,-2054922799),s=fu(s,c,l,u,e[n+8],6,1873313359),u=fu(u,s,c,l,e[n+15],10,-30611744),l=fu(l,u,s,c,e[n+6],15,-1560198380),c=fu(c,l,u,s,e[n+13],21,1309151649),s=fu(s,c,l,u,e[n+4],6,-145523070),u=fu(u,s,c,l,e[n+11],10,-1120210379),l=fu(l,u,s,c,e[n+2],15,718787259),c=fu(c,l,u,s,e[n+9],21,-343485551),s=au(s,r),c=au(c,i),l=au(l,o),u=au(u,a);return[s,c,l,u]}function du(e){var t,n="",r=32*e.length;for(t=0;t<r;t+=8)n+=String.fromCharCode(e[t>>5]>>>t%32&255);return n}function pu(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t<n.length;t+=1)n[t]=0;var r=8*e.length;for(t=0;t<r;t+=8)n[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return n}function gu(e){var t,n,r="";for(n=0;n<e.length;n+=1)t=e.charCodeAt(n),r+="0123456789abcdef".charAt(t>>>4&15)+"0123456789abcdef".charAt(15&t);return r}function mu(e){return unescape(encodeURIComponent(e))}function vu(e){return function(e){return du(hu(pu(e),8*e.length))}(mu(e))}function yu(e,t){return function(e,t){var n,r,i=pu(e),o=[],a=[];for(o[15]=a[15]=void 0,i.length>16&&(i=hu(i,8*e.length)),n=0;n<16;n+=1)o[n]=909522486^i[n],a[n]=1549556828^i[n];return r=hu(o.concat(pu(t)),512+8*t.length),du(hu(a.concat(r),640))}(mu(e),mu(t))}var bu=function(e,t,n){return t?n?yu(t,e):function(e,t){return gu(yu(e,t))}(t,e):n?vu(e):gu(vu(e))};function wu(e){this.name="RavenConfigError",this.message=e}wu.prototype=new Error,wu.prototype.constructor=wu;var ku=wu,Su=function(e,t,n){var r=e[t],i=e;if(t in e){var o="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),a=Zl.safeJoin(e," "),s={level:o,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(a="Assertion failed: "+(Zl.safeJoin(e.slice(1)," ")||"console.assert"),s.extra.arguments=e.slice(1),n&&n(a,s)):n&&n(a,s),r&&Function.prototype.apply.call(r,i,e)}}},Eu=Zl.isErrorEvent,_u=Zl.isDOMError,Tu=Zl.isDOMException,xu=Zl.isError,Au=Zl.isObject,Ou=Zl.isPlainObject,Pu=Zl.isUndefined,Cu=Zl.isFunction,Iu=Zl.isString,ju=Zl.isArray,Ru=Zl.isEmptyObject,Lu=Zl.each,Nu=Zl.objectMerge,Mu=Zl.truncate,Uu=Zl.objectFrozen,Fu=Zl.hasKey,Du=Zl.joinRegExp,Bu=Zl.urlencode,qu=Zl.uuid4,Hu=Zl.htmlTreeAsString,Vu=Zl.isSameException,zu=Zl.isSameStacktrace,Wu=Zl.parseUrl,$u=Zl.fill,Ku=Zl.supportsFetch,Yu=Zl.supportsReferrerPolicy,Gu=Zl.serializeKeysForMessage,Xu=Zl.serializeException,Ju=Zl.sanitize,Qu=Su,Zu="source protocol user pass host port path".split(" "),ef=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function tf(){return+new Date}var nf="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},rf=nf.document,of=nf.navigator;function af(e,t){return Cu(t)?function(n){return t(n,e)}:t}function sf(){for(var e in this._hasJSON=!("object"!==("undefined"==typeof JSON?"undefined":Wo(JSON))||!JSON.stringify),this._hasDocument=!Pu(rf),this._hasNavigator=!Pu(of),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={release:nf.SENTRY_RELEASE&&nf.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this._fetchDefaults={method:"POST",referrerPolicy:Yu()?"origin":""},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=nf.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=tf(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=nf.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}sf.prototype={VERSION:"3.27.1",debug:!1,TraceKit:ou,config:function(e,t){var n=this;if(n._globalServer)return this._logDebug("error","Error: Raven has already been configured"),n;if(!e)return n;var r=n._globalOptions;t&&Lu(t,(function(e,t){"tags"===e||"extra"===e||"user"===e?n._globalContext[e]=t:r[e]=t})),n.setDSN(e),r.ignoreErrors.push(/^Script error\.?$/),r.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),r.ignoreErrors=Du(r.ignoreErrors),r.ignoreUrls=!!r.ignoreUrls.length&&Du(r.ignoreUrls),r.whitelistUrls=!!r.whitelistUrls.length&&Du(r.whitelistUrls),r.includePaths=Du(r.includePaths),r.maxBreadcrumbs=Math.max(0,Math.min(r.maxBreadcrumbs||100,100));var i={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},o=r.autoBreadcrumbs;"[object Object]"==={}.toString.call(o)?o=Nu(i,o):!1!==o&&(o=i),r.autoBreadcrumbs=o;var a={tryCatch:!0},s=r.instrument;return"[object Object]"==={}.toString.call(s)?s=Nu(a,s):!1!==s&&(s=a),r.instrument=s,ou.collectWindowErrors=!!r.collectWindowErrors,n},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(ou.report.subscribe((function(){e._handleOnErrorStackInfo.apply(e,arguments)})),e._globalOptions.captureUnhandledRejections&&e._attachPromiseRejectionHandler(),e._patchFunctionToString(),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),n=t.path.lastIndexOf("/"),r=t.path.substr(1,n);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(n+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+r+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,n){return Cu(e)&&(n=t||[],t=e,e={}),this.wrap(e,t).apply(this,n)},wrap:function(e,t,n){var r=this;if(Pu(t)&&!Cu(e))return e;if(Cu(e)&&(t=e,e=void 0),!Cu(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function i(){var i=[],o=arguments.length,a=!e||e&&!1!==e.deep;for(n&&Cu(n)&&n.apply(this,arguments);o--;)i[o]=a?r.wrap(e,arguments[o]):arguments[o];try{return t.apply(this,i)}catch(t){throw r._ignoreNextOnError(),r.captureException(t,e),t}}for(var o in t)Fu(t,o)&&(i[o]=t[o]);return i.prototype=t.prototype,t.__raven_wrapper__=i,i.__raven__=!0,i.__orig__=t,i},uninstall:function(){return ou.report.uninstall(),this._detachPromiseRejectionHandler(),this._unpatchFunctionToString(),this._restoreBuiltIns(),this._restoreConsole(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},_promiseRejectionHandler:function(e){this._logDebug("debug","Raven caught unhandled promise rejection:",e),this.captureException(e.reason,{mechanism:{type:"onunhandledrejection",handled:!1}})},_attachPromiseRejectionHandler:function(){return this._promiseRejectionHandler=this._promiseRejectionHandler.bind(this),nf.addEventListener&&nf.addEventListener("unhandledrejection",this._promiseRejectionHandler),this},_detachPromiseRejectionHandler:function(){return nf.removeEventListener&&nf.removeEventListener("unhandledrejection",this._promiseRejectionHandler),this},captureException:function(e,t){if(t=Nu({trimHeadFrames:0},t||{}),Eu(e)&&e.error)e=e.error;else{if(_u(e)||Tu(e)){var n=e.name||(_u(e)?"DOMError":"DOMException"),r=e.message?n+": "+e.message:n;return this.captureMessage(r,Nu(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}))}if(xu(e))e=e;else{if(!Ou(e))return this.captureMessage(e,Nu(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}));t=this._getCaptureExceptionOptionsFromPlainObject(t,e),e=new Error(t.message)}}this._lastCapturedException=e;try{var i=ou.computeStackTrace(e);this._handleStackInfo(i,t)}catch(t){if(e!==t)throw t}return this},_getCaptureExceptionOptionsFromPlainObject:function(e,t){var n=Object.keys(t).sort(),r=Nu(e,{message:"Non-Error exception captured with keys: "+Gu(n),fingerprint:[bu(n)],extra:e.extra||{}});return r.extra.__serialized__=Xu(t),r},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var n,r=Nu({message:e+=""},t=t||{});try{throw new Error(e)}catch(e){n=e}n.name=null;var i=ou.computeStackTrace(n),o=ju(i.stack)&&i.stack[1];o&&"Raven.captureException"===o.func&&(o=i.stack[2]);var a=o&&o.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(a))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(a))){if(this._globalOptions.stacktrace||t.stacktrace||""===r.message){r.fingerprint=null==r.fingerprint?e:r.fingerprint,(t=Nu({trimHeadFrames:0},t)).trimHeadFrames+=1;var s=this._prepareFrames(i,t);r.stacktrace={frames:s.reverse()}}return r.fingerprint&&(r.fingerprint=ju(r.fingerprint)?r.fingerprint:[r.fingerprint]),this._send(r),this}}},captureBreadcrumb:function(e){var t=Nu({timestamp:tf()/1e3},e);if(Cu(this._globalOptions.breadcrumbCallback)){var n=this._globalOptions.breadcrumbCallback(t);if(Au(n)&&!Ru(n))t=n;else if(!1===n)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(Ul(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=af(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=af(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=af(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=nf.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(rf){if(!(e=Nu({eventId:this.lastEventId(),dsn:this._dsn,user:this._globalContext.user||{}},e)).eventId)throw new ku("Missing eventId");if(!e.dsn)throw new ku("Missing DSN");var t=encodeURIComponent,n=[];for(var r in e)if("user"===r){var i=e.user;i.name&&n.push("name="+t(i.name)),i.email&&n.push("email="+t(i.email))}else n.push(t(r)+"="+t(e[r]));var o=this._getGlobalServer(this._parseDSN(e.dsn)),a=rf.createElement("script");a.async=!0,a.src=o+"/api/embed/error-page/?"+n.join("&"),(rf.head||rf.body).appendChild(a)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout((function(){e._ignoreOnError-=1}))},_triggerEvent:function(e,t){var n,r;if(this._hasDocument){for(r in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),rf.createEvent?(n=rf.createEvent("HTMLEvents")).initEvent(e,!0,!0):(n=rf.createEventObject()).eventType=e,t)Fu(t,r)&&(n[r]=t[r]);if(rf.createEvent)rf.dispatchEvent(n);else try{rf.fireEvent("on"+n.eventType.toLowerCase(),n)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(n){if(t._keypressTimeout=null,t._lastCapturedEvent!==n){var r;t._lastCapturedEvent=n;try{r=Hu(n.target)}catch(e){r="<unknown>"}t.captureBreadcrumb({category:"ui."+e,message:r})}}},_keypressEventHandler:function(){var e=this;return function(t){var n;try{n=t.target}catch(e){return}var r=n&&n.tagName;if(r&&("INPUT"===r||"TEXTAREA"===r||n.isContentEditable)){var i=e._keypressTimeout;i||e._breadcrumbEventHandler("input")(t),clearTimeout(i),e._keypressTimeout=setTimeout((function(){e._keypressTimeout=null}),1e3)}}},_captureUrlChange:function(e,t){var n=Wu(this._location.href),r=Wu(t),i=Wu(e);this._lastHref=t,n.protocol===r.protocol&&n.host===r.host&&(t=r.relative),n.protocol===i.protocol&&n.host===i.host&&(e=i.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_patchFunctionToString:function(){var e=this;e._originalFunctionToString=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.__raven__?e._originalFunctionToString.apply(this.__orig__,arguments):e._originalFunctionToString.apply(this,arguments)}},_unpatchFunctionToString:function(){this._originalFunctionToString&&(Function.prototype.toString=this._originalFunctionToString)},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function n(t){return function(n,r){for(var i=new Array(arguments.length),o=0;o<i.length;++o)i[o]=arguments[o];var a=i[0];return Cu(a)&&(i[0]=e.wrap({mechanism:{type:"instrument",data:{function:t.name||"<anonymous>"}}},a)),t.apply?t.apply(this,i):t(i[0],i[1])}}var r=this._globalOptions.autoBreadcrumbs;function i(n){var i=nf[n]&&nf[n].prototype;i&&i.hasOwnProperty&&i.hasOwnProperty("addEventListener")&&($u(i,"addEventListener",(function(t){return function(i,o,a,s){try{o&&o.handleEvent&&(o.handleEvent=e.wrap({mechanism:{type:"instrument",data:{target:n,function:"handleEvent",handler:o&&o.name||"<anonymous>"}}},o.handleEvent))}catch(e){}var c,l,u;return r&&r.dom&&("EventTarget"===n||"Node"===n)&&(l=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),c=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?l(e):"keypress"===t?u(e):void 0}}),t.call(this,i,e.wrap({mechanism:{type:"instrument",data:{target:n,function:"addEventListener",handler:o&&o.name||"<anonymous>"}}},o,c),a,s)}}),t),$u(i,"removeEventListener",(function(e){return function(t,n,r,i){try{n=n&&(n.__raven_wrapper__?n.__raven_wrapper__:n)}catch(e){}return e.call(this,t,n,r,i)}}),t))}$u(nf,"setTimeout",n,t),$u(nf,"setInterval",n,t),nf.requestAnimationFrame&&$u(nf,"requestAnimationFrame",(function(t){return function(n){return t(e.wrap({mechanism:{type:"instrument",data:{function:"requestAnimationFrame",handler:t&&t.name||"<anonymous>"}}},n))}}),t);for(var o=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],a=0;a<o.length;a++)i(o[a])},_instrumentBreadcrumbs:function(){var e=this,t=this._globalOptions.autoBreadcrumbs,n=e._wrappedBuiltIns;function r(t,n){t in n&&Cu(n[t])&&$u(n,t,(function(n){return e.wrap({mechanism:{type:"instrument",data:{function:t,handler:n&&n.name||"<anonymous>"}}},n)}))}if(t.xhr&&"XMLHttpRequest"in nf){var i=nf.XMLHttpRequest&&nf.XMLHttpRequest.prototype;$u(i,"open",(function(t){return function(n,r){return Iu(r)&&-1===r.indexOf(e._globalKey)&&(this.__raven_xhr={method:n,url:r,status_code:null}),t.apply(this,arguments)}}),n),$u(i,"send",(function(t){return function(){var n=this;function i(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var o=["onload","onerror","onprogress"],a=0;a<o.length;a++)r(o[a],n);return"onreadystatechange"in n&&Cu(n.onreadystatechange)?$u(n,"onreadystatechange",(function(t){return e.wrap({mechanism:{type:"instrument",data:{function:"onreadystatechange",handler:t&&t.name||"<anonymous>"}}},t,i)})):n.onreadystatechange=i,t.apply(this,arguments)}}),n)}t.xhr&&Ku()&&$u(nf,"fetch",(function(t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;++r)n[r]=arguments[r];var i,o=n[0],a="GET";if("string"==typeof o?i=o:"Request"in nf&&o instanceof nf.Request?(i=o.url,o.method&&(a=o.method)):i=""+o,-1!==i.indexOf(e._globalKey))return t.apply(this,n);n[1]&&n[1].method&&(a=n[1].method);var s={method:a,url:i,status_code:null};return t.apply(this,n).then((function(t){return s.status_code=t.status,e.captureBreadcrumb({type:"http",category:"fetch",data:s}),t})).catch((function(t){throw e.captureBreadcrumb({type:"http",category:"fetch",data:s,level:"error"}),t}))}}),n),t.dom&&this._hasDocument&&(rf.addEventListener?(rf.addEventListener("click",e._breadcrumbEventHandler("click"),!1),rf.addEventListener("keypress",e._keypressEventHandler(),!1)):rf.attachEvent&&(rf.attachEvent("onclick",e._breadcrumbEventHandler("click")),rf.attachEvent("onkeypress",e._keypressEventHandler())));var o=nf.chrome,a=!(o&&o.app&&o.app.runtime)&&nf.history&&nf.history.pushState&&nf.history.replaceState;if(t.location&&a){var s=nf.onpopstate;nf.onpopstate=function(){var t=e._location.href;if(e._captureUrlChange(e._lastHref,t),s)return s.apply(this,arguments)};var c=function(t){return function(){var n=arguments.length>2?arguments[2]:void 0;return n&&e._captureUrlChange(e._lastHref,n+""),t.apply(this,arguments)}};$u(nf.history,"pushState",c,n),$u(nf.history,"replaceState",c,n)}if(t.console&&"console"in nf&&console.log){var l=function(t,n){e.captureBreadcrumb({message:t,level:n.level,category:"console"})};Lu(["debug","info","warn","error","log"],(function(e,t){Qu(console,t,l)}))}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],n=e[1],r=e[2];t[n]=r}},_restoreConsole:function(){for(var e in this._originalConsoleMethods)this._originalConsole[e]=this._originalConsoleMethods[e]},_drainPlugins:function(){var e=this;Lu(this._plugins,(function(t,n){var r=n[0],i=n[1];r.apply(e,[e].concat(i))}))},_parseDSN:function(e){var t=ef.exec(e),n={},r=7;try{for(;r--;)n[Zu[r]]=t[r]||""}catch(t){throw new ku("Invalid DSN: "+e)}if(n.pass&&!this._globalOptions.allowSecretKey)throw new ku("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return n},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(e,t){(t=t||{}).mechanism=t.mechanism||{type:"onerror",handled:!1},this._ignoreOnError||this._handleStackInfo(e,t)},_handleStackInfo:function(e,t){var n=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,n,t)},_prepareFrames:function(e,t){var n=this,r=[];if(e.stack&&e.stack.length&&(Lu(e.stack,(function(t,i){var o=n._normalizeFrame(i,e.url);o&&r.push(o)})),t&&t.trimHeadFrames))for(var i=0;i<t.trimHeadFrames&&i<r.length;i++)r[i].in_app=!1;return r=r.slice(0,this._globalOptions.stackTraceLimit)},_normalizeFrame:function(e,t){var n={filename:e.url,lineno:e.line,colno:e.column,function:e.func||"?"};return e.url||(n.filename=t),n.in_app=!(this._globalOptions.includePaths.test&&!this._globalOptions.includePaths.test(n.filename)||/(Raven|TraceKit)\./.test(n.function)||/raven\.(min\.)?js$/.test(n.filename)),n},_processException:function(e,t,n,r,i,o){var a,s=(e?e+": ":"")+(t||"");if((!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(t)&&!this._globalOptions.ignoreErrors.test(s))&&(i&&i.length?(n=i[0].filename||n,i.reverse(),a={frames:i}):n&&(a={frames:[{filename:n,lineno:r,in_app:!0}]}),(!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(n))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(n)))){var c=Nu({exception:{values:[{type:e,value:t,stacktrace:a}]},transaction:n},o),l=c.exception.values[0];null==l.type&&""===l.value&&(l.value="Unrecoverable error caught"),!c.exception.mechanism&&c.mechanism&&(c.exception.mechanism=c.mechanism,delete c.mechanism),c.exception.mechanism=Nu({type:"generic",handled:!0},c.exception.mechanism||{}),this._send(c)}},_trimPacket:function(e){var t=this._globalOptions.maxMessageLength;if(e.message&&(e.message=Mu(e.message,t)),e.exception){var n=e.exception.values[0];n.value=Mu(n.value,t)}var r=e.request;return r&&(r.url&&(r.url=Mu(r.url,this._globalOptions.maxUrlLength)),r.Referer&&(r.Referer=Mu(r.Referer,this._globalOptions.maxUrlLength))),e.breadcrumbs&&e.breadcrumbs.values&&this._trimBreadcrumbs(e.breadcrumbs),e},_trimBreadcrumbs:function(e){for(var t,n,r,i=["to","from","url"],o=0;o<e.values.length;++o)if((n=e.values[o]).hasOwnProperty("data")&&Au(n.data)&&!Uu(n.data)){r=Nu({},n.data);for(var a=0;a<i.length;++a)t=i[a],r.hasOwnProperty(t)&&r[t]&&(r[t]=Mu(r[t],this._globalOptions.maxUrlLength));e.values[o].data=r}},_getHttpData:function(){if(this._hasNavigator||this._hasDocument){var e={};return this._hasNavigator&&of.userAgent&&(e.headers={"User-Agent":of.userAgent}),nf.location&&nf.location.href&&(e.url=nf.location.href),this._hasDocument&&rf.referrer&&(e.headers||(e.headers={}),e.headers.Referer=rf.referrer),e}},_resetBackoff:function(){this._backoffDuration=0,this._backoffStart=null},_shouldBackoff:function(){return this._backoffDuration&&tf()-this._backoffStart<this._backoffDuration},_isRepeatData:function(e){var t=this._lastData;return!(!t||e.message!==t.message||e.transaction!==t.transaction)&&(e.stacktrace||t.stacktrace?zu(e.stacktrace,t.stacktrace):e.exception||t.exception?Vu(e.exception,t.exception):!e.fingerprint&&!t.fingerprint||Boolean(e.fingerprint&&t.fingerprint)&&JSON.stringify(e.fingerprint)===JSON.stringify(t.fingerprint))},_setBackoffState:function(e){if(!this._shouldBackoff()){var t=e.status;if(400===t||401===t||429===t){var n;try{n=Ku()?e.headers.get("Retry-After"):e.getResponseHeader("Retry-After"),n=1e3*parseInt(n,10)}catch(e){}this._backoffDuration=n||(2*this._backoffDuration||1e3),this._backoffStart=tf()}}},_send:function(e){var t=this._globalOptions,n={project:this._globalProject,logger:t.logger,platform:"javascript"},r=this._getHttpData();r&&(n.request=r),e.trimHeadFrames&&delete e.trimHeadFrames,(e=Nu(n,e)).tags=Nu(Nu({},this._globalContext.tags),e.tags),e.extra=Nu(Nu({},this._globalContext.extra),e.extra),e.extra["session:duration"]=tf()-this._startTime,this._breadcrumbs&&this._breadcrumbs.length>0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),e=this._sanitizeData(e),Object.keys(e).forEach((function(t){(null==e[t]||""===e[t]||Ru(e[t]))&&delete e[t]})),Cu(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!Ru(e)&&(Cu(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()<t.sampleRate&&this._sendProcessedPayload(e):this._sendProcessedPayload(e)))},_sanitizeData:function(e){return Ju(e,this._globalOptions.sanitizeKeys)},_getUuid:function(){return qu()},_sendProcessedPayload:function(e,t){var n=this,r=this._globalOptions;if(this.isSetup())if(e=this._trimPacket(e),this._globalOptions.allowDuplicates||!this._isRepeatData(e)){this._lastEventId=e.event_id||(e.event_id=this._getUuid()),this._lastData=e,this._logDebug("debug","Raven about to send:",e);var i={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this._globalKey};this._globalSecret&&(i.sentry_secret=this._globalSecret);var o=e.exception&&e.exception.values[0];this._globalOptions.autoBreadcrumbs&&this._globalOptions.autoBreadcrumbs.sentry&&this.captureBreadcrumb({category:"sentry",message:o?(o.type?o.type+": ":"")+o.value:e.message,event_id:e.event_id,level:e.level||"error"});var a=this._globalEndpoint;(r.transport||this._makeRequest).call(this,{url:a,auth:i,data:e,options:r,onSuccess:function(){n._resetBackoff(),n._triggerEvent("success",{data:e,src:a}),t&&t()},onError:function(r){n._logDebug("error","Raven transport failed to send: ",r),r.request&&n._setBackoffState(r.request),n._triggerEvent("failure",{data:e,src:a}),r=r||new Error("Raven send failed (no additional details provided)"),t&&t(r)}})}else this._logDebug("warn","Raven dropped repeat event: ",e)},_makeRequest:function(e){var t=e.url+"?"+Bu(e.auth),n=null,r={};if(e.options.headers&&(n=this._evaluateHash(e.options.headers)),e.options.fetchParameters&&(r=this._evaluateHash(e.options.fetchParameters)),Ku()){r.body=Ul(e.data);var i=Nu({},this._fetchDefaults),o=Nu(i,r);return n&&(o.headers=n),nf.fetch(t,o).then((function(t){if(t.ok)e.onSuccess&&e.onSuccess();else{var n=new Error("Sentry error code: "+t.status);n.request=t,e.onError&&e.onError(n)}})).catch((function(){e.onError&&e.onError(new Error("Sentry error code: network unavailable"))}))}var a=nf.XMLHttpRequest&&new nf.XMLHttpRequest;a&&(("withCredentials"in a||"undefined"!=typeof XDomainRequest)&&("withCredentials"in a?a.onreadystatechange=function(){if(4===a.readyState)if(200===a.status)e.onSuccess&&e.onSuccess();else if(e.onError){var t=new Error("Sentry error code: "+a.status);t.request=a,e.onError(t)}}:(a=new XDomainRequest,t=t.replace(/^https?:/,""),e.onSuccess&&(a.onload=e.onSuccess),e.onError&&(a.onerror=function(){var t=new Error("Sentry error code: XDomainRequest");t.request=a,e.onError(t)})),a.open("POST",t),n&&Lu(n,(function(e,t){a.setRequestHeader(e,t)})),a.send(Ul(e.data))))},_evaluateHash:function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];t[n]="function"==typeof r?r():r}return t},_logDebug:function(e){this._originalConsoleMethods[e]&&(this.debug||this._globalOptions.debug)&&Function.prototype.apply.call(this._originalConsoleMethods[e],this._originalConsole,[].slice.call(arguments,1))},_mergeContext:function(e,t){Pu(t)?delete this._globalContext[e]:this._globalContext[e]=Nu(this._globalContext[e]||{},t)}},sf.prototype.setUser=sf.prototype.setUserContext,sf.prototype.setReleaseContext=sf.prototype.setRelease;var cf=sf,lf="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},uf=lf.Raven,ff=new cf;ff.noConflict=function(){return lf.Raven=uf,ff},ff.afterLoad();var hf=ff,df=cf;hf.Client=df;var pf=Me(5),gf=!0;"find"in[]&&Array(1).find((function(){gf=!1})),Te({target:"Array",proto:!0,forced:gf},{find:function(e){return pf(this,e,arguments.length>1?arguments[1]:void 0)}}),pt("find");var mf="[\t\n\v\f\r \u2028\u2029\ufeff]",vf=RegExp("^"+mf+mf+"*"),yf=RegExp(mf+mf+"*$"),bf=he.f,wf=P.f,kf=j.f,Sf=s.Number,Ef=Sf.prototype,_f="Number"==g(ft(Ef)),Tf="trim"in String.prototype,xf=function(e){var t,n,r,i,o,a,s,c,l,u,f=k(e,!1);if("string"==typeof f&&f.length>2)if(43===(t=(f=Tf?f.trim():(l=f,u=3,l=String(y(l)),1&u&&(l=l.replace(vf,"")),2&u&&(l=l.replace(yf,"")),l)).charCodeAt(0))||45===t){if(88===(n=f.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(f.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+f}for(a=(o=f.slice(2)).length,s=0;s<a;s++)if((c=o.charCodeAt(s))<48||c>i)return NaN;return parseInt(o,r)}return+f};if(Ee("Number",!Sf(" 0o1")||!Sf("0b1")||Sf("+0x1"))){for(var Af,Of=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof Of&&(_f?c((function(){Ef.valueOf.call(n)})):"Number"!=g(n))?Ws(new Sf(xf(t)),n,Of):xf(t)},Pf=l?bf(Sf):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),Cf=0;Pf.length>Cf;Cf++)E(Sf,Af=Pf[Cf])&&!E(Of,Af)&&kf(Of,Af,wf(Sf,Af));Of.prototype=Ef,Ef.constructor=Of,Q(s,"Number",Of)}Te({target:"Number",stat:!0},{isNaN:function(e){return e!=e}}),Te({target:"Object",stat:!0,forced:Object.assign!==Kr},{assign:Kr});var If=h.f;function jf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Rf(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Lf(e,t,n){return t&&Rf(e.prototype,t),n&&Rf(e,n),e}function Nf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Mf(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}Te({target:"Object",stat:!0},{entries:function(e){return function(e,t){for(var n,r=b(e),i=it(r),o=i.length,a=0,s=[];o>a;)n=i[a++],l&&!If.call(r,n)||s.push(t?[n,r[n]]:r[n]);return s}(e,!0)}});var Uf=function(e){return null!=e?e.constructor:null},Ff=function(e,t){return!!(e&&t&&e instanceof t)},Df=function(e){return null==e},Bf=function(e){return Uf(e)===Object},qf=function(e){return Uf(e)===String},Hf=function(e){return Array.isArray(e)},Vf=function(e){return Ff(e,NodeList)},zf=Df,Wf=Bf,$f=function(e){return Uf(e)===Number&&!Number.isNaN(e)},Kf=qf,Yf=function(e){return Uf(e)===Boolean},Gf=Hf,Xf=Vf,Jf=function(e){return Ff(e,Element)},Qf=function(e){return Ff(e,Event)},Zf=function(e){return Df(e)||(qf(e)||Hf(e)||Vf(e))&&!e.length||Bf(e)&&!Object.keys(e).length},eh={facebook:{domain:"facebook.com",url:function(e){return"https://graph.facebook.com/?id=".concat(e,"&fields=og_object{engagement}")},shareCount:function(e){return e.og_object.engagement.count},popup:{width:640,height:360}},twitter:{domain:"twitter.com",url:function(){return null},shareCount:function(){return null},popup:{width:640,height:240}},pinterest:{domain:"pinterest.com",url:function(e){return"https://widgets.pinterest.com/v1/urls/count.json?url=".concat(e)},shareCount:function(e){return e.count},popup:{width:830,height:700}},github:{domain:"github.com",url:function(e,t){return"https://api.github.com/repos/".concat(e).concat(Kf(t)?"?access_token=".concat(t):"")},shareCount:function(e){return e.data.stargazers_count}},youtube:{domain:"youtube.com",url:function(e,t){return"https://www.googleapis.com/youtube/v3/channels?part=statistics&id=".concat(e,"&key=").concat(t)},shareCount:function(e){if(!Zf(e.error))return null;var t=Mf(e.items,1)[0];return Zf(t)?null:t.statistics.subscriberCount}}},th={debug:!1,wrapper:{className:"shr"},count:{className:"shr__count",displayZero:!1,format:!0,position:"after",increment:!0},tokens:{github:"",youtube:""},storage:{enabled:!0,key:"shr",ttl:3e5}};function nh(e){return new Promise((function(t,n){var r="jsonp_callback_".concat(Math.round(1e5*Math.random())),i=document.createElement("script");i.addEventListener("error",(function(e){return n(e)})),window[r]=function(e){delete window[r],document.body.removeChild(i),t(e)};var o=new URL(e);o.searchParams.set("callback",r),i.setAttribute("src",o.toString()),document.body.appendChild(i)}))}var rh=function(){},ih=function(){function e(){var t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];jf(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return Lf(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):rh}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):rh}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):rh}}]),e}();function oh(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function ah(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var r=0<n?t.cloneNode(!0):t,i=e.parentNode,o=e.nextSibling;r.appendChild(e),o?i.insertBefore(r,o):i.appendChild(r)}))}function sh(e,t,n){var r=document.createElement(e);return Wf(t)&&function(e,t){!Jf(e)||Zf(t)||Object.entries(t).filter((function(e){var t=Mf(e,2)[1];return!zf(t)})).forEach((function(t){var n=Mf(t,2),r=n[0],i=n[1];return e.setAttribute(r,i)}))}(r,t),Kf(n)&&(r.innerText=n),r}function ch(e){var t=/\./.test(1.1.toLocaleString())?".":",",n=new RegExp("\\".concat(t,"\\d+$"));return Math.round(e).toLocaleString().replace(n,"")}function lh(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;var i=n.shift();return Wf(i)?(Object.keys(i).forEach((function(t){Wf(i[t])?(!Object.keys(e).includes(t)&&Object.assign(e,Nf({},t,{})),lh(e[t],i[t])):Object.assign(e,Nf({},t,i[t]))})),lh.apply(void 0,[e].concat(n))):e}var uh=function(){function e(t,n){var r=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];jf(this,e),this.enabled=r&&e.supported,this.key=t,this.ttl=n}return Lf(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(Zf(n))return null;var r=window.localStorage.getItem("".concat(this.key,"_ttl"));if(Zf(r)||r<Date.now())return null;var i=JSON.parse(n);return Kf(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&Wf(t)){var n=this.get();Zf(n)&&(n={}),lh(n,t),window.localStorage.setItem(this.key,JSON.stringify(n)),window.localStorage.setItem("".concat(this.key,"_ttl"),Date.now()+this.ttl)}}}],[{key:"supported",get:function(){try{return"localStorage"in window&&(window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0)}catch(e){return!1}}}]),e}();var fh=function(){function e(t,n){var r=this;jf(this,e),this.elements={count:null,trigger:null,popup:null},Jf(t)?this.elements.trigger=t:Kf(t)&&(this.elements.trigger=document.querySelector(t)),Jf(this.elements.trigger)&&Zf(this.elements.trigger.shr)&&(this.config=lh({},th,n,{networks:eh}),this.console=new ih(this.config.debug),this.storage=new uh(this.config.storage.key,this.config.storage.ttl,this.config.storage.enabled),this.getCount().then((function(e){return r.updateDisplay(e)})).catch((function(){})),this.listeners(!0),this.elements.trigger.shr=this)}return Lf(e,[{key:"destroy",value:function(){this.listeners(!1)}},{key:"listeners",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]&&arguments[0]?"addEventListener":"removeEventListener";this.elements.trigger[t]("click",(function(t){return e.share(t)}),!1)}},{key:"share",value:function(e){var t=this;this.openPopup(e);var n=this.config.count.increment;this.getCount().then((function(e){return t.updateDisplay(e,n)})).catch((function(){}))}},{key:"openPopup",value:function(e){if(!Zf(this.network)&&this.networkConfig.popup){Qf(e)&&e.preventDefault();var t=this.networkConfig.popup,n=t.width,r=t.height,i="shr-popup--".concat(this.network);if(this.popup&&!this.popup.closed)this.popup.focus(),this.console.log("Popup re-focused.");else{var o=void 0===window.screenLeft?window.screen.left:window.screenLeft,a=void 0===window.screenTop?window.screen.top:window.screenTop,s=window.screen.width/2-n/2+o,c=window.screen.height/2-r/2+a;this.popup=window.open(this.href,i,"top=".concat(c,",left=").concat(s,",width=").concat(n,",height=").concat(r)),this.popup&&!this.popup.closed&&Yf(this.popup.closed)?(this.popup.focus(),this.console.log("Popup opened.")):this.console.error("Popup blocked.")}}}},{key:"getCount",value:function(){var e=this,t=!(0<arguments.length&&void 0!==arguments[0])||arguments[0];return new Promise((function(n,r){var i=e.apiUrl;if(Zf(i))r(new Error("No URL available for ".concat(e.network,".")));else{if(t){var o=e.storage.get(e.target);if(!Zf(o)&&Object.keys(o).includes(e.network)){var a=o[e.network];return n($f(a)?a:0),void e.console.log("getCount for '".concat(e.target,"' for '").concat(e.network,"' resolved from cache."))}}nh(i).then((function(t){var r=0,i=e.elements.trigger.getAttribute("data-shr-display");r=Zf(i)?e.networkConfig.shareCount(t):t[i],Zf(r)?r=0:(r=parseInt(r,10),!$f(r)&&(r=0)),e.storage.set(Nf({},e.target,Nf({},e.network,r))),n(r)})).catch(r)}}))}},{key:"updateDisplay",value:function(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],n=this.config,r=n.count,i=n.wrapper,o=t?e+1:e,a=r.position.toLowerCase();if(0<o||r.displayZero){var s=function(e){return Math.round(o/e*10)/10},c=ch(o);r.format&&(1e6<o?c="".concat(s(1e6),"M"):1e3<o&&(c="".concat(s(1e3),"K"))),Jf(this.elements.count)?this.elements.count.textContent=c:(ah(this.elements.trigger,sh("span",{class:i.className})),this.elements.count=sh("span",{class:"".concat(r.className," ").concat(r.className,"--").concat(a)},c),this.elements.trigger.insertAdjacentElement("after"===a?"afterend":"beforebegin",this.elements.count))}}},{key:"href",get:function(){return Jf(this.elements.trigger)?this.elements.trigger.href:null}},{key:"network",get:function(){var e=this;if(!Jf(this.elements.trigger))return null;var t=this.config.networks;return Object.keys(t).find((function(n){return function(e){var t=new URL(e).hostname,n=t.split("."),r=n.length;return 2<r&&(t="".concat(n[r-2],".").concat(n[r-1]),2===n[r-2].length&&2===n[r-1].length&&(t="".concat(n[r-3],".").concat(t))),t}(e.href)===t[n].domain}))}},{key:"networkConfig",get:function(){return Zf(this.network)?null:this.config.networks[this.network]}},{key:"target",get:function(){if(Zf(this.network))return null;var e=new URL(this.href);switch(this.network){case"facebook":return e.searchParams.get("u");case"github":return e.pathname.substring(1);case"youtube":return e.pathname.split("/").pop();default:return e.searchParams.get("url")}}},{key:"apiUrl",get:function(){if(Zf(this.network))return null;var e=this.config.tokens;switch(this.network){case"github":return this.networkConfig.url(this.target,e.github);case"youtube":return this.networkConfig.url(this.target,e.youtube);default:return this.networkConfig.url(encodeURIComponent(this.target))}}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(Kf(t)?r=Array.from(document.querySelectorAll(t)):Jf(t)?r=[t]:Xf(t)?r=Array.from(t):Gf(t)&&(r=t.filter(Jf)),Zf(r))return null;var i=Object.assign({},th,n);return Kf(t)&&i.watch&&new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){Jf(n)&&oh(n,t)&&new e(n,i)}))}))})).observe(document.body,{childList:!0,subtree:!0}),r.map((function(t){return new e(t,n)}))}}]),e}(),hh=function(e){return e&&e.Math==Math&&e},dh=hh("object"==typeof globalThis&&globalThis)||hh("object"==typeof window&&window)||hh("object"==typeof self&&self)||hh("object"==typeof e&&e)||Function("return this")(),ph=function(e){try{return!!e()}catch(e){return!0}},gh=!ph((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),mh={}.propertyIsEnumerable,vh=Object.getOwnPropertyDescriptor,yh={f:vh&&!mh.call({1:2},1)?function(e){var t=vh(this,e);return!!t&&t.enumerable}:mh},bh=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},wh={}.toString,kh=function(e){return wh.call(e).slice(8,-1)},Sh="".split,Eh=ph((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==kh(e)?Sh.call(e,""):Object(e)}:Object,_h=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Th=function(e){return Eh(_h(e))},xh=function(e){return"object"==typeof e?null!==e:"function"==typeof e},Ah=function(e,t){if(!xh(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!xh(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!xh(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!xh(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},Oh={}.hasOwnProperty,Ph=function(e,t){return Oh.call(e,t)},Ch=dh.document,Ih=xh(Ch)&&xh(Ch.createElement),jh=function(e){return Ih?Ch.createElement(e):{}},Rh=!gh&&!ph((function(){return 7!=Object.defineProperty(jh("div"),"a",{get:function(){return 7}}).a})),Lh=Object.getOwnPropertyDescriptor,Nh={f:gh?Lh:function(e,t){if(e=Th(e),t=Ah(t,!0),Rh)try{return Lh(e,t)}catch(e){}if(Ph(e,t))return bh(!yh.f.call(e,t),e[t])}},Mh=function(e){if(!xh(e))throw TypeError(String(e)+" is not an object");return e},Uh=Object.defineProperty,Fh={f:gh?Uh:function(e,t,n){if(Mh(e),t=Ah(t,!0),Mh(n),Rh)try{return Uh(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},Dh=gh?function(e,t,n){return Fh.f(e,t,bh(1,n))}:function(e,t,n){return e[t]=n,e},Bh=function(e,t){try{Dh(dh,e,t)}catch(n){dh[e]=t}return t},qh=dh["__core-js_shared__"]||Bh("__core-js_shared__",{}),Hh=Function.toString;"function"!=typeof qh.inspectSource&&(qh.inspectSource=function(e){return Hh.call(e)});var Vh,zh,Wh,$h=qh.inspectSource,Kh=dh.WeakMap,Yh="function"==typeof Kh&&/native code/.test($h(Kh)),Gh=t((function(e){(e.exports=function(e,t){return qh[e]||(qh[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.4",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),Xh=0,Jh=Math.random(),Qh=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Xh+Jh).toString(36)},Zh=Gh("keys"),ed=function(e){return Zh[e]||(Zh[e]=Qh(e))},td={},nd=dh.WeakMap;if(Yh){var rd=new nd,id=rd.get,od=rd.has,ad=rd.set;Vh=function(e,t){return ad.call(rd,e,t),t},zh=function(e){return id.call(rd,e)||{}},Wh=function(e){return od.call(rd,e)}}else{var sd=ed("state");td[sd]=!0,Vh=function(e,t){return Dh(e,sd,t),t},zh=function(e){return Ph(e,sd)?e[sd]:{}},Wh=function(e){return Ph(e,sd)}}var cd,ld,ud={set:Vh,get:zh,has:Wh,enforce:function(e){return Wh(e)?zh(e):Vh(e,{})},getterFor:function(e){return function(t){var n;if(!xh(t)||(n=zh(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},fd=t((function(e){var t=ud.get,n=ud.enforce,r=String(String).split("String");(e.exports=function(e,t,i,o){var a=!!o&&!!o.unsafe,s=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof i&&("string"!=typeof t||Ph(i,"name")||Dh(i,"name",t),n(i).source=r.join("string"==typeof t?t:"")),e!==dh?(a?!c&&e[t]&&(s=!0):delete e[t],s?e[t]=i:Dh(e,t,i)):s?e[t]=i:Bh(t,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||$h(this)}))})),hd=dh,dd=function(e){return"function"==typeof e?e:void 0},pd=function(e,t){return arguments.length<2?dd(hd[e])||dd(dh[e]):hd[e]&&hd[e][t]||dh[e]&&dh[e][t]},gd=Math.ceil,md=Math.floor,vd=function(e){return isNaN(e=+e)?0:(e>0?md:gd)(e)},yd=Math.min,bd=function(e){return e>0?yd(vd(e),9007199254740991):0},wd=Math.max,kd=Math.min,Sd=function(e,t){var n=vd(e);return n<0?wd(n+t,0):kd(n,t)},Ed=function(e){return function(t,n,r){var i,o=Th(t),a=bd(o.length),s=Sd(r,a);if(e&&n!=n){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===n)return e||s||0;return!e&&-1}},_d={includes:Ed(!0),indexOf:Ed(!1)},Td=_d.indexOf,xd=function(e,t){var n,r=Th(e),i=0,o=[];for(n in r)!Ph(td,n)&&Ph(r,n)&&o.push(n);for(;t.length>i;)Ph(r,n=t[i++])&&(~Td(o,n)||o.push(n));return o},Ad=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Od=Ad.concat("length","prototype"),Pd={f:Object.getOwnPropertyNames||function(e){return xd(e,Od)}},Cd={f:Object.getOwnPropertySymbols},Id=pd("Reflect","ownKeys")||function(e){var t=Pd.f(Mh(e)),n=Cd.f;return n?t.concat(n(e)):t},jd=function(e,t){for(var n=Id(t),r=Fh.f,i=Nh.f,o=0;o<n.length;o++){var a=n[o];Ph(e,a)||r(e,a,i(t,a))}},Rd=/#|\.prototype\./,Ld=function(e,t){var n=Md[Nd(e)];return n==Fd||n!=Ud&&("function"==typeof t?ph(t):!!t)},Nd=Ld.normalize=function(e){return String(e).replace(Rd,".").toLowerCase()},Md=Ld.data={},Ud=Ld.NATIVE="N",Fd=Ld.POLYFILL="P",Dd=Ld,Bd=Nh.f,qd=function(e,t){var n,r,i,o,a,s=e.target,c=e.global,l=e.stat;if(n=c?dh:l?dh[s]||Bh(s,{}):(dh[s]||{}).prototype)for(r in t){if(o=t[r],i=e.noTargetGet?(a=Bd(n,r))&&a.value:n[r],!Dd(c?r:s+(l?".":"#")+r,e.forced)&&void 0!==i){if(typeof o==typeof i)continue;jd(o,i)}(e.sham||i&&i.sham)&&Dh(o,"sham",!0),fd(n,r,o,e)}},Hd=Array.isArray||function(e){return"Array"==kh(e)},Vd=function(e){return Object(_h(e))},zd=function(e,t,n){var r=Ah(t);r in e?Fh.f(e,r,bh(0,n)):e[r]=n},Wd=!!Object.getOwnPropertySymbols&&!ph((function(){return!String(Symbol())})),$d=Wd&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Kd=Gh("wks"),Yd=dh.Symbol,Gd=$d?Yd:Yd&&Yd.withoutSetter||Qh,Xd=function(e){return Ph(Kd,e)||(Wd&&Ph(Yd,e)?Kd[e]=Yd[e]:Kd[e]=Gd("Symbol."+e)),Kd[e]},Jd=Xd("species"),Qd=function(e,t){var n;return Hd(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Hd(n.prototype)?xh(n)&&null===(n=n[Jd])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},Zd=pd("navigator","userAgent")||"",ep=dh.process,tp=ep&&ep.versions,np=tp&&tp.v8;np?ld=(cd=np.split("."))[0]+cd[1]:Zd&&(!(cd=Zd.match(/Edge\/(\d+)/))||cd[1]>=74)&&(cd=Zd.match(/Chrome\/(\d+)/))&&(ld=cd[1]);var rp=ld&&+ld,ip=Xd("species"),op=function(e){return rp>=51||!ph((function(){var t=[];return(t.constructor={})[ip]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},ap=Xd("isConcatSpreadable"),sp=rp>=51||!ph((function(){var e=[];return e[ap]=!1,e.concat()[0]!==e})),cp=op("concat"),lp=function(e){if(!xh(e))return!1;var t=e[ap];return void 0!==t?!!t:Hd(e)};qd({target:"Array",proto:!0,forced:!sp||!cp},{concat:function(e){var t,n,r,i,o,a=Vd(this),s=Qd(a,0),c=0;for(t=-1,r=arguments.length;t<r;t++)if(o=-1===t?a:arguments[t],lp(o)){if(c+(i=bd(o.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<i;n++,c++)n in o&&zd(s,c,o[n])}else{if(c>=9007199254740991)throw TypeError("Maximum allowed index exceeded");zd(s,c++,o)}return s.length=c,s}});var up=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},fp=function(e,t,n){if(up(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}},hp=[].push,dp=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,o=6==e,a=5==e||o;return function(s,c,l,u){for(var f,h,d=Vd(s),p=Eh(d),g=fp(c,l,3),m=bd(p.length),v=0,y=u||Qd,b=t?y(s,m):n?y(s,0):void 0;m>v;v++)if((a||v in p)&&(h=g(f=p[v],v,d),e))if(t)b[v]=h;else if(h)switch(e){case 3:return!0;case 5:return f;case 6:return v;case 2:hp.call(b,f)}else if(i)return!1;return o?-1:r||i?i:b}},pp={forEach:dp(0),map:dp(1),filter:dp(2),some:dp(3),every:dp(4),find:dp(5),findIndex:dp(6)},gp=Object.defineProperty,mp={},vp=function(e){throw e},yp=function(e,t){if(Ph(mp,e))return mp[e];t||(t={});var n=[][e],r=!!Ph(t,"ACCESSORS")&&t.ACCESSORS,i=Ph(t,0)?t[0]:vp,o=Ph(t,1)?t[1]:void 0;return mp[e]=!!n&&!ph((function(){if(r&&!gh)return!0;var e={length:-1};r?gp(e,1,{enumerable:!0,get:vp}):e[1]=1,n.call(e,i,o)}))},bp=pp.filter,wp=op("filter"),kp=yp("filter");qd({target:"Array",proto:!0,forced:!wp||!kp},{filter:function(e){return bp(this,e,arguments.length>1?arguments[1]:void 0)}});var Sp,Ep=Object.keys||function(e){return xd(e,Ad)},_p=gh?Object.defineProperties:function(e,t){Mh(e);for(var n,r=Ep(t),i=r.length,o=0;i>o;)Fh.f(e,n=r[o++],t[n]);return e},Tp=pd("document","documentElement"),xp=ed("IE_PROTO"),Ap=function(){},Op=function(e){return"<script>"+e+"<\/script>"},Pp=function(){try{Sp=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;Pp=Sp?function(e){e.write(Op("")),e.close();var t=e.parentWindow.Object;return e=null,t}(Sp):((t=jh("iframe")).style.display="none",Tp.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(Op("document.F=Object")),e.close(),e.F);for(var n=Ad.length;n--;)delete Pp.prototype[Ad[n]];return Pp()};td[xp]=!0;var Cp=Object.create||function(e,t){var n;return null!==e?(Ap.prototype=Mh(e),n=new Ap,Ap.prototype=null,n[xp]=e):n=Pp(),void 0===t?n:_p(n,t)},Ip=Xd("unscopables"),jp=Array.prototype;null==jp[Ip]&&Fh.f(jp,Ip,{configurable:!0,value:Cp(null)});var Rp=function(e){jp[Ip][e]=!0},Lp=pp.find,Np=!0,Mp=yp("find");"find"in[]&&Array(1).find((function(){Np=!1})),qd({target:"Array",proto:!0,forced:Np||!Mp},{find:function(e){return Lp(this,e,arguments.length>1?arguments[1]:void 0)}}),Rp("find");var Up=function(e,t,n,r){try{return r?t(Mh(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&Mh(i.call(e)),t}},Fp={},Dp=Xd("iterator"),Bp=Array.prototype,qp=function(e){return void 0!==e&&(Fp.Array===e||Bp[Dp]===e)},Hp={};Hp[Xd("toStringTag")]="z";var Vp="[object z]"===String(Hp),zp=Xd("toStringTag"),Wp="Arguments"==kh(function(){return arguments}()),$p=Vp?kh:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),zp))?n:Wp?kh(t):"Object"==(r=kh(t))&&"function"==typeof t.callee?"Arguments":r},Kp=Xd("iterator"),Yp=function(e){if(null!=e)return e[Kp]||e["@@iterator"]||Fp[$p(e)]},Gp=function(e){var t,n,r,i,o,a,s=Vd(e),c="function"==typeof this?this:Array,l=arguments.length,u=l>1?arguments[1]:void 0,f=void 0!==u,h=Yp(s),d=0;if(f&&(u=fp(u,l>2?arguments[2]:void 0,2)),null==h||c==Array&&qp(h))for(n=new c(t=bd(s.length));t>d;d++)a=f?u(s[d],d):s[d],zd(n,d,a);else for(o=(i=h.call(s)).next,n=new c;!(r=o.call(i)).done;d++)a=f?Up(i,u,[r.value,d],!0):r.value,zd(n,d,a);return n.length=d,n},Xp=Xd("iterator"),Jp=!1;try{var Qp=0,Zp={next:function(){return{done:!!Qp++}},return:function(){Jp=!0}};Zp[Xp]=function(){return this},Array.from(Zp,(function(){throw 2}))}catch(e){}var eg=function(e,t){if(!t&&!Jp)return!1;var n=!1;try{var r={};r[Xp]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},tg=!eg((function(e){Array.from(e)}));qd({target:"Array",stat:!0,forced:tg},{from:Gp});var ng=_d.includes,rg=yp("indexOf",{ACCESSORS:!0,1:0});qd({target:"Array",proto:!0,forced:!rg},{includes:function(e){return ng(this,e,arguments.length>1?arguments[1]:void 0)}}),Rp("includes");var ig,og,ag,sg=!ph((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),cg=ed("IE_PROTO"),lg=Object.prototype,ug=sg?Object.getPrototypeOf:function(e){return e=Vd(e),Ph(e,cg)?e[cg]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?lg:null},fg=Xd("iterator"),hg=!1;[].keys&&("next"in(ag=[].keys())?(og=ug(ug(ag)))!==Object.prototype&&(ig=og):hg=!0),null==ig&&(ig={}),Ph(ig,fg)||Dh(ig,fg,(function(){return this}));var dg={IteratorPrototype:ig,BUGGY_SAFARI_ITERATORS:hg},pg=Fh.f,gg=Xd("toStringTag"),mg=function(e,t,n){e&&!Ph(e=n?e:e.prototype,gg)&&pg(e,gg,{configurable:!0,value:t})},vg=dg.IteratorPrototype,yg=function(){return this},bg=function(e,t,n){var r=t+" Iterator";return e.prototype=Cp(vg,{next:bh(1,n)}),mg(e,r,!1),Fp[r]=yg,e},wg=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return Mh(n),function(e){if(!xh(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(r),t?e.call(n,r):n.__proto__=r,n}}():void 0),kg=dg.IteratorPrototype,Sg=dg.BUGGY_SAFARI_ITERATORS,Eg=Xd("iterator"),_g=function(){return this},Tg=function(e,t,n,r,i,o,a){bg(n,t,r);var s,c,l,u=function(e){if(e===i&&g)return g;if(!Sg&&e in d)return d[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},f=t+" Iterator",h=!1,d=e.prototype,p=d[Eg]||d["@@iterator"]||i&&d[i],g=!Sg&&p||u(i),m="Array"==t&&d.entries||p;if(m&&(s=ug(m.call(new e)),kg!==Object.prototype&&s.next&&(ug(s)!==kg&&(wg?wg(s,kg):"function"!=typeof s[Eg]&&Dh(s,Eg,_g)),mg(s,f,!0))),"values"==i&&p&&"values"!==p.name&&(h=!0,g=function(){return p.call(this)}),d[Eg]!==g&&Dh(d,Eg,g),Fp[t]=g,i)if(c={values:u("values"),keys:o?g:u("keys"),entries:u("entries")},a)for(l in c)(Sg||h||!(l in d))&&fd(d,l,c[l]);else qd({target:t,proto:!0,forced:Sg||h},c);return c},xg=ud.set,Ag=ud.getterFor("Array Iterator"),Og=Tg(Array,"Array",(function(e,t){xg(this,{type:"Array Iterator",target:Th(e),index:0,kind:t})}),(function(){var e=Ag(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values");Fp.Arguments=Fp.Array,Rp("keys"),Rp("values"),Rp("entries");var Pg=function(e,t){var n=[][e];return!!n&&ph((function(){n.call(null,t||function(){throw 1},1)}))},Cg=[].join,Ig=Eh!=Object,jg=Pg("join",",");qd({target:"Array",proto:!0,forced:Ig||!jg},{join:function(e){return Cg.call(Th(this),void 0===e?",":e)}});var Rg=pp.map,Lg=op("map"),Ng=yp("map");qd({target:"Array",proto:!0,forced:!Lg||!Ng},{map:function(e){return Rg(this,e,arguments.length>1?arguments[1]:void 0)}});var Mg=function(e,t,n){var r,i;return wg&&"function"==typeof(r=t.constructor)&&r!==n&&xh(i=r.prototype)&&i!==n.prototype&&wg(e,i),e},Ug="[\t\n\v\f\r \u2028\u2029\ufeff]",Fg=RegExp("^"+Ug+Ug+"*"),Dg=RegExp(Ug+Ug+"*$"),Bg=function(e){return function(t){var n=String(_h(t));return 1&e&&(n=n.replace(Fg,"")),2&e&&(n=n.replace(Dg,"")),n}},qg={start:Bg(1),end:Bg(2),trim:Bg(3)},Hg=Pd.f,Vg=Nh.f,zg=Fh.f,Wg=qg.trim,$g=dh.Number,Kg=$g.prototype,Yg="Number"==kh(Cp(Kg)),Gg=function(e){var t,n,r,i,o,a,s,c,l=Ah(e,!1);if("string"==typeof l&&l.length>2)if(43===(t=(l=Wg(l)).charCodeAt(0))||45===t){if(88===(n=l.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(l.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+l}for(a=(o=l.slice(2)).length,s=0;s<a;s++)if((c=o.charCodeAt(s))<48||c>i)return NaN;return parseInt(o,r)}return+l};if(Dd("Number",!$g(" 0o1")||!$g("0b1")||$g("+0x1"))){for(var Xg,Jg=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof Jg&&(Yg?ph((function(){Kg.valueOf.call(n)})):"Number"!=kh(n))?Mg(new $g(Gg(t)),n,Jg):Gg(t)},Qg=gh?Hg($g):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),Zg=0;Qg.length>Zg;Zg++)Ph($g,Xg=Qg[Zg])&&!Ph(Jg,Xg)&&zg(Jg,Xg,Vg($g,Xg));Jg.prototype=Kg,Kg.constructor=Jg,fd(dh,"Number",Jg)}var em=ph((function(){Ep(1)}));qd({target:"Object",stat:!0,forced:em},{keys:function(e){return Ep(Vd(e))}});var tm=Vp?{}.toString:function(){return"[object "+$p(this)+"]"};Vp||fd(Object.prototype,"toString",tm,{unsafe:!0});var nm=function(){var e=Mh(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function rm(e,t){return RegExp(e,t)}var im={UNSUPPORTED_Y:ph((function(){var e=rm("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:ph((function(){var e=rm("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},om=RegExp.prototype.exec,am=String.prototype.replace,sm=om,cm=function(){var e=/a/,t=/b*/g;return om.call(e,"a"),om.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),lm=im.UNSUPPORTED_Y||im.BROKEN_CARET,um=void 0!==/()??/.exec("")[1];(cm||um||lm)&&(sm=function(e){var t,n,r,i,o=this,a=lm&&o.sticky,s=nm.call(o),c=o.source,l=0,u=e;return a&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(o.lastIndex),o.lastIndex>0&&(!o.multiline||o.multiline&&"\n"!==e[o.lastIndex-1])&&(c="(?: "+c+")",u=" "+u,l++),n=new RegExp("^(?:"+c+")",s)),um&&(n=new RegExp("^"+c+"$(?!\\s)",s)),cm&&(t=o.lastIndex),r=om.call(a?n:o,u),a?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=o.lastIndex,o.lastIndex+=r[0].length):o.lastIndex=0:cm&&r&&(o.lastIndex=o.global?r.index+r[0].length:t),um&&r&&r.length>1&&am.call(r[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r});var fm=sm;qd({target:"RegExp",proto:!0,forced:/./.exec!==fm},{exec:fm});var hm=RegExp.prototype,dm=hm.toString,pm=ph((function(){return"/a/b"!=dm.call({source:"a",flags:"b"})})),gm="toString"!=dm.name;(pm||gm)&&fd(RegExp.prototype,"toString",(function(){var e=Mh(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in hm)?nm.call(e):n)}),{unsafe:!0});var mm=Xd("match"),vm=function(e){var t;return xh(e)&&(void 0!==(t=e[mm])?!!t:"RegExp"==kh(e))},ym=function(e){if(vm(e))throw TypeError("The method doesn't accept regular expressions");return e},bm=Xd("match"),wm=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[bm]=!1,"/./"[e](t)}catch(e){}}return!1};qd({target:"String",proto:!0,forced:!wm("includes")},{includes:function(e){return!!~String(_h(this)).indexOf(ym(e),arguments.length>1?arguments[1]:void 0)}});var km=function(e){return function(t,n){var r,i,o=String(_h(t)),a=vd(n),s=o.length;return a<0||a>=s?e?"":void 0:(r=o.charCodeAt(a))<55296||r>56319||a+1===s||(i=o.charCodeAt(a+1))<56320||i>57343?e?o.charAt(a):r:e?o.slice(a,a+2):i-56320+(r-55296<<10)+65536}},Sm={codeAt:km(!1),charAt:km(!0)},Em=Sm.charAt,_m=ud.set,Tm=ud.getterFor("String Iterator");Tg(String,"String",(function(e){_m(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=Tm(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=Em(n,r),t.index+=e.length,{value:e,done:!1})}));var xm=Xd("species"),Am=!ph((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),Om="$0"==="a".replace(/./,"$0"),Pm=Xd("replace"),Cm=!!/./[Pm]&&""===/./[Pm]("a","$0"),Im=!ph((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),jm=function(e,t,n,r){var i=Xd(e),o=!ph((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=o&&!ph((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[xm]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!o||!a||"replace"===e&&(!Am||!Om||Cm)||"split"===e&&!Im){var s=/./[i],c=n(i,""[e],(function(e,t,n,r,i){return t.exec===fm?o&&!i?{done:!0,value:s.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:Om,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Cm}),l=c[0],u=c[1];fd(String.prototype,e,l),fd(RegExp.prototype,i,2==t?function(e,t){return u.call(e,this,t)}:function(e){return u.call(e,this)})}r&&Dh(RegExp.prototype[i],"sham",!0)},Rm=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t},Lm=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==kh(e))throw TypeError("RegExp#exec called on incompatible receiver");return fm.call(e,t)};jm("search",1,(function(e,t,n){return[function(t){var n=_h(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=Mh(e),o=String(this),a=i.lastIndex;Rm(a,0)||(i.lastIndex=0);var s=Lm(i,o);return Rm(i.lastIndex,a)||(i.lastIndex=a),null===s?-1:s.index}]}));var Nm=function(e,t,n){for(var r in t)fd(e,r,t[r],n);return e},Mm=!ph((function(){return Object.isExtensible(Object.preventExtensions({}))})),Um=t((function(e){var t=Fh.f,n=Qh("meta"),r=0,i=Object.isExtensible||function(){return!0},o=function(e){t(e,n,{value:{objectID:"O"+ ++r,weakData:{}}})},a=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!xh(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!Ph(e,n)){if(!i(e))return"F";if(!t)return"E";o(e)}return e[n].objectID},getWeakData:function(e,t){if(!Ph(e,n)){if(!i(e))return!0;if(!t)return!1;o(e)}return e[n].weakData},onFreeze:function(e){return Mm&&a.REQUIRED&&i(e)&&!Ph(e,n)&&o(e),e}};td[n]=!0})),Fm=(Um.REQUIRED,Um.fastKey,Um.getWeakData,Um.onFreeze,t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,r,i,o){var a,s,c,l,u,f,h,d=fp(n,r,i?2:1);if(o)a=e;else{if("function"!=typeof(s=Yp(e)))throw TypeError("Target is not iterable");if(qp(s)){for(c=0,l=bd(e.length);l>c;c++)if((u=i?d(Mh(h=e[c])[0],h[1]):d(e[c]))&&u instanceof t)return u;return new t(!1)}a=s.call(e)}for(f=a.next;!(h=f.call(a)).done;)if("object"==typeof(u=Up(a,d,h.value,i))&&u&&u instanceof t)return u;return new t(!1)}).stop=function(e){return new t(!0,e)}}))),Dm=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},Bm=Um.getWeakData,qm=ud.set,Hm=ud.getterFor,Vm=pp.find,zm=pp.findIndex,Wm=0,$m=function(e){return e.frozen||(e.frozen=new Km)},Km=function(){this.entries=[]},Ym=function(e,t){return Vm(e.entries,(function(e){return e[0]===t}))};Km.prototype={get:function(e){var t=Ym(this,e);if(t)return t[1]},has:function(e){return!!Ym(this,e)},set:function(e,t){var n=Ym(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=zm(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}};var Gm={getConstructor:function(e,t,n,r){var i=e((function(e,o){Dm(e,i,t),qm(e,{type:t,id:Wm++,frozen:void 0}),null!=o&&Fm(o,e[r],e,n)})),o=Hm(t),a=function(e,t,n){var r=o(e),i=Bm(Mh(t),!0);return!0===i?$m(r).set(t,n):i[r.id]=n,e};return Nm(i.prototype,{delete:function(e){var t=o(this);if(!xh(e))return!1;var n=Bm(e);return!0===n?$m(t).delete(e):n&&Ph(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!xh(e))return!1;var n=Bm(e);return!0===n?$m(t).has(e):n&&Ph(n,t.id)}}),Nm(i.prototype,n?{get:function(e){var t=o(this);if(xh(e)){var n=Bm(e);return!0===n?$m(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return a(this,e,t)}}:{add:function(e){return a(this,e,!0)}}),i}},Xm=(t((function(e){var t,n=ud.enforce,r=!dh.ActiveXObject&&"ActiveXObject"in dh,i=Object.isExtensible,o=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},a=e.exports=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),o=r?"set":"add",a=dh[e],s=a&&a.prototype,c=a,l={},u=function(e){var t=s[e];fd(s,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!xh(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return i&&!xh(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!xh(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Dd(e,"function"!=typeof a||!(i||s.forEach&&!ph((function(){(new a).entries().next()})))))c=n.getConstructor(t,e,r,o),Um.REQUIRED=!0;else if(Dd(e,!0)){var f=new c,h=f[o](i?{}:-0,1)!=f,d=ph((function(){f.has(1)})),p=eg((function(e){new a(e)})),g=!i&&ph((function(){for(var e=new a,t=5;t--;)e[o](t,t);return!e.has(-0)}));p||((c=t((function(t,n){Dm(t,c,e);var i=Mg(new a,t,c);return null!=n&&Fm(n,i[o],i,r),i}))).prototype=s,s.constructor=c),(d||g)&&(u("delete"),u("has"),r&&u("get")),(g||h)&&u(o),i&&s.clear&&delete s.clear}return l[e]=c,qd({global:!0,forced:c!=a},l),mg(c,e),i||n.setStrong(c,e,r),c}("WeakMap",o,Gm);if(Yh&&r){t=Gm.getConstructor(o,"WeakMap",!0),Um.REQUIRED=!0;var s=a.prototype,c=s.delete,l=s.has,u=s.get,f=s.set;Nm(s,{delete:function(e){if(xh(e)&&!i(e)){var r=n(this);return r.frozen||(r.frozen=new t),c.call(this,e)||r.frozen.delete(e)}return c.call(this,e)},has:function(e){if(xh(e)&&!i(e)){var r=n(this);return r.frozen||(r.frozen=new t),l.call(this,e)||r.frozen.has(e)}return l.call(this,e)},get:function(e){if(xh(e)&&!i(e)){var r=n(this);return r.frozen||(r.frozen=new t),l.call(this,e)?u.call(this,e):r.frozen.get(e)}return u.call(this,e)},set:function(e,r){if(xh(e)&&!i(e)){var o=n(this);o.frozen||(o.frozen=new t),l.call(this,e)?f.call(this,e,r):o.frozen.set(e,r)}else f.call(this,e,r);return this}})}})),{CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}),Jm=Xd("iterator"),Qm=Xd("toStringTag"),Zm=Og.values;for(var ev in Xm){var tv=dh[ev],nv=tv&&tv.prototype;if(nv){if(nv[Jm]!==Zm)try{Dh(nv,Jm,Zm)}catch(e){nv[Jm]=Zm}if(nv[Qm]||Dh(nv,Qm,ev),Xm[ev])for(var rv in Og)if(nv[rv]!==Og[rv])try{Dh(nv,rv,Og[rv])}catch(e){nv[rv]=Og[rv]}}}var iv=pp.every,ov=Pg("every"),av=yp("every");qd({target:"Array",proto:!0,forced:!ov||!av},{every:function(e){return iv(this,e,arguments.length>1?arguments[1]:void 0)}});var sv=pp.forEach,cv=Pg("forEach"),lv=yp("forEach"),uv=cv&&lv?[].forEach:function(e){return sv(this,e,arguments.length>1?arguments[1]:void 0)};qd({target:"Array",proto:!0,forced:[].forEach!=uv},{forEach:uv});var fv=_d.indexOf,hv=[].indexOf,dv=!!hv&&1/[1].indexOf(1,-0)<0,pv=Pg("indexOf"),gv=yp("indexOf",{ACCESSORS:!0,1:0});qd({target:"Array",proto:!0,forced:dv||!pv||!gv},{indexOf:function(e){return dv?hv.apply(this,arguments)||0:fv(this,e,arguments.length>1?arguments[1]:void 0)}});var mv=Object.assign,vv=Object.defineProperty,yv=!mv||ph((function(){if(gh&&1!==mv({b:1},mv(vv({},"a",{enumerable:!0,get:function(){vv(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=mv({},e)[n]||"abcdefghijklmnopqrst"!=Ep(mv({},t)).join("")}))?function(e,t){for(var n=Vd(e),r=arguments.length,i=1,o=Cd.f,a=yh.f;r>i;)for(var s,c=Eh(arguments[i++]),l=o?Ep(c).concat(o(c)):Ep(c),u=l.length,f=0;u>f;)s=l[f++],gh&&!a.call(c,s)||(n[s]=c[s]);return n}:mv;qd({target:"Object",stat:!0,forced:Object.assign!==yv},{assign:yv});var bv=Xd("species"),wv=function(e,t){var n,r=Mh(e).constructor;return void 0===r||null==(n=Mh(r)[bv])?t:up(n)},kv=Sm.charAt,Sv=function(e,t,n){return t+(n?kv(e,t).length:1)},Ev=[].push,_v=Math.min,Tv=!ph((function(){return!RegExp(4294967295,"y")}));jm("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(_h(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!vm(e))return t.call(r,e,i);for(var o,a,s,c=[],l=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,f=new RegExp(e.source,l+"g");(o=fm.call(f,r))&&!((a=f.lastIndex)>u&&(c.push(r.slice(u,o.index)),o.length>1&&o.index<r.length&&Ev.apply(c,o.slice(1)),s=o[0].length,u=a,c.length>=i));)f.lastIndex===o.index&&f.lastIndex++;return u===r.length?!s&&f.test("")||c.push(""):c.push(r.slice(u)),c.length>i?c.slice(0,i):c}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=_h(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var o=n(r,e,this,i,r!==t);if(o.done)return o.value;var a=Mh(e),s=String(this),c=wv(a,RegExp),l=a.unicode,u=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(Tv?"y":"g"),f=new c(Tv?a:"^(?:"+a.source+")",u),h=void 0===i?4294967295:i>>>0;if(0===h)return[];if(0===s.length)return null===Lm(f,s)?[s]:[];for(var d=0,p=0,g=[];p<s.length;){f.lastIndex=Tv?p:0;var m,v=Lm(f,Tv?s:s.slice(p));if(null===v||(m=_v(bd(f.lastIndex+(Tv?0:p)),s.length))===d)p=Sv(s,p,l);else{if(g.push(s.slice(d,p)),g.length===h)return g;for(var y=1;y<=v.length-1;y++)if(g.push(v[y]),g.length===h)return g;p=d=m}}return g.push(s.slice(d)),g}]}),!Tv);var xv=qg.trim;for(var Av in qd({target:"String",proto:!0,forced:function(e){return ph((function(){return!!"\t\n\v\f\r \u2028\u2029\ufeff"[e]()||"
"!="
"[e]()||"\t\n\v\f\r \u2028\u2029\ufeff"[e].name!==e}))}("trim")},{trim:function(){return xv(this)}}),Xm){var Ov=dh[Av],Pv=Ov&&Ov.prototype;if(Pv&&Pv.forEach!==uv)try{Dh(Pv,"forEach",uv)}catch(e){Pv.forEach=uv}}var Cv=Xd("iterator"),Iv=!ph((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[Cv]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),jv=/[^\0-\u007E]/,Rv=/[.\u3002\uFF0E\uFF61]/g,Lv=Math.floor,Nv=String.fromCharCode,Mv=function(e){return e+22+75*(e<26)},Uv=function(e,t,n){var r=0;for(e=n?Lv(e/700):e>>1,e+=Lv(e/t);e>455;r+=36)e=Lv(e/35);return Lv(r+36*e/(e+38))},Fv=function(e){var t,n,r=[],i=(e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=e.charCodeAt(n++);56320==(64512&o)?t.push(((1023&i)<<10)+(1023&o)+65536):(t.push(i),n--)}else t.push(i)}return t}(e)).length,o=128,a=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&r.push(Nv(n));var c=r.length,l=c;for(c&&r.push("-");l<i;){var u=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=o&&n<u&&(u=n);var f=l+1;if(u-o>Lv((2147483647-a)/f))throw RangeError("Overflow: input needs wider integers to process");for(a+=(u-o)*f,o=u,t=0;t<e.length;t++){if((n=e[t])<o&&++a>2147483647)throw RangeError("Overflow: input needs wider integers to process");if(n==o){for(var h=a,d=36;;d+=36){var p=d<=s?1:d>=s+26?26:d-s;if(h<p)break;var g=h-p,m=36-p;r.push(Nv(Mv(p+g%m))),h=Lv(g/m)}r.push(Nv(Mv(h))),s=Uv(a,f,l==c),a=0,++l}}++a,++o}return r.join("")},Dv=function(e){var t=Yp(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return Mh(t.call(e))},Bv=pd("fetch"),qv=pd("Headers"),Hv=Xd("iterator"),Vv=ud.set,zv=ud.getterFor("URLSearchParams"),Wv=ud.getterFor("URLSearchParamsIterator"),$v=/\+/g,Kv=Array(4),Yv=function(e){return Kv[e-1]||(Kv[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},Gv=function(e){try{return decodeURIComponent(e)}catch(t){return e}},Xv=function(e){var t=e.replace($v," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(Yv(n--),Gv);return t}},Jv=/[!'()~]|%20/g,Qv={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Zv=function(e){return Qv[e]},ey=function(e){return encodeURIComponent(e).replace(Jv,Zv)},ty=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o<i.length;)(n=i[o++]).length&&(r=n.split("="),e.push({key:Xv(r.shift()),value:Xv(r.join("="))}))},ny=function(e){this.entries.length=0,ty(this.entries,e)},ry=function(e,t){if(e<t)throw TypeError("Not enough arguments")},iy=bg((function(e,t){Vv(this,{type:"URLSearchParamsIterator",iterator:Dv(zv(e).entries),kind:t})}),"Iterator",(function(){var e=Wv(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n})),oy=function(){Dm(this,oy,"URLSearchParams");var e,t,n,r,i,o,a,s,c,l=arguments.length>0?arguments[0]:void 0,u=this,f=[];if(Vv(u,{type:"URLSearchParams",entries:f,updateURL:function(){},updateSearchParams:ny}),void 0!==l)if(xh(l))if("function"==typeof(e=Yp(l)))for(n=(t=e.call(l)).next;!(r=n.call(t)).done;){if((a=(o=(i=Dv(Mh(r.value))).next).call(i)).done||(s=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");f.push({key:a.value+"",value:s.value+""})}else for(c in l)Ph(l,c)&&f.push({key:c,value:l[c]+""});else ty(f,"string"==typeof l?"?"===l.charAt(0)?l.slice(1):l:l+"")},ay=oy.prototype;Nm(ay,{append:function(e,t){ry(arguments.length,2);var n=zv(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){ry(arguments.length,1);for(var t=zv(this),n=t.entries,r=e+"",i=0;i<n.length;)n[i].key===r?n.splice(i,1):i++;t.updateURL()},get:function(e){ry(arguments.length,1);for(var t=zv(this).entries,n=e+"",r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){ry(arguments.length,1);for(var t=zv(this).entries,n=e+"",r=[],i=0;i<t.length;i++)t[i].key===n&&r.push(t[i].value);return r},has:function(e){ry(arguments.length,1);for(var t=zv(this).entries,n=e+"",r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){ry(arguments.length,1);for(var n,r=zv(this),i=r.entries,o=!1,a=e+"",s=t+"",c=0;c<i.length;c++)(n=i[c]).key===a&&(o?i.splice(c--,1):(o=!0,n.value=s));o||i.push({key:a,value:s}),r.updateURL()},sort:function(){var e,t,n,r=zv(this),i=r.entries,o=i.slice();for(i.length=0,n=0;n<o.length;n++){for(e=o[n],t=0;t<n;t++)if(i[t].key>e.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=zv(this).entries,r=fp(e,arguments.length>1?arguments[1]:void 0,3),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new iy(this,"keys")},values:function(){return new iy(this,"values")},entries:function(){return new iy(this,"entries")}},{enumerable:!0}),fd(ay,Hv,ay.entries),fd(ay,"toString",(function(){for(var e,t=zv(this).entries,n=[],r=0;r<t.length;)e=t[r++],n.push(ey(e.key)+"="+ey(e.value));return n.join("&")}),{enumerable:!0}),mg(oy,"URLSearchParams"),qd({global:!0,forced:!Iv},{URLSearchParams:oy}),Iv||"function"!=typeof Bv||"function"!=typeof qv||qd({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,r,i=[e];return arguments.length>1&&(t=arguments[1],xh(t)&&(n=t.body,"URLSearchParams"===$p(n)&&((r=t.headers?new qv(t.headers):new qv).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=Cp(t,{body:bh(0,String(n)),headers:bh(0,r)}))),i.push(t)),Bv.apply(this,i)}});var sy={URLSearchParams:oy,getState:zv},cy=Sm.codeAt,ly=dh.URL,uy=sy.URLSearchParams,fy=sy.getState,hy=ud.set,dy=ud.getterFor("URL"),py=Math.floor,gy=Math.pow,my=/[A-Za-z]/,vy=/[\d+\-.A-Za-z]/,yy=/\d/,by=/^(0x|0X)/,wy=/^[0-7]+$/,ky=/^\d+$/,Sy=/^[\dA-Fa-f]+$/,Ey=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,_y=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,Ty=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,xy=/[\u0009\u000A\u000D]/g,Ay=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=Py(t.slice(1,-1))))return"Invalid host";e.host=n}else if(Uy(e)){if(t=function(e){var t,n,r=[],i=e.toLowerCase().replace(Rv,".").split(".");for(t=0;t<i.length;t++)n=i[t],r.push(jv.test(n)?"xn--"+Fv(n):n);return r.join(".")}(t),Ey.test(t))return"Invalid host";if(null===(n=Oy(t)))return"Invalid host";e.host=n}else{if(_y.test(t))return"Invalid host";for(n="",r=Gp(t),i=0;i<r.length;i++)n+=Ny(r[i],Iy);e.host=n}},Oy=function(e){var t,n,r,i,o,a,s,c=e.split(".");if(c.length&&""==c[c.length-1]&&c.pop(),(t=c.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=c[r]))return e;if(o=10,i.length>1&&"0"==i.charAt(0)&&(o=by.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)a=0;else{if(!(10==o?ky:8==o?wy:Sy).test(i))return e;a=parseInt(i,o)}n.push(a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=gy(256,5-t))return null}else if(a>255)return null;for(s=n.pop(),r=0;r<n.length;r++)s+=n[r]*gy(256,3-r);return s},Py=function(e){var t,n,r,i,o,a,s,c=[0,0,0,0,0,0,0,0],l=0,u=null,f=0,h=function(){return e.charAt(f)};if(":"==h()){if(":"!=e.charAt(1))return;f+=2,u=++l}for(;h();){if(8==l)return;if(":"!=h()){for(t=n=0;n<4&&Sy.test(h());)t=16*t+parseInt(h(),16),f++,n++;if("."==h()){if(0==n)return;if(f-=n,l>6)return;for(r=0;h();){if(i=null,r>0){if(!("."==h()&&r<4))return;f++}if(!yy.test(h()))return;for(;yy.test(h());){if(o=parseInt(h(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;f++}c[l]=256*c[l]+i,2!=++r&&4!=r||l++}if(4!=r)return;break}if(":"==h()){if(f++,!h())return}else if(h())return;c[l++]=t}else{if(null!==u)return;f++,u=++l}}if(null!==u)for(a=l-u,l=7;0!=l&&a>0;)s=c[l],c[l--]=c[u+a-1],c[u+--a]=s;else if(8!=l)return;return c},Cy=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=py(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},Iy={},jy=yv({},Iy,{" ":1,'"':1,"<":1,">":1,"`":1}),Ry=yv({},jy,{"#":1,"?":1,"{":1,"}":1}),Ly=yv({},Ry,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Ny=function(e,t){var n=cy(e,0);return n>32&&n<127&&!Ph(t,e)?e:encodeURIComponent(e)},My={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Uy=function(e){return Ph(My,e.scheme)},Fy=function(e){return""!=e.username||""!=e.password},Dy=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},By=function(e,t){var n;return 2==e.length&&my.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},qy=function(e){var t;return e.length>1&&By(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},Hy=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&By(t[0],!0)||t.pop()},Vy=function(e){return"."===e||"%2e"===e.toLowerCase()},zy={},Wy={},$y={},Ky={},Yy={},Gy={},Xy={},Jy={},Qy={},Zy={},eb={},tb={},nb={},rb={},ib={},ob={},ab={},sb={},cb={},lb={},ub={},fb=function(e,t,n,r){var i,o,a,s,c,l=n||zy,u=0,f="",h=!1,d=!1,p=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(Ty,"")),t=t.replace(xy,""),i=Gp(t);u<=i.length;){switch(o=i[u],l){case zy:if(!o||!my.test(o)){if(n)return"Invalid scheme";l=$y;continue}f+=o.toLowerCase(),l=Wy;break;case Wy:if(o&&(vy.test(o)||"+"==o||"-"==o||"."==o))f+=o.toLowerCase();else{if(":"!=o){if(n)return"Invalid scheme";f="",l=$y,u=0;continue}if(n&&(Uy(e)!=Ph(My,f)||"file"==f&&(Fy(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(Uy(e)&&My[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?l=rb:Uy(e)&&r&&r.scheme==e.scheme?l=Ky:Uy(e)?l=Jy:"/"==i[u+1]?(l=Yy,u++):(e.cannotBeABaseURL=!0,e.path.push(""),l=cb)}break;case $y:if(!r||r.cannotBeABaseURL&&"#"!=o)return"Invalid scheme";if(r.cannotBeABaseURL&&"#"==o){e.scheme=r.scheme,e.path=r.path.slice(),e.query=r.query,e.fragment="",e.cannotBeABaseURL=!0,l=ub;break}l="file"==r.scheme?rb:Gy;continue;case Ky:if("/"!=o||"/"!=i[u+1]){l=Gy;continue}l=Qy,u++;break;case Yy:if("/"==o){l=Zy;break}l=sb;continue;case Gy:if(e.scheme=r.scheme,null==o)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query;else if("/"==o||"\\"==o&&Uy(e))l=Xy;else if("?"==o)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query="",l=lb;else{if("#"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.path.pop(),l=sb;continue}e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query,e.fragment="",l=ub}break;case Xy:if(!Uy(e)||"/"!=o&&"\\"!=o){if("/"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,l=sb;continue}l=Zy}else l=Qy;break;case Jy:if(l=Qy,"/"!=o||"/"!=f.charAt(u+1))continue;u++;break;case Qy:if("/"!=o&&"\\"!=o){l=Zy;continue}break;case Zy:if("@"==o){h&&(f="%40"+f),h=!0,a=Gp(f);for(var g=0;g<a.length;g++){var m=a[g];if(":"!=m||p){var v=Ny(m,Ly);p?e.password+=v:e.username+=v}else p=!0}f=""}else if(null==o||"/"==o||"?"==o||"#"==o||"\\"==o&&Uy(e)){if(h&&""==f)return"Invalid authority";u-=Gp(f).length+1,f="",l=eb}else f+=o;break;case eb:case tb:if(n&&"file"==e.scheme){l=ob;continue}if(":"!=o||d){if(null==o||"/"==o||"?"==o||"#"==o||"\\"==o&&Uy(e)){if(Uy(e)&&""==f)return"Invalid host";if(n&&""==f&&(Fy(e)||null!==e.port))return;if(s=Ay(e,f))return s;if(f="",l=ab,n)return;continue}"["==o?d=!0:"]"==o&&(d=!1),f+=o}else{if(""==f)return"Invalid host";if(s=Ay(e,f))return s;if(f="",l=nb,n==tb)return}break;case nb:if(!yy.test(o)){if(null==o||"/"==o||"?"==o||"#"==o||"\\"==o&&Uy(e)||n){if(""!=f){var y=parseInt(f,10);if(y>65535)return"Invalid port";e.port=Uy(e)&&y===My[e.scheme]?null:y,f=""}if(n)return;l=ab;continue}return"Invalid port"}f+=o;break;case rb:if(e.scheme="file","/"==o||"\\"==o)l=ib;else{if(!r||"file"!=r.scheme){l=sb;continue}if(null==o)e.host=r.host,e.path=r.path.slice(),e.query=r.query;else if("?"==o)e.host=r.host,e.path=r.path.slice(),e.query="",l=lb;else{if("#"!=o){qy(i.slice(u).join(""))||(e.host=r.host,e.path=r.path.slice(),Hy(e)),l=sb;continue}e.host=r.host,e.path=r.path.slice(),e.query=r.query,e.fragment="",l=ub}}break;case ib:if("/"==o||"\\"==o){l=ob;break}r&&"file"==r.scheme&&!qy(i.slice(u).join(""))&&(By(r.path[0],!0)?e.path.push(r.path[0]):e.host=r.host),l=sb;continue;case ob:if(null==o||"/"==o||"\\"==o||"?"==o||"#"==o){if(!n&&By(f))l=sb;else if(""==f){if(e.host="",n)return;l=ab}else{if(s=Ay(e,f))return s;if("localhost"==e.host&&(e.host=""),n)return;f="",l=ab}continue}f+=o;break;case ab:if(Uy(e)){if(l=sb,"/"!=o&&"\\"!=o)continue}else if(n||"?"!=o)if(n||"#"!=o){if(null!=o&&(l=sb,"/"!=o))continue}else e.fragment="",l=ub;else e.query="",l=lb;break;case sb:if(null==o||"/"==o||"\\"==o&&Uy(e)||!n&&("?"==o||"#"==o)){if(".."===(c=(c=f).toLowerCase())||"%2e."===c||".%2e"===c||"%2e%2e"===c?(Hy(e),"/"==o||"\\"==o&&Uy(e)||e.path.push("")):Vy(f)?"/"==o||"\\"==o&&Uy(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&By(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(null==o||"?"==o||"#"==o))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==o?(e.query="",l=lb):"#"==o&&(e.fragment="",l=ub)}else f+=Ny(o,Ry);break;case cb:"?"==o?(e.query="",l=lb):"#"==o?(e.fragment="",l=ub):null!=o&&(e.path[0]+=Ny(o,Iy));break;case lb:n||"#"!=o?null!=o&&("'"==o&&Uy(e)?e.query+="%27":e.query+="#"==o?"%23":Ny(o,Iy)):(e.fragment="",l=ub);break;case ub:null!=o&&(e.fragment+=Ny(o,jy))}u++}},hb=function(e){var t,n,r=Dm(this,hb,"URL"),i=arguments.length>1?arguments[1]:void 0,o=String(e),a=hy(r,{type:"URL"});if(void 0!==i)if(i instanceof hb)t=dy(i);else if(n=fb(t={},String(i)))throw TypeError(n);if(n=fb(a,o,null,t))throw TypeError(n);var s=a.searchParams=new uy,c=fy(s);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(s)||null},gh||(r.href=pb.call(r),r.origin=gb.call(r),r.protocol=mb.call(r),r.username=vb.call(r),r.password=yb.call(r),r.host=bb.call(r),r.hostname=wb.call(r),r.port=kb.call(r),r.pathname=Sb.call(r),r.search=Eb.call(r),r.searchParams=_b.call(r),r.hash=Tb.call(r))},db=hb.prototype,pb=function(){var e=dy(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,a=e.path,s=e.query,c=e.fragment,l=t+":";return null!==i?(l+="//",Fy(e)&&(l+=n+(r?":"+r:"")+"@"),l+=Cy(i),null!==o&&(l+=":"+o)):"file"==t&&(l+="//"),l+=e.cannotBeABaseURL?a[0]:a.length?"/"+a.join("/"):"",null!==s&&(l+="?"+s),null!==c&&(l+="#"+c),l},gb=function(){var e=dy(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&Uy(e)?t+"://"+Cy(e.host)+(null!==n?":"+n:""):"null"},mb=function(){return dy(this).scheme+":"},vb=function(){return dy(this).username},yb=function(){return dy(this).password},bb=function(){var e=dy(this),t=e.host,n=e.port;return null===t?"":null===n?Cy(t):Cy(t)+":"+n},wb=function(){var e=dy(this).host;return null===e?"":Cy(e)},kb=function(){var e=dy(this).port;return null===e?"":String(e)},Sb=function(){var e=dy(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Eb=function(){var e=dy(this).query;return e?"?"+e:""},_b=function(){return dy(this).searchParams},Tb=function(){var e=dy(this).fragment;return e?"#"+e:""},xb=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(gh&&_p(db,{href:xb(pb,(function(e){var t=dy(this),n=String(e),r=fb(t,n);if(r)throw TypeError(r);fy(t.searchParams).updateSearchParams(t.query)})),origin:xb(gb),protocol:xb(mb,(function(e){var t=dy(this);fb(t,String(e)+":",zy)})),username:xb(vb,(function(e){var t=dy(this),n=Gp(String(e));if(!Dy(t)){t.username="";for(var r=0;r<n.length;r++)t.username+=Ny(n[r],Ly)}})),password:xb(yb,(function(e){var t=dy(this),n=Gp(String(e));if(!Dy(t)){t.password="";for(var r=0;r<n.length;r++)t.password+=Ny(n[r],Ly)}})),host:xb(bb,(function(e){var t=dy(this);t.cannotBeABaseURL||fb(t,String(e),eb)})),hostname:xb(wb,(function(e){var t=dy(this);t.cannotBeABaseURL||fb(t,String(e),tb)})),port:xb(kb,(function(e){var t=dy(this);Dy(t)||(""==(e=String(e))?t.port=null:fb(t,e,nb))})),pathname:xb(Sb,(function(e){var t=dy(this);t.cannotBeABaseURL||(t.path=[],fb(t,e+"",ab))})),search:xb(Eb,(function(e){var t=dy(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",fb(t,e,lb)),fy(t.searchParams).updateSearchParams(t.query)})),searchParams:xb(_b),hash:xb(Tb,(function(e){var t=dy(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",fb(t,e,ub)):t.fragment=null}))}),fd(db,"toJSON",(function(){return pb.call(this)}),{enumerable:!0}),fd(db,"toString",(function(){return pb.call(this)}),{enumerable:!0}),ly){var Ab=ly.createObjectURL,Ob=ly.revokeObjectURL;Ab&&fd(hb,"createObjectURL",(function(e){return Ab.apply(ly,arguments)})),Ob&&fd(hb,"revokeObjectURL",(function(e){return Ob.apply(ly,arguments)}))}mg(hb,"URL"),qd({global:!0,forced:!Iv,sham:!gh},{URL:hb});var Pb=pp.some,Cb=Pg("some"),Ib=yp("some");qd({target:"Array",proto:!0,forced:!Cb||!Ib},{some:function(e){return Pb(this,e,arguments.length>1?arguments[1]:void 0)}});var jb="".repeat||function(e){var t=String(_h(this)),n="",r=vd(e);if(r<0||r==1/0)throw RangeError("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},Rb=1..toFixed,Lb=Math.floor,Nb=function(e,t,n){return 0===t?n:t%2==1?Nb(e,t-1,n*e):Nb(e*e,t/2,n)},Mb=Rb&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!ph((function(){Rb.call({})}));qd({target:"Number",proto:!0,forced:Mb},{toFixed:function(e){var t,n,r,i,o=function(e){if("number"!=typeof e&&"Number"!=kh(e))throw TypeError("Incorrect invocation");return+e}(this),a=vd(e),s=[0,0,0,0,0,0],c="",l="0",u=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*s[n],s[n]=r%1e7,r=Lb(r/1e7)},f=function(e){for(var t=6,n=0;--t>=0;)n+=s[t],s[t]=Lb(n/e),n=n%e*1e7},h=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==s[e]){var n=String(s[e]);t=""===t?n:t+jb.call("0",7-n.length)+n}return t};if(a<0||a>20)throw RangeError("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return String(o);if(o<0&&(c="-",o=-o),o>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(o*Nb(2,69,1))-69)<0?o*Nb(2,-t,1):o/Nb(2,t,1),n*=4503599627370496,(t=52-t)>0){for(u(0,n),r=a;r>=7;)u(1e7,0),r-=7;for(u(Nb(10,r,1),0),r=t-1;r>=23;)f(1<<23),r-=23;f(1<<r),u(1,1),f(2),l=h()}else u(0,n),u(1<<-t,0),l=h()+jb.call("0",a);return l=a>0?c+((i=l.length)<=a?"0."+jb.call("0",a-i)+l:l.slice(0,i-a)+"."+l.slice(i-a)):c+l}});var Ub=yh.f,Fb=function(e){return function(t){for(var n,r=Th(t),i=Ep(r),o=i.length,a=0,s=[];o>a;)n=i[a++],gh&&!Ub.call(r,n)||s.push(e?[n,r[n]]:r[n]);return s}},Db={entries:Fb(!0),values:Fb(!1)},Bb=Db.entries;qd({target:"Object",stat:!0},{entries:function(e){return Bb(e)}});var qb=Db.values;qd({target:"Object",stat:!0},{values:function(e){return qb(e)}});var Hb=Math.max,Vb=Math.min,zb=Math.floor,Wb=/\$([$&'`]|\d\d?|<[^>]*>)/g,$b=/\$([$&'`]|\d\d?)/g;jm("replace",2,(function(e,t,n,r){var i=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=r.REPLACE_KEEPS_$0,a=i?"$":"$0";return[function(n,r){var i=_h(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!i&&o||"string"==typeof r&&-1===r.indexOf(a)){var c=n(t,e,this,r);if(c.done)return c.value}var l=Mh(e),u=String(this),f="function"==typeof r;f||(r=String(r));var h=l.global;if(h){var d=l.unicode;l.lastIndex=0}for(var p=[];;){var g=Lm(l,u);if(null===g)break;if(p.push(g),!h)break;""===String(g[0])&&(l.lastIndex=Sv(u,bd(l.lastIndex),d))}for(var m,v="",y=0,b=0;b<p.length;b++){g=p[b];for(var w=String(g[0]),k=Hb(Vb(vd(g.index),u.length),0),S=[],E=1;E<g.length;E++)S.push(void 0===(m=g[E])?m:String(m));var _=g.groups;if(f){var T=[w].concat(S,k,u);void 0!==_&&T.push(_);var x=String(r.apply(void 0,T))}else x=s(w,u,k,S,_,r);k>=y&&(v+=u.slice(y,k)+x,y=k+w.length)}return v+u.slice(y)}];function s(e,n,r,i,o,a){var s=r+e.length,c=i.length,l=$b;return void 0!==o&&(o=Vd(o),l=Wb),t.call(a,l,(function(t,a){var l;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(s);case"<":l=o[a.slice(1,-1)];break;default:var u=+a;if(0===u)return t;if(u>c){var f=zb(u/10);return 0===f?t:f<=c?void 0===i[f-1]?a.charAt(1):i[f-1]+a.charAt(1):t}l=i[u-1]}return void 0===l?"":l}))}}));var Kb=Pd.f,Yb={}.toString,Gb="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Xb={f:function(e){return Gb&&"[object Window]"==Yb.call(e)?function(e){try{return Kb(e)}catch(e){return Gb.slice()}}(e):Kb(Th(e))}},Jb={f:Xd},Qb=Fh.f,Zb=pp.forEach,ew=ed("hidden"),tw=Xd("toPrimitive"),nw=ud.set,rw=ud.getterFor("Symbol"),iw=Object.prototype,ow=dh.Symbol,aw=pd("JSON","stringify"),sw=Nh.f,cw=Fh.f,lw=Xb.f,uw=yh.f,fw=Gh("symbols"),hw=Gh("op-symbols"),dw=Gh("string-to-symbol-registry"),pw=Gh("symbol-to-string-registry"),gw=Gh("wks"),mw=dh.QObject,vw=!mw||!mw.prototype||!mw.prototype.findChild,yw=gh&&ph((function(){return 7!=Cp(cw({},"a",{get:function(){return cw(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=sw(iw,t);r&&delete iw[t],cw(e,t,n),r&&e!==iw&&cw(iw,t,r)}:cw,bw=function(e,t){var n=fw[e]=Cp(ow.prototype);return nw(n,{type:"Symbol",tag:e,description:t}),gh||(n.description=t),n},ww=$d?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof ow},kw=function(e,t,n){e===iw&&kw(hw,t,n),Mh(e);var r=Ah(t,!0);return Mh(n),Ph(fw,r)?(n.enumerable?(Ph(e,ew)&&e[ew][r]&&(e[ew][r]=!1),n=Cp(n,{enumerable:bh(0,!1)})):(Ph(e,ew)||cw(e,ew,bh(1,{})),e[ew][r]=!0),yw(e,r,n)):cw(e,r,n)},Sw=function(e,t){Mh(e);var n=Th(t),r=Ep(n).concat(xw(n));return Zb(r,(function(t){gh&&!Ew.call(n,t)||kw(e,t,n[t])})),e},Ew=function(e){var t=Ah(e,!0),n=uw.call(this,t);return!(this===iw&&Ph(fw,t)&&!Ph(hw,t))&&(!(n||!Ph(this,t)||!Ph(fw,t)||Ph(this,ew)&&this[ew][t])||n)},_w=function(e,t){var n=Th(e),r=Ah(t,!0);if(n!==iw||!Ph(fw,r)||Ph(hw,r)){var i=sw(n,r);return!i||!Ph(fw,r)||Ph(n,ew)&&n[ew][r]||(i.enumerable=!0),i}},Tw=function(e){var t=lw(Th(e)),n=[];return Zb(t,(function(e){Ph(fw,e)||Ph(td,e)||n.push(e)})),n},xw=function(e){var t=e===iw,n=lw(t?hw:Th(e)),r=[];return Zb(n,(function(e){!Ph(fw,e)||t&&!Ph(iw,e)||r.push(fw[e])})),r};if(Wd||(fd((ow=function(){if(this instanceof ow)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=Qh(e),n=function(e){this===iw&&n.call(hw,e),Ph(this,ew)&&Ph(this[ew],t)&&(this[ew][t]=!1),yw(this,t,bh(1,e))};return gh&&vw&&yw(iw,t,{configurable:!0,set:n}),bw(t,e)}).prototype,"toString",(function(){return rw(this).tag})),fd(ow,"withoutSetter",(function(e){return bw(Qh(e),e)})),yh.f=Ew,Fh.f=kw,Nh.f=_w,Pd.f=Xb.f=Tw,Cd.f=xw,Jb.f=function(e){return bw(Xd(e),e)},gh&&(cw(ow.prototype,"description",{configurable:!0,get:function(){return rw(this).description}}),fd(iw,"propertyIsEnumerable",Ew,{unsafe:!0}))),qd({global:!0,wrap:!0,forced:!Wd,sham:!Wd},{Symbol:ow}),Zb(Ep(gw),(function(e){!function(e){var t=hd.Symbol||(hd.Symbol={});Ph(t,e)||Qb(t,e,{value:Jb.f(e)})}(e)})),qd({target:"Symbol",stat:!0,forced:!Wd},{for:function(e){var t=String(e);if(Ph(dw,t))return dw[t];var n=ow(t);return dw[t]=n,pw[n]=t,n},keyFor:function(e){if(!ww(e))throw TypeError(e+" is not a symbol");if(Ph(pw,e))return pw[e]},useSetter:function(){vw=!0},useSimple:function(){vw=!1}}),qd({target:"Object",stat:!0,forced:!Wd,sham:!gh},{create:function(e,t){return void 0===t?Cp(e):Sw(Cp(e),t)},defineProperty:kw,defineProperties:Sw,getOwnPropertyDescriptor:_w}),qd({target:"Object",stat:!0,forced:!Wd},{getOwnPropertyNames:Tw,getOwnPropertySymbols:xw}),qd({target:"Object",stat:!0,forced:ph((function(){Cd.f(1)}))},{getOwnPropertySymbols:function(e){return Cd.f(Vd(e))}}),aw){var Aw=!Wd||ph((function(){var e=ow();return"[null]"!=aw([e])||"{}"!=aw({a:e})||"{}"!=aw(Object(e))}));qd({target:"JSON",stat:!0,forced:Aw},{stringify:function(e,t,n){for(var r,i=[e],o=1;arguments.length>o;)i.push(arguments[o++]);if(r=t,(xh(t)||void 0!==e)&&!ww(e))return Hd(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ww(t))return t}),i[1]=t,aw.apply(null,i)}})}ow.prototype[tw]||Dh(ow.prototype,tw,ow.prototype.valueOf),mg(ow,"Symbol"),td[ew]=!0,qd({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Ow=Nh.f,Pw=ph((function(){Ow(1)}));function Cw(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Iw(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function jw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Rw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jw(Object(n),!0).forEach((function(t){Iw(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jw(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qd({target:"Object",stat:!0,forced:!gh||Pw,sham:!gh},{getOwnPropertyDescriptor:function(e,t){return Ow(Th(e),t)}}),qd({target:"Object",stat:!0,sham:!gh},{getOwnPropertyDescriptors:function(e){for(var t,n,r=Th(e),i=Nh.f,o=Id(r),a={},s=0;o.length>s;)void 0!==(n=i(r,t=o[s++]))&&zd(a,t,n);return a}}),jm("match",1,(function(e,t,n){return[function(t){var n=_h(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=Mh(e),o=String(this);if(!i.global)return Lm(i,o);var a=i.unicode;i.lastIndex=0;for(var s,c=[],l=0;null!==(s=Lm(i,o));){var u=String(s[0]);c[l]=u,""===u&&(i.lastIndex=Sv(o,bd(i.lastIndex),a)),l++}return 0===l?null:c}]}));var Lw={addCSS:!0,thumbWidth:15,watch:!0};function Nw(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var Mw=function(e){return null!=e?e.constructor:null},Uw=function(e,t){return!!(e&&t&&e instanceof t)},Fw=function(e){return null==e},Dw=function(e){return Mw(e)===Object},Bw=function(e){return Mw(e)===String},qw=function(e){return Array.isArray(e)},Hw=function(e){return Uw(e,NodeList)},Vw=Bw,zw=qw,Ww=Hw,$w=function(e){return Uw(e,Element)},Kw=function(e){return Uw(e,Event)},Yw=function(e){return Fw(e)||(Bw(e)||qw(e)||Hw(e))&&!e.length||Dw(e)&&!Object.keys(e).length};function Gw(e,t){if(1>t){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var Xw,Jw,Qw,Zw=function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),$w(t)?this.element=t:Vw(t)&&(this.element=document.querySelector(t)),$w(this.element)&&Yw(this.element.rangeTouch)&&(this.config=Rw({},Lw,{},n),this.init())}return function(e,t,n){t&&Cw(e.prototype,t),n&&Cw(e,n)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,n=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!Kw(t))return null;var n,r=t.target,i=t.changedTouches[0],o=parseFloat(r.getAttribute("min"))||0,a=parseFloat(r.getAttribute("max"))||100,s=parseFloat(r.getAttribute("step"))||1,c=r.getBoundingClientRect(),l=100/c.width*(this.config.thumbWidth/2)/100;return 0>(n=100/c.width*(i.clientX-c.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*l:50<n&&(n+=2*(n-50)*l),o+Gw(n/100*(a-o),s)}},{key:"set",value:function(t){e.enabled&&Kw(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(Yw(t)||Vw(t)?r=Array.from(document.querySelectorAll(Vw(t)?t:'input[type="range"]')):$w(t)?r=[t]:Ww(t)?r=Array.from(t):zw(t)&&(r=t.filter($w)),Yw(r))return null;var i=Rw({},Lw,{},n);if(Vw(t)&&i.watch){var o=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){$w(n)&&Nw(n,t)&&new e(n,i)}))}))}));o.observe(document.body,{childList:!0,subtree:!0})}return r.map((function(t){return new e(t,n)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),ek=dh.Promise,tk=Xd("species"),nk=function(e){var t=pd(e),n=Fh.f;gh&&t&&!t[tk]&&n(t,tk,{configurable:!0,get:function(){return this}})},rk=/(iphone|ipod|ipad).*applewebkit/i.test(Zd),ik=dh.location,ok=dh.setImmediate,ak=dh.clearImmediate,sk=dh.process,ck=dh.MessageChannel,lk=dh.Dispatch,uk=0,fk={},hk=function(e){if(fk.hasOwnProperty(e)){var t=fk[e];delete fk[e],t()}},dk=function(e){return function(){hk(e)}},pk=function(e){hk(e.data)},gk=function(e){dh.postMessage(e+"",ik.protocol+"//"+ik.host)};ok&&ak||(ok=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return fk[++uk]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},Xw(uk),uk},ak=function(e){delete fk[e]},"process"==kh(sk)?Xw=function(e){sk.nextTick(dk(e))}:lk&&lk.now?Xw=function(e){lk.now(dk(e))}:ck&&!rk?(Qw=(Jw=new ck).port2,Jw.port1.onmessage=pk,Xw=fp(Qw.postMessage,Qw,1)):!dh.addEventListener||"function"!=typeof postMessage||dh.importScripts||ph(gk)?Xw="onreadystatechange"in jh("script")?function(e){Tp.appendChild(jh("script")).onreadystatechange=function(){Tp.removeChild(this),hk(e)}}:function(e){setTimeout(dk(e),0)}:(Xw=gk,dh.addEventListener("message",pk,!1)));var mk,vk,yk,bk,wk,kk,Sk,Ek,_k={set:ok,clear:ak},Tk=Nh.f,xk=_k.set,Ak=dh.MutationObserver||dh.WebKitMutationObserver,Ok=dh.process,Pk=dh.Promise,Ck="process"==kh(Ok),Ik=Tk(dh,"queueMicrotask"),jk=Ik&&Ik.value;jk||(mk=function(){var e,t;for(Ck&&(e=Ok.domain)&&e.exit();vk;){t=vk.fn,vk=vk.next;try{t()}catch(e){throw vk?bk():yk=void 0,e}}yk=void 0,e&&e.enter()},Ck?bk=function(){Ok.nextTick(mk)}:Ak&&!rk?(wk=!0,kk=document.createTextNode(""),new Ak(mk).observe(kk,{characterData:!0}),bk=function(){kk.data=wk=!wk}):Pk&&Pk.resolve?(Sk=Pk.resolve(void 0),Ek=Sk.then,bk=function(){Ek.call(Sk,mk)}):bk=function(){xk.call(dh,mk)});var Rk,Lk,Nk,Mk,Uk=jk||function(e){var t={fn:e,next:void 0};yk&&(yk.next=t),vk||(vk=t,bk()),yk=t},Fk=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=up(t),this.reject=up(n)},Dk={f:function(e){return new Fk(e)}},Bk=function(e,t){if(Mh(e),xh(t)&&t.constructor===e)return t;var n=Dk.f(e);return(0,n.resolve)(t),n.promise},qk=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},Hk=_k.set,Vk=Xd("species"),zk=ud.get,Wk=ud.set,$k=ud.getterFor("Promise"),Kk=ek,Yk=dh.TypeError,Gk=dh.document,Xk=dh.process,Jk=pd("fetch"),Qk=Dk.f,Zk=Qk,eS="process"==kh(Xk),tS=!!(Gk&&Gk.createEvent&&dh.dispatchEvent),nS=Dd("Promise",(function(){if(!($h(Kk)!==String(Kk))){if(66===rp)return!0;if(!eS&&"function"!=typeof PromiseRejectionEvent)return!0}if(rp>=51&&/native code/.test(Kk))return!1;var e=Kk.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[Vk]=t,!(e.then((function(){}))instanceof t)})),rS=nS||!eg((function(e){Kk.all(e).catch((function(){}))})),iS=function(e){var t;return!(!xh(e)||"function"!=typeof(t=e.then))&&t},oS=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;Uk((function(){for(var i=t.value,o=1==t.state,a=0;r.length>a;){var s,c,l,u=r[a++],f=o?u.ok:u.fail,h=u.resolve,d=u.reject,p=u.domain;try{f?(o||(2===t.rejection&&lS(e,t),t.rejection=1),!0===f?s=i:(p&&p.enter(),s=f(i),p&&(p.exit(),l=!0)),s===u.promise?d(Yk("Promise-chain cycle")):(c=iS(s))?c.call(s,h,d):h(s)):d(i)}catch(e){p&&!l&&p.exit(),d(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&sS(e,t)}))}},aS=function(e,t,n){var r,i;tS?((r=Gk.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),dh.dispatchEvent(r)):r={promise:t,reason:n},(i=dh["on"+e])?i(r):"unhandledrejection"===e&&function(e,t){var n=dh.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},sS=function(e,t){Hk.call(dh,(function(){var n,r=t.value;if(cS(t)&&(n=qk((function(){eS?Xk.emit("unhandledRejection",r,e):aS("unhandledrejection",e,r)})),t.rejection=eS||cS(t)?2:1,n.error))throw n.value}))},cS=function(e){return 1!==e.rejection&&!e.parent},lS=function(e,t){Hk.call(dh,(function(){eS?Xk.emit("rejectionHandled",e):aS("rejectionhandled",e,t.value)}))},uS=function(e,t,n,r){return function(i){e(t,n,i,r)}},fS=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,oS(e,t,!0))},hS=function(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw Yk("Promise can't be resolved itself");var i=iS(n);i?Uk((function(){var r={done:!1};try{i.call(n,uS(hS,e,r,t),uS(fS,e,r,t))}catch(n){fS(e,r,n,t)}})):(t.value=n,t.state=1,oS(e,t,!1))}catch(n){fS(e,{done:!1},n,t)}}};nS&&(Kk=function(e){Dm(this,Kk,"Promise"),up(e),Rk.call(this);var t=zk(this);try{e(uS(hS,this,t),uS(fS,this,t))}catch(e){fS(this,t,e)}},(Rk=function(e){Wk(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Nm(Kk.prototype,{then:function(e,t){var n=$k(this),r=Qk(wv(this,Kk));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=eS?Xk.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&oS(this,n,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),Lk=function(){var e=new Rk,t=zk(e);this.promise=e,this.resolve=uS(hS,e,t),this.reject=uS(fS,e,t)},Dk.f=Qk=function(e){return e===Kk||e===Nk?new Lk(e):Zk(e)},"function"==typeof ek&&(Mk=ek.prototype.then,fd(ek.prototype,"then",(function(e,t){var n=this;return new Kk((function(e,t){Mk.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof Jk&&qd({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return Bk(Kk,Jk.apply(dh,arguments))}}))),qd({global:!0,wrap:!0,forced:nS},{Promise:Kk}),mg(Kk,"Promise",!1),nk("Promise"),Nk=pd("Promise"),qd({target:"Promise",stat:!0,forced:nS},{reject:function(e){var t=Qk(this);return t.reject.call(void 0,e),t.promise}}),qd({target:"Promise",stat:!0,forced:nS},{resolve:function(e){return Bk(this,e)}}),qd({target:"Promise",stat:!0,forced:rS},{all:function(e){var t=this,n=Qk(t),r=n.resolve,i=n.reject,o=qk((function(){var n=up(t.resolve),o=[],a=0,s=1;Fm(e,(function(e){var c=a++,l=!1;o.push(void 0),s++,n.call(t,e).then((function(e){l||(l=!0,o[c]=e,--s||r(o))}),i)})),--s||r(o)}));return o.error&&i(o.value),n.promise},race:function(e){var t=this,n=Qk(t),r=n.reject,i=qk((function(){var i=up(t.resolve);Fm(e,(function(e){i.call(t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var dS,pS=Nh.f,gS="".startsWith,mS=Math.min,vS=wm("startsWith"),yS=!(vS||(dS=pS(String.prototype,"startsWith"),!dS||dS.writable));qd({target:"String",proto:!0,forced:!yS&&!vS},{startsWith:function(e){var t=String(_h(this));ym(e);var n=bd(mS(arguments.length>1?arguments[1]:void 0,t.length)),r=String(e);return gS?gS.call(t,r,n):t.slice(n,n+r.length)===r}});var bS,wS,kS,SS=function(e){return null!=e?e.constructor:null},ES=function(e,t){return Boolean(e&&t&&e instanceof t)},_S=function(e){return null==e},TS=function(e){return SS(e)===Object},xS=function(e){return SS(e)===String},AS=function(e){return Array.isArray(e)},OS=function(e){return ES(e,NodeList)},PS=function(e){return _S(e)||(xS(e)||AS(e)||OS(e))&&!e.length||TS(e)&&!Object.keys(e).length},CS=_S,IS=TS,jS=function(e){return SS(e)===Number&&!Number.isNaN(e)},RS=xS,LS=function(e){return SS(e)===Boolean},NS=function(e){return SS(e)===Function},MS=AS,US=OS,FS=function(e){return ES(e,Element)},DS=function(e){return ES(e,Event)},BS=function(e){return ES(e,KeyboardEvent)},qS=function(e){return ES(e,TextTrack)||!_S(e)&&xS(e.kind)},HS=function(e){if(ES(e,window.URL))return!0;if(!xS(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!PS(new URL(t).hostname)}catch(e){return!1}},VS=PS,zS=(bS=document.createElement("span"),wS={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},kS=Object.keys(wS).find((function(e){return void 0!==bS.style[e]})),!!RS(kS)&&wS[kS]);function WS(e,t){setTimeout((function(){try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var $S={isIE: +"object"==typeof navigator&&function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=function(e){return e&&e.Math==Math&&e},r=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),i=function(e){try{return!!e()}catch(e){return!0}},o=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),a={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,c={f:s&&!a.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:a},u=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},l={}.toString,f=function(e){return l.call(e).slice(8,-1)},h="".split,p=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==f(e)?h.call(e,""):Object(e)}:Object,d=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},g=function(e){return p(d(e))},v=function(e){return"object"==typeof e?null!==e:"function"==typeof e},m=function(e,t){if(!v(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!v(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!v(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!v(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},w=r.document,_=v(w)&&v(w.createElement),E=function(e){return _?w.createElement(e):{}},k=!o&&!i((function(){return 7!=Object.defineProperty(E("div"),"a",{get:function(){return 7}}).a})),S=Object.getOwnPropertyDescriptor,T={f:o?S:function(e,t){if(e=g(e),t=m(t,!0),k)try{return S(e,t)}catch(e){}if(b(e,t))return u(!c.f.call(e,t),e[t])}},x=function(e){if(!v(e))throw TypeError(String(e)+" is not an object");return e},A=Object.defineProperty,O={f:o?A:function(e,t,n){if(x(e),t=m(t,!0),x(n),k)try{return A(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},P=o?function(e,t,n){return O.f(e,t,u(1,n))}:function(e,t,n){return e[t]=n,e},I=function(e,t){try{P(r,e,t)}catch(n){r[e]=t}return t},j=r["__core-js_shared__"]||I("__core-js_shared__",{}),C=Function.toString;"function"!=typeof j.inspectSource&&(j.inspectSource=function(e){return C.call(e)});var R,L,N,M=j.inspectSource,U=r.WeakMap,D="function"==typeof U&&/native code/.test(M(U)),F=t((function(e){(e.exports=function(e,t){return j[e]||(j[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),B=0,q=Math.random(),H=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++B+q).toString(36)},V=F("keys"),W=function(e){return V[e]||(V[e]=H(e))},z={},Y=r.WeakMap;if(D){var $=new Y,G=$.get,K=$.has,X=$.set;R=function(e,t){return X.call($,e,t),t},L=function(e){return G.call($,e)||{}},N=function(e){return K.call($,e)}}else{var J=W("state");z[J]=!0,R=function(e,t){return P(e,J,t),t},L=function(e){return b(e,J)?e[J]:{}},N=function(e){return b(e,J)}}var Q={set:R,get:L,has:N,enforce:function(e){return N(e)?L(e):R(e,{})},getterFor:function(e){return function(t){var n;if(!v(t)||(n=L(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Z=t((function(e){var t=Q.get,n=Q.enforce,i=String(String).split("String");(e.exports=function(e,t,o,a){var s=!!a&&!!a.unsafe,c=!!a&&!!a.enumerable,u=!!a&&!!a.noTargetGet;"function"==typeof o&&("string"!=typeof t||b(o,"name")||P(o,"name",t),n(o).source=i.join("string"==typeof t?t:"")),e!==r?(s?!u&&e[t]&&(c=!0):delete e[t],c?e[t]=o:P(e,t,o)):c?e[t]=o:I(t,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||M(this)}))})),ee=r,te=function(e){return"function"==typeof e?e:void 0},ne=function(e,t){return arguments.length<2?te(ee[e])||te(r[e]):ee[e]&&ee[e][t]||r[e]&&r[e][t]},re=Math.ceil,ie=Math.floor,oe=function(e){return isNaN(e=+e)?0:(e>0?ie:re)(e)},ae=Math.min,se=function(e){return e>0?ae(oe(e),9007199254740991):0},ce=Math.max,ue=Math.min,le=function(e,t){var n=oe(e);return n<0?ce(n+t,0):ue(n,t)},fe=function(e){return function(t,n,r){var i,o=g(t),a=se(o.length),s=le(r,a);if(e&&n!=n){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===n)return e||s||0;return!e&&-1}},he={includes:fe(!0),indexOf:fe(!1)},pe=he.indexOf,de=function(e,t){var n,r=g(e),i=0,o=[];for(n in r)!b(z,n)&&b(r,n)&&o.push(n);for(;t.length>i;)b(r,n=t[i++])&&(~pe(o,n)||o.push(n));return o},ge=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ve=ge.concat("length","prototype"),me={f:Object.getOwnPropertyNames||function(e){return de(e,ve)}},ye={f:Object.getOwnPropertySymbols},be=ne("Reflect","ownKeys")||function(e){var t=me.f(x(e)),n=ye.f;return n?t.concat(n(e)):t},we=function(e,t){for(var n=be(t),r=O.f,i=T.f,o=0;o<n.length;o++){var a=n[o];b(e,a)||r(e,a,i(t,a))}},_e=/#|\.prototype\./,Ee=function(e,t){var n=Se[ke(e)];return n==xe||n!=Te&&("function"==typeof t?i(t):!!t)},ke=Ee.normalize=function(e){return String(e).replace(_e,".").toLowerCase()},Se=Ee.data={},Te=Ee.NATIVE="N",xe=Ee.POLYFILL="P",Ae=Ee,Oe=T.f,Pe=function(e,t){var n,i,o,a,s,c=e.target,u=e.global,l=e.stat;if(n=u?r:l?r[c]||I(c,{}):(r[c]||{}).prototype)for(i in t){if(a=t[i],o=e.noTargetGet?(s=Oe(n,i))&&s.value:n[i],!Ae(u?i:c+(l?".":"#")+i,e.forced)&&void 0!==o){if(typeof a==typeof o)continue;we(a,o)}(e.sham||o&&o.sham)&&P(a,"sham",!0),Z(n,i,a,e)}},Ie=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},je=function(e,t,n){if(Ie(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}},Ce=function(e){return Object(d(e))},Re=Array.isArray||function(e){return"Array"==f(e)},Le=!!Object.getOwnPropertySymbols&&!i((function(){return!String(Symbol())})),Ne=Le&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Me=F("wks"),Ue=r.Symbol,De=Ne?Ue:Ue&&Ue.withoutSetter||H,Fe=function(e){return b(Me,e)||(Le&&b(Ue,e)?Me[e]=Ue[e]:Me[e]=De("Symbol."+e)),Me[e]},Be=Fe("species"),qe=function(e,t){var n;return Re(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Re(n.prototype)?v(n)&&null===(n=n[Be])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},He=[].push,Ve=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,o=6==e,a=5==e||o;return function(s,c,u,l){for(var f,h,d=Ce(s),g=p(d),v=je(c,u,3),m=se(g.length),y=0,b=l||qe,w=t?b(s,m):n?b(s,0):void 0;m>y;y++)if((a||y in g)&&(h=v(f=g[y],y,d),e))if(t)w[y]=h;else if(h)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:He.call(w,f)}else if(i)return!1;return o?-1:r||i?i:w}},We={forEach:Ve(0),map:Ve(1),filter:Ve(2),some:Ve(3),every:Ve(4),find:Ve(5),findIndex:Ve(6)},ze=function(e,t){var n=[][e];return!!n&&i((function(){n.call(null,t||function(){throw 1},1)}))},Ye=Object.defineProperty,$e={},Ge=function(e){throw e},Ke=function(e,t){if(b($e,e))return $e[e];t||(t={});var n=[][e],r=!!b(t,"ACCESSORS")&&t.ACCESSORS,a=b(t,0)?t[0]:Ge,s=b(t,1)?t[1]:void 0;return $e[e]=!!n&&!i((function(){if(r&&!o)return!0;var e={length:-1};r?Ye(e,1,{enumerable:!0,get:Ge}):e[1]=1,n.call(e,a,s)}))},Xe=We.forEach,Je=ze("forEach"),Qe=Ke("forEach"),Ze=Je&&Qe?[].forEach:function(e){return Xe(this,e,arguments.length>1?arguments[1]:void 0)};Pe({target:"Array",proto:!0,forced:[].forEach!=Ze},{forEach:Ze});var et=function(e,t,n,r){try{return r?t(x(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&x(i.call(e)),t}},tt={},nt=Fe("iterator"),rt=Array.prototype,it=function(e){return void 0!==e&&(tt.Array===e||rt[nt]===e)},ot=function(e,t,n){var r=m(t);r in e?O.f(e,r,u(0,n)):e[r]=n},at={};at[Fe("toStringTag")]="z";var st="[object z]"===String(at),ct=Fe("toStringTag"),ut="Arguments"==f(function(){return arguments}()),lt=st?f:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),ct))?n:ut?f(t):"Object"==(r=f(t))&&"function"==typeof t.callee?"Arguments":r},ft=Fe("iterator"),ht=function(e){if(null!=e)return e[ft]||e["@@iterator"]||tt[lt(e)]},pt=function(e){var t,n,r,i,o,a,s=Ce(e),c="function"==typeof this?this:Array,u=arguments.length,l=u>1?arguments[1]:void 0,f=void 0!==l,h=ht(s),p=0;if(f&&(l=je(l,u>2?arguments[2]:void 0,2)),null==h||c==Array&&it(h))for(n=new c(t=se(s.length));t>p;p++)a=f?l(s[p],p):s[p],ot(n,p,a);else for(o=(i=h.call(s)).next,n=new c;!(r=o.call(i)).done;p++)a=f?et(i,l,[r.value,p],!0):r.value,ot(n,p,a);return n.length=p,n},dt=Fe("iterator"),gt=!1;try{var vt=0,mt={next:function(){return{done:!!vt++}},return:function(){gt=!0}};mt[dt]=function(){return this},Array.from(mt,(function(){throw 2}))}catch(e){}var yt=function(e,t){if(!t&&!gt)return!1;var n=!1;try{var r={};r[dt]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},bt=!yt((function(e){Array.from(e)}));Pe({target:"Array",stat:!0,forced:bt},{from:pt});var wt,_t=Object.keys||function(e){return de(e,ge)},Et=o?Object.defineProperties:function(e,t){x(e);for(var n,r=_t(t),i=r.length,o=0;i>o;)O.f(e,n=r[o++],t[n]);return e},kt=ne("document","documentElement"),St=W("IE_PROTO"),Tt=function(){},xt=function(e){return"<script>"+e+"<\/script>"},At=function(){try{wt=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;At=wt?function(e){e.write(xt("")),e.close();var t=e.parentWindow.Object;return e=null,t}(wt):((t=E("iframe")).style.display="none",kt.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(xt("document.F=Object")),e.close(),e.F);for(var n=ge.length;n--;)delete At.prototype[ge[n]];return At()};z[St]=!0;var Ot=Object.create||function(e,t){var n;return null!==e?(Tt.prototype=x(e),n=new Tt,Tt.prototype=null,n[St]=e):n=At(),void 0===t?n:Et(n,t)},Pt=Fe("unscopables"),It=Array.prototype;null==It[Pt]&&O.f(It,Pt,{configurable:!0,value:Ot(null)});var jt=function(e){It[Pt][e]=!0},Ct=he.includes,Rt=Ke("indexOf",{ACCESSORS:!0,1:0});Pe({target:"Array",proto:!0,forced:!Rt},{includes:function(e){return Ct(this,e,arguments.length>1?arguments[1]:void 0)}}),jt("includes");var Lt,Nt,Mt=ne("navigator","userAgent")||"",Ut=r.process,Dt=Ut&&Ut.versions,Ft=Dt&&Dt.v8;Ft?Nt=(Lt=Ft.split("."))[0]+Lt[1]:Mt&&(!(Lt=Mt.match(/Edge\/(\d+)/))||Lt[1]>=74)&&(Lt=Mt.match(/Chrome\/(\d+)/))&&(Nt=Lt[1]);var Bt=Nt&&+Nt,qt=Fe("species"),Ht=function(e){return Bt>=51||!i((function(){var t=[];return(t.constructor={})[qt]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Vt=We.map,Wt=Ht("map"),zt=Ke("map");Pe({target:"Array",proto:!0,forced:!Wt||!zt},{map:function(e){return Vt(this,e,arguments.length>1?arguments[1]:void 0)}});var Yt=i((function(){_t(1)}));Pe({target:"Object",stat:!0,forced:Yt},{keys:function(e){return _t(Ce(e))}});var $t=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return x(n),function(e){if(!v(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(r),t?e.call(n,r):n.__proto__=r,n}}():void 0),Gt=function(e,t,n){var r,i;return $t&&"function"==typeof(r=t.constructor)&&r!==n&&v(i=r.prototype)&&i!==n.prototype&&$t(e,i),e},Kt=Fe("match"),Xt=function(e){var t;return v(e)&&(void 0!==(t=e[Kt])?!!t:"RegExp"==f(e))},Jt=function(){var e=x(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function Qt(e,t){return RegExp(e,t)}var Zt={UNSUPPORTED_Y:i((function(){var e=Qt("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:i((function(){var e=Qt("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},en=Fe("species"),tn=function(e){var t=ne(e),n=O.f;o&&t&&!t[en]&&n(t,en,{configurable:!0,get:function(){return this}})},nn=O.f,rn=me.f,on=Q.set,an=Fe("match"),sn=r.RegExp,cn=sn.prototype,un=/a/g,ln=/a/g,fn=new sn(un)!==un,hn=Zt.UNSUPPORTED_Y;if(o&&Ae("RegExp",!fn||hn||i((function(){return ln[an]=!1,sn(un)!=un||sn(ln)==ln||"/a/i"!=sn(un,"i")})))){for(var pn=function(e,t){var n,r=this instanceof pn,i=Xt(e),o=void 0===t;if(!r&&i&&e.constructor===pn&&o)return e;fn?i&&!o&&(e=e.source):e instanceof pn&&(o&&(t=Jt.call(e)),e=e.source),hn&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var a=Gt(fn?new sn(e,t):sn(e,t),r?this:cn,pn);return hn&&n&&on(a,{sticky:n}),a},dn=function(e){e in pn||nn(pn,e,{configurable:!0,get:function(){return sn[e]},set:function(t){sn[e]=t}})},gn=rn(sn),vn=0;gn.length>vn;)dn(gn[vn++]);cn.constructor=pn,pn.prototype=cn,Z(r,"RegExp",pn)}tn("RegExp");var mn=RegExp.prototype.exec,yn=String.prototype.replace,bn=mn,wn=function(){var e=/a/,t=/b*/g;return mn.call(e,"a"),mn.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),_n=Zt.UNSUPPORTED_Y||Zt.BROKEN_CARET,En=void 0!==/()??/.exec("")[1];(wn||En||_n)&&(bn=function(e){var t,n,r,i,o=this,a=_n&&o.sticky,s=Jt.call(o),c=o.source,u=0,l=e;return a&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),l=String(e).slice(o.lastIndex),o.lastIndex>0&&(!o.multiline||o.multiline&&"\n"!==e[o.lastIndex-1])&&(c="(?: "+c+")",l=" "+l,u++),n=new RegExp("^(?:"+c+")",s)),En&&(n=new RegExp("^"+c+"$(?!\\s)",s)),wn&&(t=o.lastIndex),r=mn.call(a?n:o,l),a?r?(r.input=r.input.slice(u),r[0]=r[0].slice(u),r.index=o.lastIndex,o.lastIndex+=r[0].length):o.lastIndex=0:wn&&r&&(o.lastIndex=o.global?r.index+r[0].length:t),En&&r&&r.length>1&&yn.call(r[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r});var kn=bn;Pe({target:"RegExp",proto:!0,forced:/./.exec!==kn},{exec:kn});var Sn=RegExp.prototype,Tn=Sn.toString,xn=i((function(){return"/a/b"!=Tn.call({source:"a",flags:"b"})})),An="toString"!=Tn.name;(xn||An)&&Z(RegExp.prototype,"toString",(function(){var e=x(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in Sn)?Jt.call(e):n)}),{unsafe:!0});var On=function(e){if(Xt(e))throw TypeError("The method doesn't accept regular expressions");return e},Pn=Fe("match");Pe({target:"String",proto:!0,forced:!function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[Pn]=!1,"/./"[e](t)}catch(e){}}return!1}("includes")},{includes:function(e){return!!~String(d(this)).indexOf(On(e),arguments.length>1?arguments[1]:void 0)}});var In,jn,Cn,Rn=function(e){return function(t,n){var r,i,o=String(d(t)),a=oe(n),s=o.length;return a<0||a>=s?e?"":void 0:(r=o.charCodeAt(a))<55296||r>56319||a+1===s||(i=o.charCodeAt(a+1))<56320||i>57343?e?o.charAt(a):r:e?o.slice(a,a+2):i-56320+(r-55296<<10)+65536}},Ln={codeAt:Rn(!1),charAt:Rn(!0)},Nn=!i((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Mn=W("IE_PROTO"),Un=Object.prototype,Dn=Nn?Object.getPrototypeOf:function(e){return e=Ce(e),b(e,Mn)?e[Mn]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?Un:null},Fn=Fe("iterator"),Bn=!1;[].keys&&("next"in(Cn=[].keys())?(jn=Dn(Dn(Cn)))!==Object.prototype&&(In=jn):Bn=!0),null==In&&(In={}),b(In,Fn)||P(In,Fn,(function(){return this}));var qn={IteratorPrototype:In,BUGGY_SAFARI_ITERATORS:Bn},Hn=O.f,Vn=Fe("toStringTag"),Wn=function(e,t,n){e&&!b(e=n?e:e.prototype,Vn)&&Hn(e,Vn,{configurable:!0,value:t})},zn=qn.IteratorPrototype,Yn=function(){return this},$n=function(e,t,n){var r=t+" Iterator";return e.prototype=Ot(zn,{next:u(1,n)}),Wn(e,r,!1),tt[r]=Yn,e},Gn=qn.IteratorPrototype,Kn=qn.BUGGY_SAFARI_ITERATORS,Xn=Fe("iterator"),Jn=function(){return this},Qn=function(e,t,n,r,i,o,a){$n(n,t,r);var s,c,u,l=function(e){if(e===i&&g)return g;if(!Kn&&e in p)return p[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},f=t+" Iterator",h=!1,p=e.prototype,d=p[Xn]||p["@@iterator"]||i&&p[i],g=!Kn&&d||l(i),v="Array"==t&&p.entries||d;if(v&&(s=Dn(v.call(new e)),Gn!==Object.prototype&&s.next&&(Dn(s)!==Gn&&($t?$t(s,Gn):"function"!=typeof s[Xn]&&P(s,Xn,Jn)),Wn(s,f,!0))),"values"==i&&d&&"values"!==d.name&&(h=!0,g=function(){return d.call(this)}),p[Xn]!==g&&P(p,Xn,g),tt[t]=g,i)if(c={values:l("values"),keys:o?g:l("keys"),entries:l("entries")},a)for(u in c)(Kn||h||!(u in p))&&Z(p,u,c[u]);else Pe({target:t,proto:!0,forced:Kn||h},c);return c},Zn=Ln.charAt,er=Q.set,tr=Q.getterFor("String Iterator");Qn(String,"String",(function(e){er(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=tr(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=Zn(n,r),t.index+=e.length,{value:e,done:!1})}));var nr={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0};for(var rr in nr){var ir=r[rr],or=ir&&ir.prototype;if(or&&or.forEach!==Ze)try{P(or,"forEach",Ze)}catch(e){or.forEach=Ze}}var ar=document.getElementById("container");document.addEventListener("focusout",(function(e){e.target.classList&&!ar.contains(e.target)&&e.target.classList.remove("tab-focus")})),document.addEventListener("keydown",(function(e){9===e.keyCode&&setTimeout((function(){var e=document.activeElement;e&&e.classList&&!ar.contains(e)&&e.classList.add("tab-focus")}),10)})),function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,r;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r=n.preventDefault,n.preventDefault=function(){r.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}();var sr=me.f,cr={}.toString,ur="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],lr={f:function(e){return ur&&"[object Window]"==cr.call(e)?function(e){try{return sr(e)}catch(e){return ur.slice()}}(e):sr(g(e))}},fr={f:Fe},hr=O.f,pr=function(e){var t=ee.Symbol||(ee.Symbol={});b(t,e)||hr(t,e,{value:fr.f(e)})},dr=We.forEach,gr=W("hidden"),vr=Fe("toPrimitive"),mr=Q.set,yr=Q.getterFor("Symbol"),br=Object.prototype,wr=r.Symbol,_r=ne("JSON","stringify"),Er=T.f,kr=O.f,Sr=lr.f,Tr=c.f,xr=F("symbols"),Ar=F("op-symbols"),Or=F("string-to-symbol-registry"),Pr=F("symbol-to-string-registry"),Ir=F("wks"),jr=r.QObject,Cr=!jr||!jr.prototype||!jr.prototype.findChild,Rr=o&&i((function(){return 7!=Ot(kr({},"a",{get:function(){return kr(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=Er(br,t);r&&delete br[t],kr(e,t,n),r&&e!==br&&kr(br,t,r)}:kr,Lr=function(e,t){var n=xr[e]=Ot(wr.prototype);return mr(n,{type:"Symbol",tag:e,description:t}),o||(n.description=t),n},Nr=Ne?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof wr},Mr=function(e,t,n){e===br&&Mr(Ar,t,n),x(e);var r=m(t,!0);return x(n),b(xr,r)?(n.enumerable?(b(e,gr)&&e[gr][r]&&(e[gr][r]=!1),n=Ot(n,{enumerable:u(0,!1)})):(b(e,gr)||kr(e,gr,u(1,{})),e[gr][r]=!0),Rr(e,r,n)):kr(e,r,n)},Ur=function(e,t){x(e);var n=g(t),r=_t(n).concat(qr(n));return dr(r,(function(t){o&&!Dr.call(n,t)||Mr(e,t,n[t])})),e},Dr=function(e){var t=m(e,!0),n=Tr.call(this,t);return!(this===br&&b(xr,t)&&!b(Ar,t))&&(!(n||!b(this,t)||!b(xr,t)||b(this,gr)&&this[gr][t])||n)},Fr=function(e,t){var n=g(e),r=m(t,!0);if(n!==br||!b(xr,r)||b(Ar,r)){var i=Er(n,r);return!i||!b(xr,r)||b(n,gr)&&n[gr][r]||(i.enumerable=!0),i}},Br=function(e){var t=Sr(g(e)),n=[];return dr(t,(function(e){b(xr,e)||b(z,e)||n.push(e)})),n},qr=function(e){var t=e===br,n=Sr(t?Ar:g(e)),r=[];return dr(n,(function(e){!b(xr,e)||t&&!b(br,e)||r.push(xr[e])})),r};if(Le||(Z((wr=function(){if(this instanceof wr)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=H(e),n=function(e){this===br&&n.call(Ar,e),b(this,gr)&&b(this[gr],t)&&(this[gr][t]=!1),Rr(this,t,u(1,e))};return o&&Cr&&Rr(br,t,{configurable:!0,set:n}),Lr(t,e)}).prototype,"toString",(function(){return yr(this).tag})),Z(wr,"withoutSetter",(function(e){return Lr(H(e),e)})),c.f=Dr,O.f=Mr,T.f=Fr,me.f=lr.f=Br,ye.f=qr,fr.f=function(e){return Lr(Fe(e),e)},o&&(kr(wr.prototype,"description",{configurable:!0,get:function(){return yr(this).description}}),Z(br,"propertyIsEnumerable",Dr,{unsafe:!0}))),Pe({global:!0,wrap:!0,forced:!Le,sham:!Le},{Symbol:wr}),dr(_t(Ir),(function(e){pr(e)})),Pe({target:"Symbol",stat:!0,forced:!Le},{for:function(e){var t=String(e);if(b(Or,t))return Or[t];var n=wr(t);return Or[t]=n,Pr[n]=t,n},keyFor:function(e){if(!Nr(e))throw TypeError(e+" is not a symbol");if(b(Pr,e))return Pr[e]},useSetter:function(){Cr=!0},useSimple:function(){Cr=!1}}),Pe({target:"Object",stat:!0,forced:!Le,sham:!o},{create:function(e,t){return void 0===t?Ot(e):Ur(Ot(e),t)},defineProperty:Mr,defineProperties:Ur,getOwnPropertyDescriptor:Fr}),Pe({target:"Object",stat:!0,forced:!Le},{getOwnPropertyNames:Br,getOwnPropertySymbols:qr}),Pe({target:"Object",stat:!0,forced:i((function(){ye.f(1)}))},{getOwnPropertySymbols:function(e){return ye.f(Ce(e))}}),_r){var Hr=!Le||i((function(){var e=wr();return"[null]"!=_r([e])||"{}"!=_r({a:e})||"{}"!=_r(Object(e))}));Pe({target:"JSON",stat:!0,forced:Hr},{stringify:function(e,t,n){for(var r,i=[e],o=1;arguments.length>o;)i.push(arguments[o++]);if(r=t,(v(t)||void 0!==e)&&!Nr(e))return Re(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!Nr(t))return t}),i[1]=t,_r.apply(null,i)}})}wr.prototype[vr]||P(wr.prototype,vr,wr.prototype.valueOf),Wn(wr,"Symbol"),z[gr]=!0;var Vr=O.f,Wr=r.Symbol;if(o&&"function"==typeof Wr&&(!("description"in Wr.prototype)||void 0!==Wr().description)){var zr={},Yr=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof Yr?new Wr(e):void 0===e?Wr():Wr(e);return""===e&&(zr[t]=!0),t};we(Yr,Wr);var $r=Yr.prototype=Wr.prototype;$r.constructor=Yr;var Gr=$r.toString,Kr="Symbol(test)"==String(Wr("test")),Xr=/^Symbol\((.*)\)[^)]+$/;Vr($r,"description",{configurable:!0,get:function(){var e=v(this)?this.valueOf():this,t=Gr.call(e);if(b(zr,e))return"";var n=Kr?t.slice(7,-1):t.replace(Xr,"$1");return""===n?void 0:n}}),Pe({global:!0,forced:!0},{Symbol:Yr})}pr("iterator");var Jr=he.indexOf,Qr=[].indexOf,Zr=!!Qr&&1/[1].indexOf(1,-0)<0,ei=ze("indexOf"),ti=Ke("indexOf",{ACCESSORS:!0,1:0});Pe({target:"Array",proto:!0,forced:Zr||!ei||!ti},{indexOf:function(e){return Zr?Qr.apply(this,arguments)||0:Jr(this,e,arguments.length>1?arguments[1]:void 0)}});var ni=Q.set,ri=Q.getterFor("Array Iterator"),ii=Qn(Array,"Array",(function(e,t){ni(this,{type:"Array Iterator",target:g(e),index:0,kind:t})}),(function(){var e=ri(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values");tt.Arguments=tt.Array,jt("keys"),jt("values"),jt("entries");var oi=[].join,ai=p!=Object,si=ze("join",",");Pe({target:"Array",proto:!0,forced:ai||!si},{join:function(e){return oi.call(g(this),void 0===e?",":e)}});var ci=Ht("slice"),ui=Ke("slice",{ACCESSORS:!0,0:0,1:2}),li=Fe("species"),fi=[].slice,hi=Math.max;Pe({target:"Array",proto:!0,forced:!ci||!ui},{slice:function(e,t){var n,r,i,o=g(this),a=se(o.length),s=le(e,a),c=le(void 0===t?a:t,a);if(Re(o)&&("function"!=typeof(n=o.constructor)||n!==Array&&!Re(n.prototype)?v(n)&&null===(n=n[li])&&(n=void 0):n=void 0,n===Array||void 0===n))return fi.call(o,s,c);for(r=new(void 0===n?Array:n)(hi(c-s,0)),i=0;s<c;s++,i++)s in o&&ot(r,i,o[s]);return r.length=i,r}});var pi=st?{}.toString:function(){return"[object "+lt(this)+"]"};st||Z(Object.prototype,"toString",pi,{unsafe:!0});var di=Fe("species"),gi=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),vi="$0"==="a".replace(/./,"$0"),mi=Fe("replace"),yi=!!/./[mi]&&""===/./[mi]("a","$0"),bi=!i((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),wi=function(e,t,n,r){var o=Fe(e),a=!i((function(){var t={};return t[o]=function(){return 7},7!=""[e](t)})),s=a&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[di]=function(){return n},n.flags="",n[o]=/./[o]),n.exec=function(){return t=!0,null},n[o](""),!t}));if(!a||!s||"replace"===e&&(!gi||!vi||yi)||"split"===e&&!bi){var c=/./[o],u=n(o,""[e],(function(e,t,n,r,i){return t.exec===kn?a&&!i?{done:!0,value:c.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:vi,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:yi}),l=u[0],f=u[1];Z(String.prototype,e,l),Z(RegExp.prototype,o,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&P(RegExp.prototype[o],"sham",!0)},_i=Ln.charAt,Ei=function(e,t,n){return t+(n?_i(e,t).length:1)},ki=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==f(e))throw TypeError("RegExp#exec called on incompatible receiver");return kn.call(e,t)},Si=Math.max,Ti=Math.min,xi=Math.floor,Ai=/\$([$&'`]|\d\d?|<[^>]*>)/g,Oi=/\$([$&'`]|\d\d?)/g;wi("replace",2,(function(e,t,n,r){var i=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=r.REPLACE_KEEPS_$0,a=i?"$":"$0";return[function(n,r){var i=d(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!i&&o||"string"==typeof r&&-1===r.indexOf(a)){var c=n(t,e,this,r);if(c.done)return c.value}var u=x(e),l=String(this),f="function"==typeof r;f||(r=String(r));var h=u.global;if(h){var p=u.unicode;u.lastIndex=0}for(var d=[];;){var g=ki(u,l);if(null===g)break;if(d.push(g),!h)break;""===String(g[0])&&(u.lastIndex=Ei(l,se(u.lastIndex),p))}for(var v,m="",y=0,b=0;b<d.length;b++){g=d[b];for(var w=String(g[0]),_=Si(Ti(oe(g.index),l.length),0),E=[],k=1;k<g.length;k++)E.push(void 0===(v=g[k])?v:String(v));var S=g.groups;if(f){var T=[w].concat(E,_,l);void 0!==S&&T.push(S);var A=String(r.apply(void 0,T))}else A=s(w,l,_,E,S,r);_>=y&&(m+=l.slice(y,_)+A,y=_+w.length)}return m+l.slice(y)}];function s(e,n,r,i,o,a){var s=r+e.length,c=i.length,u=Oi;return void 0!==o&&(o=Ce(o),u=Ai),t.call(a,u,(function(t,a){var u;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(s);case"<":u=o[a.slice(1,-1)];break;default:var l=+a;if(0===l)return t;if(l>c){var f=xi(l/10);return 0===f?t:f<=c?void 0===i[f-1]?a.charAt(1):i[f-1]+a.charAt(1):t}u=i[l-1]}return void 0===u?"":u}))}}));var Pi=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};wi("search",1,(function(e,t,n){return[function(t){var n=d(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=x(e),o=String(this),a=i.lastIndex;Pi(a,0)||(i.lastIndex=0);var s=ki(i,o);return Pi(i.lastIndex,a)||(i.lastIndex=a),null===s?-1:s.index}]}));var Ii=Fe("species"),ji=function(e,t){var n,r=x(e).constructor;return void 0===r||null==(n=x(r)[Ii])?t:Ie(n)},Ci=[].push,Ri=Math.min,Li=!i((function(){return!RegExp(4294967295,"y")}));wi("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(d(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!Xt(e))return t.call(r,e,i);for(var o,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,f=new RegExp(e.source,u+"g");(o=kn.call(f,r))&&!((a=f.lastIndex)>l&&(c.push(r.slice(l,o.index)),o.length>1&&o.index<r.length&&Ci.apply(c,o.slice(1)),s=o[0].length,l=a,c.length>=i));)f.lastIndex===o.index&&f.lastIndex++;return l===r.length?!s&&f.test("")||c.push(""):c.push(r.slice(l)),c.length>i?c.slice(0,i):c}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=d(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var o=n(r,e,this,i,r!==t);if(o.done)return o.value;var a=x(e),s=String(this),c=ji(a,RegExp),u=a.unicode,l=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(Li?"y":"g"),f=new c(Li?a:"^(?:"+a.source+")",l),h=void 0===i?4294967295:i>>>0;if(0===h)return[];if(0===s.length)return null===ki(f,s)?[s]:[];for(var p=0,d=0,g=[];d<s.length;){f.lastIndex=Li?d:0;var v,m=ki(f,Li?s:s.slice(d));if(null===m||(v=Ri(se(f.lastIndex+(Li?0:d)),s.length))===p)d=Ei(s,d,u);else{if(g.push(s.slice(p,d)),g.length===h)return g;for(var y=1;y<=m.length-1;y++)if(g.push(m[y]),g.length===h)return g;d=p=v}}return g.push(s.slice(p)),g}]}),!Li);var Ni=Fe("iterator"),Mi=Fe("toStringTag"),Ui=ii.values;for(var Di in nr){var Fi=r[Di],Bi=Fi&&Fi.prototype;if(Bi){if(Bi[Ni]!==Ui)try{P(Bi,Ni,Ui)}catch(e){Bi[Ni]=Ui}if(Bi[Mi]||P(Bi,Mi,Di),nr[Di])for(var qi in ii)if(Bi[qi]!==ii[qi])try{P(Bi,qi,ii[qi])}catch(e){Bi[qi]=ii[qi]}}}var Hi=Fe("iterator"),Vi=!i((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[Hi]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),Wi=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},zi=Object.assign,Yi=Object.defineProperty,$i=!zi||i((function(){if(o&&1!==zi({b:1},zi(Yi({},"a",{enumerable:!0,get:function(){Yi(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=zi({},e)[n]||"abcdefghijklmnopqrst"!=_t(zi({},t)).join("")}))?function(e,t){for(var n=Ce(e),r=arguments.length,i=1,a=ye.f,s=c.f;r>i;)for(var u,l=p(arguments[i++]),f=a?_t(l).concat(a(l)):_t(l),h=f.length,d=0;h>d;)u=f[d++],o&&!s.call(l,u)||(n[u]=l[u]);return n}:zi,Gi=/[^\0-\u007E]/,Ki=/[.\u3002\uFF0E\uFF61]/g,Xi="Overflow: input needs wider integers to process",Ji=Math.floor,Qi=String.fromCharCode,Zi=function(e){return e+22+75*(e<26)},eo=function(e,t,n){var r=0;for(e=n?Ji(e/700):e>>1,e+=Ji(e/t);e>455;r+=36)e=Ji(e/35);return Ji(r+36*e/(e+38))},to=function(e){var t,n,r=[],i=(e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=e.charCodeAt(n++);56320==(64512&o)?t.push(((1023&i)<<10)+(1023&o)+65536):(t.push(i),n--)}else t.push(i)}return t}(e)).length,o=128,a=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&r.push(Qi(n));var c=r.length,u=c;for(c&&r.push("-");u<i;){var l=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=o&&n<l&&(l=n);var f=u+1;if(l-o>Ji((2147483647-a)/f))throw RangeError(Xi);for(a+=(l-o)*f,o=l,t=0;t<e.length;t++){if((n=e[t])<o&&++a>2147483647)throw RangeError(Xi);if(n==o){for(var h=a,p=36;;p+=36){var d=p<=s?1:p>=s+26?26:p-s;if(h<d)break;var g=h-d,v=36-d;r.push(Qi(Zi(d+g%v))),h=Ji(g/v)}r.push(Qi(Zi(h))),s=eo(a,f,u==c),a=0,++u}}++a,++o}return r.join("")},no=function(e,t,n){for(var r in t)Z(e,r,t[r],n);return e},ro=function(e){var t=ht(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return x(t.call(e))},io=ne("fetch"),oo=ne("Headers"),ao=Fe("iterator"),so=Q.set,co=Q.getterFor("URLSearchParams"),uo=Q.getterFor("URLSearchParamsIterator"),lo=/\+/g,fo=Array(4),ho=function(e){return fo[e-1]||(fo[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},po=function(e){try{return decodeURIComponent(e)}catch(t){return e}},go=function(e){var t=e.replace(lo," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(ho(n--),po);return t}},vo=/[!'()~]|%20/g,mo={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},yo=function(e){return mo[e]},bo=function(e){return encodeURIComponent(e).replace(vo,yo)},wo=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o<i.length;)(n=i[o++]).length&&(r=n.split("="),e.push({key:go(r.shift()),value:go(r.join("="))}))},_o=function(e){this.entries.length=0,wo(this.entries,e)},Eo=function(e,t){if(e<t)throw TypeError("Not enough arguments")},ko=$n((function(e,t){so(this,{type:"URLSearchParamsIterator",iterator:ro(co(e).entries),kind:t})}),"Iterator",(function(){var e=uo(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n})),So=function(){Wi(this,So,"URLSearchParams");var e,t,n,r,i,o,a,s,c,u=arguments.length>0?arguments[0]:void 0,l=this,f=[];if(so(l,{type:"URLSearchParams",entries:f,updateURL:function(){},updateSearchParams:_o}),void 0!==u)if(v(u))if("function"==typeof(e=ht(u)))for(n=(t=e.call(u)).next;!(r=n.call(t)).done;){if((a=(o=(i=ro(x(r.value))).next).call(i)).done||(s=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");f.push({key:a.value+"",value:s.value+""})}else for(c in u)b(u,c)&&f.push({key:c,value:u[c]+""});else wo(f,"string"==typeof u?"?"===u.charAt(0)?u.slice(1):u:u+"")},To=So.prototype;no(To,{append:function(e,t){Eo(arguments.length,2);var n=co(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){Eo(arguments.length,1);for(var t=co(this),n=t.entries,r=e+"",i=0;i<n.length;)n[i].key===r?n.splice(i,1):i++;t.updateURL()},get:function(e){Eo(arguments.length,1);for(var t=co(this).entries,n=e+"",r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){Eo(arguments.length,1);for(var t=co(this).entries,n=e+"",r=[],i=0;i<t.length;i++)t[i].key===n&&r.push(t[i].value);return r},has:function(e){Eo(arguments.length,1);for(var t=co(this).entries,n=e+"",r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){Eo(arguments.length,1);for(var n,r=co(this),i=r.entries,o=!1,a=e+"",s=t+"",c=0;c<i.length;c++)(n=i[c]).key===a&&(o?i.splice(c--,1):(o=!0,n.value=s));o||i.push({key:a,value:s}),r.updateURL()},sort:function(){var e,t,n,r=co(this),i=r.entries,o=i.slice();for(i.length=0,n=0;n<o.length;n++){for(e=o[n],t=0;t<n;t++)if(i[t].key>e.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=co(this).entries,r=je(e,arguments.length>1?arguments[1]:void 0,3),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new ko(this,"keys")},values:function(){return new ko(this,"values")},entries:function(){return new ko(this,"entries")}},{enumerable:!0}),Z(To,ao,To.entries),Z(To,"toString",(function(){for(var e,t=co(this).entries,n=[],r=0;r<t.length;)e=t[r++],n.push(bo(e.key)+"="+bo(e.value));return n.join("&")}),{enumerable:!0}),Wn(So,"URLSearchParams"),Pe({global:!0,forced:!Vi},{URLSearchParams:So}),Vi||"function"!=typeof io||"function"!=typeof oo||Pe({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,r,i=[e];return arguments.length>1&&(t=arguments[1],v(t)&&(n=t.body,"URLSearchParams"===lt(n)&&((r=t.headers?new oo(t.headers):new oo).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=Ot(t,{body:u(0,String(n)),headers:u(0,r)}))),i.push(t)),io.apply(this,i)}});var xo,Ao={URLSearchParams:So,getState:co},Oo=Ln.codeAt,Po=r.URL,Io=Ao.URLSearchParams,jo=Ao.getState,Co=Q.set,Ro=Q.getterFor("URL"),Lo=Math.floor,No=Math.pow,Mo=/[A-Za-z]/,Uo=/[\d+-.A-Za-z]/,Do=/\d/,Fo=/^(0x|0X)/,Bo=/^[0-7]+$/,qo=/^\d+$/,Ho=/^[\dA-Fa-f]+$/,Vo=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,Wo=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,zo=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,Yo=/[\u0009\u000A\u000D]/g,$o=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=Ko(t.slice(1,-1))))return"Invalid host";e.host=n}else if(ra(e)){if(t=function(e){var t,n,r=[],i=e.toLowerCase().replace(Ki,".").split(".");for(t=0;t<i.length;t++)n=i[t],r.push(Gi.test(n)?"xn--"+to(n):n);return r.join(".")}(t),Vo.test(t))return"Invalid host";if(null===(n=Go(t)))return"Invalid host";e.host=n}else{if(Wo.test(t))return"Invalid host";for(n="",r=pt(t),i=0;i<r.length;i++)n+=ta(r[i],Jo);e.host=n}},Go=function(e){var t,n,r,i,o,a,s,c=e.split(".");if(c.length&&""==c[c.length-1]&&c.pop(),(t=c.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=c[r]))return e;if(o=10,i.length>1&&"0"==i.charAt(0)&&(o=Fo.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)a=0;else{if(!(10==o?qo:8==o?Bo:Ho).test(i))return e;a=parseInt(i,o)}n.push(a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=No(256,5-t))return null}else if(a>255)return null;for(s=n.pop(),r=0;r<n.length;r++)s+=n[r]*No(256,3-r);return s},Ko=function(e){var t,n,r,i,o,a,s,c=[0,0,0,0,0,0,0,0],u=0,l=null,f=0,h=function(){return e.charAt(f)};if(":"==h()){if(":"!=e.charAt(1))return;f+=2,l=++u}for(;h();){if(8==u)return;if(":"!=h()){for(t=n=0;n<4&&Ho.test(h());)t=16*t+parseInt(h(),16),f++,n++;if("."==h()){if(0==n)return;if(f-=n,u>6)return;for(r=0;h();){if(i=null,r>0){if(!("."==h()&&r<4))return;f++}if(!Do.test(h()))return;for(;Do.test(h());){if(o=parseInt(h(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;f++}c[u]=256*c[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==h()){if(f++,!h())return}else if(h())return;c[u++]=t}else{if(null!==l)return;f++,l=++u}}if(null!==l)for(a=u-l,u=7;0!=u&&a>0;)s=c[u],c[u--]=c[l+a-1],c[l+--a]=s;else if(8!=u)return;return c},Xo=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=Lo(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},Jo={},Qo=$i({},Jo,{" ":1,'"':1,"<":1,">":1,"`":1}),Zo=$i({},Qo,{"#":1,"?":1,"{":1,"}":1}),ea=$i({},Zo,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),ta=function(e,t){var n=Oo(e,0);return n>32&&n<127&&!b(t,e)?e:encodeURIComponent(e)},na={ftp:21,file:null,http:80,https:443,ws:80,wss:443},ra=function(e){return b(na,e.scheme)},ia=function(e){return""!=e.username||""!=e.password},oa=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},aa=function(e,t){var n;return 2==e.length&&Mo.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},sa=function(e){var t;return e.length>1&&aa(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},ca=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&aa(t[0],!0)||t.pop()},ua=function(e){return"."===e||"%2e"===e.toLowerCase()},la={},fa={},ha={},pa={},da={},ga={},va={},ma={},ya={},ba={},wa={},_a={},Ea={},ka={},Sa={},Ta={},xa={},Aa={},Oa={},Pa={},Ia={},ja=function(e,t,n,r){var i,o,a,s,c,u=n||la,l=0,f="",h=!1,p=!1,d=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(zo,"")),t=t.replace(Yo,""),i=pt(t);l<=i.length;){switch(o=i[l],u){case la:if(!o||!Mo.test(o)){if(n)return"Invalid scheme";u=ha;continue}f+=o.toLowerCase(),u=fa;break;case fa:if(o&&(Uo.test(o)||"+"==o||"-"==o||"."==o))f+=o.toLowerCase();else{if(":"!=o){if(n)return"Invalid scheme";f="",u=ha,l=0;continue}if(n&&(ra(e)!=b(na,f)||"file"==f&&(ia(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(ra(e)&&na[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?u=ka:ra(e)&&r&&r.scheme==e.scheme?u=pa:ra(e)?u=ma:"/"==i[l+1]?(u=da,l++):(e.cannotBeABaseURL=!0,e.path.push(""),u=Oa)}break;case ha:if(!r||r.cannotBeABaseURL&&"#"!=o)return"Invalid scheme";if(r.cannotBeABaseURL&&"#"==o){e.scheme=r.scheme,e.path=r.path.slice(),e.query=r.query,e.fragment="",e.cannotBeABaseURL=!0,u=Ia;break}u="file"==r.scheme?ka:ga;continue;case pa:if("/"!=o||"/"!=i[l+1]){u=ga;continue}u=ya,l++;break;case da:if("/"==o){u=ba;break}u=Aa;continue;case ga:if(e.scheme=r.scheme,o==xo)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query;else if("/"==o||"\\"==o&&ra(e))u=va;else if("?"==o)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query="",u=Pa;else{if("#"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.path.pop(),u=Aa;continue}e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query,e.fragment="",u=Ia}break;case va:if(!ra(e)||"/"!=o&&"\\"!=o){if("/"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,u=Aa;continue}u=ba}else u=ya;break;case ma:if(u=ya,"/"!=o||"/"!=f.charAt(l+1))continue;l++;break;case ya:if("/"!=o&&"\\"!=o){u=ba;continue}break;case ba:if("@"==o){h&&(f="%40"+f),h=!0,a=pt(f);for(var g=0;g<a.length;g++){var v=a[g];if(":"!=v||d){var m=ta(v,ea);d?e.password+=m:e.username+=m}else d=!0}f=""}else if(o==xo||"/"==o||"?"==o||"#"==o||"\\"==o&&ra(e)){if(h&&""==f)return"Invalid authority";l-=pt(f).length+1,f="",u=wa}else f+=o;break;case wa:case _a:if(n&&"file"==e.scheme){u=Ta;continue}if(":"!=o||p){if(o==xo||"/"==o||"?"==o||"#"==o||"\\"==o&&ra(e)){if(ra(e)&&""==f)return"Invalid host";if(n&&""==f&&(ia(e)||null!==e.port))return;if(s=$o(e,f))return s;if(f="",u=xa,n)return;continue}"["==o?p=!0:"]"==o&&(p=!1),f+=o}else{if(""==f)return"Invalid host";if(s=$o(e,f))return s;if(f="",u=Ea,n==_a)return}break;case Ea:if(!Do.test(o)){if(o==xo||"/"==o||"?"==o||"#"==o||"\\"==o&&ra(e)||n){if(""!=f){var y=parseInt(f,10);if(y>65535)return"Invalid port";e.port=ra(e)&&y===na[e.scheme]?null:y,f=""}if(n)return;u=xa;continue}return"Invalid port"}f+=o;break;case ka:if(e.scheme="file","/"==o||"\\"==o)u=Sa;else{if(!r||"file"!=r.scheme){u=Aa;continue}if(o==xo)e.host=r.host,e.path=r.path.slice(),e.query=r.query;else if("?"==o)e.host=r.host,e.path=r.path.slice(),e.query="",u=Pa;else{if("#"!=o){sa(i.slice(l).join(""))||(e.host=r.host,e.path=r.path.slice(),ca(e)),u=Aa;continue}e.host=r.host,e.path=r.path.slice(),e.query=r.query,e.fragment="",u=Ia}}break;case Sa:if("/"==o||"\\"==o){u=Ta;break}r&&"file"==r.scheme&&!sa(i.slice(l).join(""))&&(aa(r.path[0],!0)?e.path.push(r.path[0]):e.host=r.host),u=Aa;continue;case Ta:if(o==xo||"/"==o||"\\"==o||"?"==o||"#"==o){if(!n&&aa(f))u=Aa;else if(""==f){if(e.host="",n)return;u=xa}else{if(s=$o(e,f))return s;if("localhost"==e.host&&(e.host=""),n)return;f="",u=xa}continue}f+=o;break;case xa:if(ra(e)){if(u=Aa,"/"!=o&&"\\"!=o)continue}else if(n||"?"!=o)if(n||"#"!=o){if(o!=xo&&(u=Aa,"/"!=o))continue}else e.fragment="",u=Ia;else e.query="",u=Pa;break;case Aa:if(o==xo||"/"==o||"\\"==o&&ra(e)||!n&&("?"==o||"#"==o)){if(".."===(c=(c=f).toLowerCase())||"%2e."===c||".%2e"===c||"%2e%2e"===c?(ca(e),"/"==o||"\\"==o&&ra(e)||e.path.push("")):ua(f)?"/"==o||"\\"==o&&ra(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&aa(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(o==xo||"?"==o||"#"==o))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==o?(e.query="",u=Pa):"#"==o&&(e.fragment="",u=Ia)}else f+=ta(o,Zo);break;case Oa:"?"==o?(e.query="",u=Pa):"#"==o?(e.fragment="",u=Ia):o!=xo&&(e.path[0]+=ta(o,Jo));break;case Pa:n||"#"!=o?o!=xo&&("'"==o&&ra(e)?e.query+="%27":e.query+="#"==o?"%23":ta(o,Jo)):(e.fragment="",u=Ia);break;case Ia:o!=xo&&(e.fragment+=ta(o,Qo))}l++}},Ca=function(e){var t,n,r=Wi(this,Ca,"URL"),i=arguments.length>1?arguments[1]:void 0,a=String(e),s=Co(r,{type:"URL"});if(void 0!==i)if(i instanceof Ca)t=Ro(i);else if(n=ja(t={},String(i)))throw TypeError(n);if(n=ja(s,a,null,t))throw TypeError(n);var c=s.searchParams=new Io,u=jo(c);u.updateSearchParams(s.query),u.updateURL=function(){s.query=String(c)||null},o||(r.href=La.call(r),r.origin=Na.call(r),r.protocol=Ma.call(r),r.username=Ua.call(r),r.password=Da.call(r),r.host=Fa.call(r),r.hostname=Ba.call(r),r.port=qa.call(r),r.pathname=Ha.call(r),r.search=Va.call(r),r.searchParams=Wa.call(r),r.hash=za.call(r))},Ra=Ca.prototype,La=function(){var e=Ro(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,a=e.path,s=e.query,c=e.fragment,u=t+":";return null!==i?(u+="//",ia(e)&&(u+=n+(r?":"+r:"")+"@"),u+=Xo(i),null!==o&&(u+=":"+o)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+a.join("/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},Na=function(){var e=Ro(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&ra(e)?t+"://"+Xo(e.host)+(null!==n?":"+n:""):"null"},Ma=function(){return Ro(this).scheme+":"},Ua=function(){return Ro(this).username},Da=function(){return Ro(this).password},Fa=function(){var e=Ro(this),t=e.host,n=e.port;return null===t?"":null===n?Xo(t):Xo(t)+":"+n},Ba=function(){var e=Ro(this).host;return null===e?"":Xo(e)},qa=function(){var e=Ro(this).port;return null===e?"":String(e)},Ha=function(){var e=Ro(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Va=function(){var e=Ro(this).query;return e?"?"+e:""},Wa=function(){return Ro(this).searchParams},za=function(){var e=Ro(this).fragment;return e?"#"+e:""},Ya=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&Et(Ra,{href:Ya(La,(function(e){var t=Ro(this),n=String(e),r=ja(t,n);if(r)throw TypeError(r);jo(t.searchParams).updateSearchParams(t.query)})),origin:Ya(Na),protocol:Ya(Ma,(function(e){var t=Ro(this);ja(t,String(e)+":",la)})),username:Ya(Ua,(function(e){var t=Ro(this),n=pt(String(e));if(!oa(t)){t.username="";for(var r=0;r<n.length;r++)t.username+=ta(n[r],ea)}})),password:Ya(Da,(function(e){var t=Ro(this),n=pt(String(e));if(!oa(t)){t.password="";for(var r=0;r<n.length;r++)t.password+=ta(n[r],ea)}})),host:Ya(Fa,(function(e){var t=Ro(this);t.cannotBeABaseURL||ja(t,String(e),wa)})),hostname:Ya(Ba,(function(e){var t=Ro(this);t.cannotBeABaseURL||ja(t,String(e),_a)})),port:Ya(qa,(function(e){var t=Ro(this);oa(t)||(""==(e=String(e))?t.port=null:ja(t,e,Ea))})),pathname:Ya(Ha,(function(e){var t=Ro(this);t.cannotBeABaseURL||(t.path=[],ja(t,e+"",xa))})),search:Ya(Va,(function(e){var t=Ro(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",ja(t,e,Pa)),jo(t.searchParams).updateSearchParams(t.query)})),searchParams:Ya(Wa),hash:Ya(za,(function(e){var t=Ro(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",ja(t,e,Ia)):t.fragment=null}))}),Z(Ra,"toJSON",(function(){return La.call(this)}),{enumerable:!0}),Z(Ra,"toString",(function(){return La.call(this)}),{enumerable:!0}),Po){var $a=Po.createObjectURL,Ga=Po.revokeObjectURL;$a&&Z(Ca,"createObjectURL",(function(e){return $a.apply(Po,arguments)})),Ga&&Z(Ca,"revokeObjectURL",(function(e){return Ga.apply(Po,arguments)}))}function Ka(e){return(Ka="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 Xa(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ja(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Qa(e,t,n){return t&&Ja(e.prototype,t),n&&Ja(e,n),e}function Za(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function es(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ts(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?es(Object(n),!0).forEach((function(t){Za(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):es(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ns(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function rs(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,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,t)||os(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 is(e){return function(e){if(Array.isArray(e))return as(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||os(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function os(e,t){if(e){if("string"==typeof e)return as(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(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?as(e,t):void 0}}function as(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Wn(Ca,"URL"),Pe({global:!0,forced:!Vi,sham:!o},{URL:Ca}),function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},r=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},i=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};(function(){try{var t=e.URLSearchParams;return"a=1"===new t("?a=1").toString()&&"function"==typeof t.prototype.set}catch(e){return!1}})()||function(){var i=function e(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var n=Ka(t);if("undefined"===n);else if("string"===n)""!==t&&this._fromString(t);else if(t instanceof e){var r=this;t.forEach((function(e,t){r.append(t,e)}))}else{if(null===t||"object"!==n)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var i=0;i<t.length;i++){var o=t[i];if("[object Array]"!==Object.prototype.toString.call(o)&&2===o.length)throw new TypeError("Expected [string, any] as entry at index "+i+" of URLSearchParams's input");this.append(o[0],o[1])}else for(var a in t)t.hasOwnProperty(a)&&this.append(a,t[a])}},o=i.prototype;o.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},o.delete=function(e){delete this._entries[e]},o.get=function(e){return e in this._entries?this._entries[e][0]:null},o.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},o.has=function(e){return e in this._entries},o.set=function(e,t){this._entries[e]=[String(t)]},o.forEach=function(e,t){var n;for(var r in this._entries)if(this._entries.hasOwnProperty(r)){n=this._entries[r];for(var i=0;i<n.length;i++)e.call(t,n[i],r,this)}},o.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},o.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},o.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(o[Symbol.iterator]=o.entries),o.toString=function(){var e=[];return this.forEach((function(t,n){e.push(r(n)+"="+r(t))})),e.join("&")},e.URLSearchParams=i}();var o=e.URLSearchParams.prototype;"function"!=typeof o.sort&&(o.sort=function(){var e=this,t=[];this.forEach((function(n,r){t.push([r,n]),e._entries||e.delete(r)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof o._fromString&&Object.defineProperty(o,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var r,o=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<o.length;n++)r=o[n].split("="),this.append(i(r[0]),r.length>1?i(r[1]):"")}})}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var r,i=document;if(n&&(void 0===e.location||n!==e.location.href)){(r=(i=document.implementation.createHTMLDocument("")).createElement("base")).href=n,i.head.appendChild(r);try{if(0!==r.href.indexOf(n))throw new Error(r.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var o=i.createElement("a");if(o.href=t,r&&(i.body.appendChild(o),o.href=o.href),":"===o.protocol||!/:/.test(o.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:o});var a=new e.URLSearchParams(this.search),s=!0,c=!0,u=this;["append","delete","set"].forEach((function(e){var t=a[e];a[e]=function(){t.apply(a,arguments),s&&(c=!1,u.search=a.toString(),c=!0)}})),Object.defineProperty(this,"searchParams",{value:a,enumerable:!0});var l=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==l&&(l=this.search,c&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},r=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(r,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(r,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(r,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),pr("asyncIterator");var ss=Fe("isConcatSpreadable"),cs=Bt>=51||!i((function(){var e=[];return e[ss]=!1,e.concat()[0]!==e})),us=Ht("concat"),ls=function(e){if(!v(e))return!1;var t=e[ss];return void 0!==t?!!t:Re(e)};Pe({target:"Array",proto:!0,forced:!cs||!us},{concat:function(e){var t,n,r,i,o,a=Ce(this),s=qe(a,0),c=0;for(t=-1,r=arguments.length;t<r;t++)if(o=-1===t?a:arguments[t],ls(o)){if(c+(i=se(o.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<i;n++,c++)n in o&&ot(s,c,o[n])}else{if(c>=9007199254740991)throw TypeError("Maximum allowed index exceeded");ot(s,c++,o)}return s.length=c,s}}),Pe({target:"Object",stat:!0,forced:Object.assign!==$i},{assign:$i});var fs=T.f,hs=i((function(){fs(1)}));Pe({target:"Object",stat:!0,forced:!o||hs,sham:!o},{getOwnPropertyDescriptor:function(e,t){return fs(g(e),t)}});var ps,ds,gs,vs=r.Promise,ms=t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,r,i,o){var a,s,c,u,l,f,h,p=je(n,r,i?2:1);if(o)a=e;else{if("function"!=typeof(s=ht(e)))throw TypeError("Target is not iterable");if(it(s)){for(c=0,u=se(e.length);u>c;c++)if((l=i?p(x(h=e[c])[0],h[1]):p(e[c]))&&l instanceof t)return l;return new t(!1)}a=s.call(e)}for(f=a.next;!(h=f.call(a)).done;)if("object"==typeof(l=et(a,p,h.value,i))&&l&&l instanceof t)return l;return new t(!1)}).stop=function(e){return new t(!0,e)}})),ys=/(iphone|ipod|ipad).*applewebkit/i.test(Mt),bs=r.location,ws=r.setImmediate,_s=r.clearImmediate,Es=r.process,ks=r.MessageChannel,Ss=r.Dispatch,Ts=0,xs={},As=function(e){if(xs.hasOwnProperty(e)){var t=xs[e];delete xs[e],t()}},Os=function(e){return function(){As(e)}},Ps=function(e){As(e.data)},Is=function(e){r.postMessage(e+"",bs.protocol+"//"+bs.host)};ws&&_s||(ws=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return xs[++Ts]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},ps(Ts),Ts},_s=function(e){delete xs[e]},"process"==f(Es)?ps=function(e){Es.nextTick(Os(e))}:Ss&&Ss.now?ps=function(e){Ss.now(Os(e))}:ks&&!ys?(gs=(ds=new ks).port2,ds.port1.onmessage=Ps,ps=je(gs.postMessage,gs,1)):!r.addEventListener||"function"!=typeof postMessage||r.importScripts||i(Is)||"file:"===bs.protocol?ps="onreadystatechange"in E("script")?function(e){kt.appendChild(E("script")).onreadystatechange=function(){kt.removeChild(this),As(e)}}:function(e){setTimeout(Os(e),0)}:(ps=Is,r.addEventListener("message",Ps,!1)));var js,Cs,Rs,Ls,Ns,Ms,Us,Ds,Fs={set:ws,clear:_s},Bs=T.f,qs=Fs.set,Hs=r.MutationObserver||r.WebKitMutationObserver,Vs=r.process,Ws=r.Promise,zs="process"==f(Vs),Ys=Bs(r,"queueMicrotask"),$s=Ys&&Ys.value;$s||(js=function(){var e,t;for(zs&&(e=Vs.domain)&&e.exit();Cs;){t=Cs.fn,Cs=Cs.next;try{t()}catch(e){throw Cs?Ls():Rs=void 0,e}}Rs=void 0,e&&e.enter()},zs?Ls=function(){Vs.nextTick(js)}:Hs&&!ys?(Ns=!0,Ms=document.createTextNode(""),new Hs(js).observe(Ms,{characterData:!0}),Ls=function(){Ms.data=Ns=!Ns}):Ws&&Ws.resolve?(Us=Ws.resolve(void 0),Ds=Us.then,Ls=function(){Ds.call(Us,js)}):Ls=function(){qs.call(r,js)});var Gs,Ks,Xs,Js,Qs=$s||function(e){var t={fn:e,next:void 0};Rs&&(Rs.next=t),Cs||(Cs=t,Ls()),Rs=t},Zs=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=Ie(t),this.reject=Ie(n)},ec={f:function(e){return new Zs(e)}},tc=function(e,t){if(x(e),v(t)&&t.constructor===e)return t;var n=ec.f(e);return(0,n.resolve)(t),n.promise},nc=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},rc=Fs.set,ic=Fe("species"),oc="Promise",ac=Q.get,sc=Q.set,cc=Q.getterFor(oc),uc=vs,lc=r.TypeError,fc=r.document,hc=r.process,pc=ne("fetch"),dc=ec.f,gc=dc,vc="process"==f(hc),mc=!!(fc&&fc.createEvent&&r.dispatchEvent),yc=Ae(oc,(function(){if(!(M(uc)!==String(uc))){if(66===Bt)return!0;if(!vc&&"function"!=typeof PromiseRejectionEvent)return!0}if(Bt>=51&&/native code/.test(uc))return!1;var e=uc.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[ic]=t,!(e.then((function(){}))instanceof t)})),bc=yc||!yt((function(e){uc.all(e).catch((function(){}))})),wc=function(e){var t;return!(!v(e)||"function"!=typeof(t=e.then))&&t},_c=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;Qs((function(){for(var i=t.value,o=1==t.state,a=0;r.length>a;){var s,c,u,l=r[a++],f=o?l.ok:l.fail,h=l.resolve,p=l.reject,d=l.domain;try{f?(o||(2===t.rejection&&Tc(e,t),t.rejection=1),!0===f?s=i:(d&&d.enter(),s=f(i),d&&(d.exit(),u=!0)),s===l.promise?p(lc("Promise-chain cycle")):(c=wc(s))?c.call(s,h,p):h(s)):p(i)}catch(e){d&&!u&&d.exit(),p(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&kc(e,t)}))}},Ec=function(e,t,n){var i,o;mc?((i=fc.createEvent("Event")).promise=t,i.reason=n,i.initEvent(e,!1,!0),r.dispatchEvent(i)):i={promise:t,reason:n},(o=r["on"+e])?o(i):"unhandledrejection"===e&&function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},kc=function(e,t){rc.call(r,(function(){var n,r=t.value;if(Sc(t)&&(n=nc((function(){vc?hc.emit("unhandledRejection",r,e):Ec("unhandledrejection",e,r)})),t.rejection=vc||Sc(t)?2:1,n.error))throw n.value}))},Sc=function(e){return 1!==e.rejection&&!e.parent},Tc=function(e,t){rc.call(r,(function(){vc?hc.emit("rejectionHandled",e):Ec("rejectionhandled",e,t.value)}))},xc=function(e,t,n,r){return function(i){e(t,n,i,r)}},Ac=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,_c(e,t,!0))},Oc=function(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw lc("Promise can't be resolved itself");var i=wc(n);i?Qs((function(){var r={done:!1};try{i.call(n,xc(Oc,e,r,t),xc(Ac,e,r,t))}catch(n){Ac(e,r,n,t)}})):(t.value=n,t.state=1,_c(e,t,!1))}catch(n){Ac(e,{done:!1},n,t)}}};yc&&(uc=function(e){Wi(this,uc,oc),Ie(e),Gs.call(this);var t=ac(this);try{e(xc(Oc,this,t),xc(Ac,this,t))}catch(e){Ac(this,t,e)}},(Gs=function(e){sc(this,{type:oc,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=no(uc.prototype,{then:function(e,t){var n=cc(this),r=dc(ji(this,uc));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=vc?hc.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&_c(this,n,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),Ks=function(){var e=new Gs,t=ac(e);this.promise=e,this.resolve=xc(Oc,e,t),this.reject=xc(Ac,e,t)},ec.f=dc=function(e){return e===uc||e===Xs?new Ks(e):gc(e)},"function"==typeof vs&&(Js=vs.prototype.then,Z(vs.prototype,"then",(function(e,t){var n=this;return new uc((function(e,t){Js.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof pc&&Pe({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return tc(uc,pc.apply(r,arguments))}}))),Pe({global:!0,wrap:!0,forced:yc},{Promise:uc}),Wn(uc,oc,!1),tn(oc),Xs=ne(oc),Pe({target:oc,stat:!0,forced:yc},{reject:function(e){var t=dc(this);return t.reject.call(void 0,e),t.promise}}),Pe({target:oc,stat:!0,forced:yc},{resolve:function(e){return tc(this,e)}}),Pe({target:oc,stat:!0,forced:bc},{all:function(e){var t=this,n=dc(t),r=n.resolve,i=n.reject,o=nc((function(){var n=Ie(t.resolve),o=[],a=0,s=1;ms(e,(function(e){var c=a++,u=!1;o.push(void 0),s++,n.call(t,e).then((function(e){u||(u=!0,o[c]=e,--s||r(o))}),i)})),--s||r(o)}));return o.error&&i(o.value),n.promise},race:function(e){var t=this,n=dc(t),r=n.reject,i=nc((function(){var i=Ie(t.resolve);ms(e,(function(e){i.call(t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}}); +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ +var Pc=function(e,t){return(Pc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function Ic(e,t){function n(){this.constructor=e}Pc(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var jc,Cc,Rc=function(){return(Rc=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function Lc(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function Nc(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(Lc(arguments[t]));return e}!function(e){e.Fatal="fatal",e.Error="error",e.Warning="warning",e.Log="log",e.Info="info",e.Debug="debug",e.Critical="critical"}(jc||(jc={})),function(e){e.fromString=function(t){switch(t){case"debug":return e.Debug;case"info":return e.Info;case"warn":case"warning":return e.Warning;case"error":return e.Error;case"fatal":return e.Fatal;case"critical":return e.Critical;case"log":default:return e.Log}}}(jc||(jc={})),function(e){e.Unknown="unknown",e.Skipped="skipped",e.Success="success",e.RateLimit="rate_limit",e.Invalid="invalid",e.Failed="failed"}(Cc||(Cc={})),function(e){e.fromHttpCode=function(t){return t>=200&&t<300?e.Success:429===t?e.RateLimit:t>=400&&t<500?e.Invalid:t>=500?e.Failed:e.Unknown}}(Cc||(Cc={}));var Mc=O.f,Uc=Function.prototype,Dc=Uc.toString,Fc=/^\s*function ([^ (]*)/;o&&!("name"in Uc)&&Mc(Uc,"name",{configurable:!0,get:function(){try{return Dc.call(this).match(Fc)[1]}catch(e){return""}}});var Bc=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,t){return e.__proto__=t,e}:function(e,t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n]);return e});var qc=function(e){function t(t){var n=this.constructor,r=e.call(this,t)||this;return r.message=t,r.name=n.prototype.constructor.name,Bc(r,n.prototype),r}return Ic(t,e),t}(Error);function Hc(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return Jc(e,Error)}}function Vc(e){return"[object ErrorEvent]"===Object.prototype.toString.call(e)}function Wc(e){return"[object DOMError]"===Object.prototype.toString.call(e)}function zc(e){return"[object String]"===Object.prototype.toString.call(e)}function Yc(e){return null===e||"object"!==Ka(e)&&"function"!=typeof e}function $c(e){return"[object Object]"===Object.prototype.toString.call(e)}function Gc(e){return"undefined"!=typeof Event&&Jc(e,Event)}function Kc(e){return"undefined"!=typeof Element&&Jc(e,Element)}function Xc(e){return Boolean(e&&e.then&&"function"==typeof e.then)}function Jc(e,t){try{return e instanceof t}catch(e){return!1}}wi("match",1,(function(e,t,n){return[function(t){var n=d(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=x(e),o=String(this);if(!i.global)return ki(i,o);var a=i.unicode;i.lastIndex=0;for(var s,c=[],u=0;null!==(s=ki(i,o));){var l=String(s[0]);c[u]=l,""===l&&(i.lastIndex=Ei(o,se(i.lastIndex),a)),u++}return 0===u?null:c}]}));var Qc,Zc="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,eu=O.f,tu=r.Int8Array,nu=tu&&tu.prototype,ru=r.Uint8ClampedArray,iu=ru&&ru.prototype,ou=tu&&Dn(tu),au=nu&&Dn(nu),su=Object.prototype,cu=su.isPrototypeOf,uu=Fe("toStringTag"),lu=H("TYPED_ARRAY_TAG"),fu=Zc&&!!$t&&"Opera"!==lt(r.opera),hu=!1,pu={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},du=function(e){return v(e)&&b(pu,lt(e))};for(Qc in pu)r[Qc]||(fu=!1);if((!fu||"function"!=typeof ou||ou===Function.prototype)&&(ou=function(){throw TypeError("Incorrect invocation")},fu))for(Qc in pu)r[Qc]&&$t(r[Qc],ou);if((!fu||!au||au===su)&&(au=ou.prototype,fu))for(Qc in pu)r[Qc]&&$t(r[Qc].prototype,au);if(fu&&Dn(iu)!==au&&$t(iu,au),o&&!b(au,uu))for(Qc in hu=!0,eu(au,uu,{get:function(){return v(this)?this[lu]:void 0}}),pu)r[Qc]&&P(r[Qc],lu,Qc);var gu={NATIVE_ARRAY_BUFFER_VIEWS:fu,TYPED_ARRAY_TAG:hu&&lu,aTypedArray:function(e){if(du(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if($t){if(cu.call(ou,e))return e}else for(var t in pu)if(b(pu,Qc)){var n=r[t];if(n&&(e===n||cu.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var i in pu){var a=r[i];a&&b(a.prototype,e)&&delete a.prototype[e]}au[e]&&!n||Z(au,e,n?t:fu&&nu[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var i,a;if(o){if($t){if(n)for(i in pu)(a=r[i])&&b(a,e)&&delete a[e];if(ou[e]&&!n)return;try{return Z(ou,e,n?t:fu&&tu[e]||t)}catch(e){}}for(i in pu)!(a=r[i])||a[e]&&!n||Z(a,e,t)}},isView:function(e){var t=lt(e);return"DataView"===t||b(pu,t)},isTypedArray:du,TypedArray:ou,TypedArrayPrototype:au},vu=gu.NATIVE_ARRAY_BUFFER_VIEWS,mu=r.ArrayBuffer,yu=r.Int8Array,bu=!vu||!i((function(){yu(1)}))||!i((function(){new yu(-1)}))||!yt((function(e){new yu,new yu(null),new yu(1.5),new yu(e)}),!0)||i((function(){return 1!==new yu(new mu(2),1,void 0).length})),wu=function(e){if(void 0===e)return 0;var t=oe(e),n=se(t);if(t!==n)throw RangeError("Wrong length or index");return n},_u=Math.abs,Eu=Math.pow,ku=Math.floor,Su=Math.log,Tu=Math.LN2,xu=function(e,t,n){var r,i,o,a=new Array(n),s=8*n-t-1,c=(1<<s)-1,u=c>>1,l=23===t?Eu(2,-24)-Eu(2,-77):0,f=e<0||0===e&&1/e<0?1:0,h=0;for((e=_u(e))!=e||e===1/0?(i=e!=e?1:0,r=c):(r=ku(Su(e)/Tu),e*(o=Eu(2,-r))<1&&(r--,o*=2),(e+=r+u>=1?l/o:l*Eu(2,1-u))*o>=2&&(r++,o/=2),r+u>=c?(i=0,r=c):r+u>=1?(i=(e*o-1)*Eu(2,t),r+=u):(i=e*Eu(2,u-1)*Eu(2,t),r=0));t>=8;a[h++]=255&i,i/=256,t-=8);for(r=r<<t|i,s+=t;s>0;a[h++]=255&r,r/=256,s-=8);return a[--h]|=128*f,a},Au=function(e,t){var n,r=e.length,i=8*r-t-1,o=(1<<i)-1,a=o>>1,s=i-7,c=r-1,u=e[c--],l=127&u;for(u>>=7;s>0;l=256*l+e[c],c--,s-=8);for(n=l&(1<<-s)-1,l>>=-s,s+=t;s>0;n=256*n+e[c],c--,s-=8);if(0===l)l=1-a;else{if(l===o)return n?NaN:u?-1/0:1/0;n+=Eu(2,t),l-=a}return(u?-1:1)*n*Eu(2,l-t)},Ou=function(e){for(var t=Ce(this),n=se(t.length),r=arguments.length,i=le(r>1?arguments[1]:void 0,n),o=r>2?arguments[2]:void 0,a=void 0===o?n:le(o,n);a>i;)t[i++]=e;return t},Pu=me.f,Iu=O.f,ju=Q.get,Cu=Q.set,Ru=r.ArrayBuffer,Lu=Ru,Nu=r.DataView,Mu=Nu&&Nu.prototype,Uu=Object.prototype,Du=r.RangeError,Fu=xu,Bu=Au,qu=function(e){return[255&e]},Hu=function(e){return[255&e,e>>8&255]},Vu=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},Wu=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},zu=function(e){return Fu(e,23,4)},Yu=function(e){return Fu(e,52,8)},$u=function(e,t){Iu(e.prototype,t,{get:function(){return ju(this)[t]}})},Gu=function(e,t,n,r){var i=wu(n),o=ju(e);if(i+t>o.byteLength)throw Du("Wrong index");var a=ju(o.buffer).bytes,s=i+o.byteOffset,c=a.slice(s,s+t);return r?c:c.reverse()},Ku=function(e,t,n,r,i,o){var a=wu(n),s=ju(e);if(a+t>s.byteLength)throw Du("Wrong index");for(var c=ju(s.buffer).bytes,u=a+s.byteOffset,l=r(+i),f=0;f<t;f++)c[u+f]=l[o?f:t-f-1]};if(Zc){if(!i((function(){Ru(1)}))||!i((function(){new Ru(-1)}))||i((function(){return new Ru,new Ru(1.5),new Ru(NaN),"ArrayBuffer"!=Ru.name}))){for(var Xu,Ju=(Lu=function(e){return Wi(this,Lu),new Ru(wu(e))}).prototype=Ru.prototype,Qu=Pu(Ru),Zu=0;Qu.length>Zu;)(Xu=Qu[Zu++])in Lu||P(Lu,Xu,Ru[Xu]);Ju.constructor=Lu}$t&&Dn(Mu)!==Uu&&$t(Mu,Uu);var el=new Nu(new Lu(2)),tl=Mu.setInt8;el.setInt8(0,2147483648),el.setInt8(1,2147483649),!el.getInt8(0)&&el.getInt8(1)||no(Mu,{setInt8:function(e,t){tl.call(this,e,t<<24>>24)},setUint8:function(e,t){tl.call(this,e,t<<24>>24)}},{unsafe:!0})}else Lu=function(e){Wi(this,Lu,"ArrayBuffer");var t=wu(e);Cu(this,{bytes:Ou.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},Nu=function(e,t,n){Wi(this,Nu,"DataView"),Wi(e,Lu,"DataView");var r=ju(e).byteLength,i=oe(t);if(i<0||i>r)throw Du("Wrong offset");if(i+(n=void 0===n?r-i:se(n))>r)throw Du("Wrong length");Cu(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&($u(Lu,"byteLength"),$u(Nu,"buffer"),$u(Nu,"byteLength"),$u(Nu,"byteOffset")),no(Nu.prototype,{getInt8:function(e){return Gu(this,1,e)[0]<<24>>24},getUint8:function(e){return Gu(this,1,e)[0]},getInt16:function(e){var t=Gu(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=Gu(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return Wu(Gu(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return Wu(Gu(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Bu(Gu(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Bu(Gu(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){Ku(this,1,e,qu,t)},setUint8:function(e,t){Ku(this,1,e,qu,t)},setInt16:function(e,t){Ku(this,2,e,Hu,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){Ku(this,2,e,Hu,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){Ku(this,4,e,Vu,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){Ku(this,4,e,Vu,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){Ku(this,4,e,zu,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){Ku(this,8,e,Yu,t,arguments.length>2?arguments[2]:void 0)}});Wn(Lu,"ArrayBuffer"),Wn(Nu,"DataView");var nl={ArrayBuffer:Lu,DataView:Nu},rl=function(e,t){var n=function(e){var t=oe(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}(e);if(n%t)throw RangeError("Wrong offset");return n},il=gu.aTypedArrayConstructor,ol=function(e){var t,n,r,i,o,a,s=Ce(e),c=arguments.length,u=c>1?arguments[1]:void 0,l=void 0!==u,f=ht(s);if(null!=f&&!it(f))for(a=(o=f.call(s)).next,s=[];!(i=a.call(o)).done;)s.push(i.value);for(l&&c>2&&(u=je(u,arguments[2],2)),n=se(s.length),r=new(il(this))(n),t=0;n>t;t++)r[t]=l?u(s[t],t):s[t];return r};t((function(e){var t=me.f,n=We.forEach,i=Q.get,a=Q.set,s=O.f,c=T.f,l=Math.round,f=r.RangeError,h=nl.ArrayBuffer,p=nl.DataView,d=gu.NATIVE_ARRAY_BUFFER_VIEWS,g=gu.TYPED_ARRAY_TAG,y=gu.TypedArray,w=gu.TypedArrayPrototype,_=gu.aTypedArrayConstructor,E=gu.isTypedArray,k=function(e,t){for(var n=0,r=t.length,i=new(_(e))(r);r>n;)i[n]=t[n++];return i},S=function(e,t){s(e,t,{get:function(){return i(this)[t]}})},x=function(e){var t;return e instanceof h||"ArrayBuffer"==(t=lt(e))||"SharedArrayBuffer"==t},A=function(e,t){return E(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},I=function(e,t){return A(e,t=m(t,!0))?u(2,e[t]):c(e,t)},j=function(e,t,n){return!(A(e,t=m(t,!0))&&v(n)&&b(n,"value"))||b(n,"get")||b(n,"set")||n.configurable||b(n,"writable")&&!n.writable||b(n,"enumerable")&&!n.enumerable?s(e,t,n):(e[t]=n.value,e)};o?(d||(T.f=I,O.f=j,S(w,"buffer"),S(w,"byteOffset"),S(w,"byteLength"),S(w,"length")),Pe({target:"Object",stat:!0,forced:!d},{getOwnPropertyDescriptor:I,defineProperty:j}),e.exports=function(e,o,c){var u=e.match(/\d+$/)[0]/8,m=e+(c?"Clamped":"")+"Array",b="get"+e,_="set"+e,S=r[m],T=S,A=T&&T.prototype,O={},I=function(e,t){s(e,t,{get:function(){return function(e,t){var n=i(e);return n.view[b](t*u+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,n){var r=i(e);c&&(n=(n=l(n))<0?0:n>255?255:255&n),r.view[_](t*u+r.byteOffset,n,!0)}(this,t,e)},enumerable:!0})};d?bu&&(T=o((function(e,t,n,r){return Wi(e,T,m),Gt(v(t)?x(t)?void 0!==r?new S(t,rl(n,u),r):void 0!==n?new S(t,rl(n,u)):new S(t):E(t)?k(T,t):ol.call(T,t):new S(wu(t)),e,T)})),$t&&$t(T,y),n(t(S),(function(e){e in T||P(T,e,S[e])})),T.prototype=A):(T=o((function(e,t,n,r){Wi(e,T,m);var i,o,s,c=0,l=0;if(v(t)){if(!x(t))return E(t)?k(T,t):ol.call(T,t);i=t,l=rl(n,u);var d=t.byteLength;if(void 0===r){if(d%u)throw f("Wrong length");if((o=d-l)<0)throw f("Wrong length")}else if((o=se(r)*u)+l>d)throw f("Wrong length");s=o/u}else s=wu(t),i=new h(o=s*u);for(a(e,{buffer:i,byteOffset:l,byteLength:o,length:s,view:new p(i)});c<s;)I(e,c++)})),$t&&$t(T,y),A=T.prototype=Ot(w)),A.constructor!==T&&P(A,"constructor",T),g&&P(A,g,m),O[m]=T,Pe({global:!0,forced:T!=S,sham:!d},O),"BYTES_PER_ELEMENT"in T||P(T,"BYTES_PER_ELEMENT",u),"BYTES_PER_ELEMENT"in A||P(A,"BYTES_PER_ELEMENT",u),tn(m)}):e.exports=function(){}}))("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var al=Math.min,sl=[].copyWithin||function(e,t){var n=Ce(this),r=se(n.length),i=le(e,r),o=le(t,r),a=arguments.length>2?arguments[2]:void 0,s=al((void 0===a?r:le(a,r))-o,r-i),c=1;for(o<i&&i<o+s&&(c=-1,o+=s-1,i+=s-1);s-- >0;)o in n?n[i]=n[o]:delete n[i],i+=c,o+=c;return n},cl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("copyWithin",(function(e,t){return sl.call(cl(this),e,t,arguments.length>2?arguments[2]:void 0)}));var ul=We.every,ll=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("every",(function(e){return ul(ll(this),e,arguments.length>1?arguments[1]:void 0)}));var fl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("fill",(function(e){return Ou.apply(fl(this),arguments)}));var hl=We.filter,pl=gu.aTypedArray,dl=gu.aTypedArrayConstructor;(0,gu.exportTypedArrayMethod)("filter",(function(e){for(var t=hl(pl(this),e,arguments.length>1?arguments[1]:void 0),n=ji(this,this.constructor),r=0,i=t.length,o=new(dl(n))(i);i>r;)o[r]=t[r++];return o}));var gl=We.find,vl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("find",(function(e){return gl(vl(this),e,arguments.length>1?arguments[1]:void 0)}));var ml=We.findIndex,yl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("findIndex",(function(e){return ml(yl(this),e,arguments.length>1?arguments[1]:void 0)}));var bl=We.forEach,wl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("forEach",(function(e){bl(wl(this),e,arguments.length>1?arguments[1]:void 0)}));var _l=he.includes,El=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("includes",(function(e){return _l(El(this),e,arguments.length>1?arguments[1]:void 0)}));var kl=he.indexOf,Sl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("indexOf",(function(e){return kl(Sl(this),e,arguments.length>1?arguments[1]:void 0)}));var Tl=Fe("iterator"),xl=r.Uint8Array,Al=ii.values,Ol=ii.keys,Pl=ii.entries,Il=gu.aTypedArray,jl=gu.exportTypedArrayMethod,Cl=xl&&xl.prototype[Tl],Rl=!!Cl&&("values"==Cl.name||null==Cl.name),Ll=function(){return Al.call(Il(this))};jl("entries",(function(){return Pl.call(Il(this))})),jl("keys",(function(){return Ol.call(Il(this))})),jl("values",Ll,!Rl),jl(Tl,Ll,!Rl);var Nl=gu.aTypedArray,Ml=[].join;(0,gu.exportTypedArrayMethod)("join",(function(e){return Ml.apply(Nl(this),arguments)}));var Ul=Math.min,Dl=[].lastIndexOf,Fl=!!Dl&&1/[1].lastIndexOf(1,-0)<0,Bl=ze("lastIndexOf"),ql=Ke("indexOf",{ACCESSORS:!0,1:0}),Hl=Fl||!Bl||!ql?function(e){if(Fl)return Dl.apply(this,arguments)||0;var t=g(this),n=se(t.length),r=n-1;for(arguments.length>1&&(r=Ul(r,oe(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:Dl,Vl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("lastIndexOf",(function(e){return Hl.apply(Vl(this),arguments)}));var Wl=We.map,zl=gu.aTypedArray,Yl=gu.aTypedArrayConstructor;(0,gu.exportTypedArrayMethod)("map",(function(e){return Wl(zl(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(Yl(ji(e,e.constructor)))(t)}))}));var $l=function(e){return function(t,n,r,i){Ie(n);var o=Ce(t),a=p(o),s=se(o.length),c=e?s-1:0,u=e?-1:1;if(r<2)for(;;){if(c in a){i=a[c],c+=u;break}if(c+=u,e?c<0:s<=c)throw TypeError("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=u)c in a&&(i=n(i,a[c],c,o));return i}},Gl={left:$l(!1),right:$l(!0)},Kl=Gl.left,Xl=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("reduce",(function(e){return Kl(Xl(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var Jl=Gl.right,Ql=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("reduceRight",(function(e){return Jl(Ql(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var Zl=gu.aTypedArray,ef=gu.exportTypedArrayMethod,tf=Math.floor;ef("reverse",(function(){for(var e,t=Zl(this).length,n=tf(t/2),r=0;r<n;)e=this[r],this[r++]=this[--t],this[t]=e;return this}));var nf=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("set",(function(e){nf(this);var t=rl(arguments.length>1?arguments[1]:void 0,1),n=this.length,r=Ce(e),i=se(r.length),o=0;if(i+t>n)throw RangeError("Wrong length");for(;o<i;)this[t+o]=r[o++]}),i((function(){new Int8Array(1).set({})})));var rf=gu.aTypedArray,of=gu.aTypedArrayConstructor,af=[].slice;(0,gu.exportTypedArrayMethod)("slice",(function(e,t){for(var n=af.call(rf(this),e,t),r=ji(this,this.constructor),i=0,o=n.length,a=new(of(r))(o);o>i;)a[i]=n[i++];return a}),i((function(){new Int8Array(1).slice()})));var sf=We.some,cf=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("some",(function(e){return sf(cf(this),e,arguments.length>1?arguments[1]:void 0)}));var uf=gu.aTypedArray,lf=[].sort;(0,gu.exportTypedArrayMethod)("sort",(function(e){return lf.call(uf(this),e)}));var ff=gu.aTypedArray;(0,gu.exportTypedArrayMethod)("subarray",(function(e,t){var n=ff(this),r=n.length,i=le(e,r);return new(ji(n,n.constructor))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,se((void 0===t?r:le(t,r))-i))}));var hf=r.Int8Array,pf=gu.aTypedArray,df=gu.exportTypedArrayMethod,gf=[].toLocaleString,vf=[].slice,mf=!!hf&&i((function(){gf.call(new hf(1))}));df("toLocaleString",(function(){return gf.apply(mf?vf.call(pf(this)):pf(this),arguments)}),i((function(){return[1,2].toLocaleString()!=new hf([1,2]).toLocaleString()}))||!i((function(){hf.prototype.toLocaleString.call([1,2])})));var yf=gu.exportTypedArrayMethod,bf=r.Uint8Array,wf=bf&&bf.prototype||{},_f=[].toString,Ef=[].join;i((function(){_f.call({})}))&&(_f=function(){return Ef.call(this)});var kf=wf.toString!=_f;function Sf(e,t){return void 0===t&&(t=0),"string"!=typeof e||0===t||e.length<=t?e:e.substr(0,t)+"..."}function Tf(e,t){if(!Array.isArray(e))return"";for(var n=[],r=0;r<e.length;r++){var i=e[r];try{n.push(String(i))}catch(e){n.push("[value cannot be serialized]")}}return n.join(t)}function xf(e,t){return!!zc(e)&&(n=t,"[object RegExp]"===Object.prototype.toString.call(n)?t.test(e):"string"==typeof t&&-1!==e.indexOf(t));var n}function Af(){return"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)}yf("toString",_f,kf);var Of={};function Pf(){return Af()?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:Of}function If(){var e=Pf(),t=e.crypto||e.msCrypto;if(void 0!==t&&t.getRandomValues){var n=new Uint16Array(8);t.getRandomValues(n),n[3]=4095&n[3]|16384,n[4]=16383&n[4]|32768;var r=function(e){for(var t=e.toString(16);t.length<4;)t="0"+t;return t};return r(n[0])+r(n[1])+r(n[2])+r(n[3])+r(n[4])+r(n[5])+r(n[6])+r(n[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))}function jf(e){if(!e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};var n=t[6]||"",r=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],relative:t[5]+n+r}}function Cf(e){if(e.message)return e.message;if(e.exception&&e.exception.values&&e.exception.values[0]){var t=e.exception.values[0];return t.type&&t.value?t.type+": "+t.value:t.type||t.value||e.event_id||"<unknown>"}return e.event_id||"<unknown>"}function Rf(e){var t=Pf();if(!("console"in t))return e();var n=t.console,r={};["debug","info","warn","error","log","assert"].forEach((function(e){e in t.console&&n[e].__sentry_original__&&(r[e]=n[e],n[e]=n[e].__sentry_original__)}));var i=e();return Object.keys(r).forEach((function(e){n[e]=r[e]})),i}function Lf(e,t,n){e.exception=e.exception||{},e.exception.values=e.exception.values||[],e.exception.values[0]=e.exception.values[0]||{},e.exception.values[0].value=e.exception.values[0].value||t||"",e.exception.values[0].type=e.exception.values[0].type||n||"Error"}function Nf(e,t){void 0===t&&(t={});try{e.exception.values[0].mechanism=e.exception.values[0].mechanism||{},Object.keys(t).forEach((function(n){e.exception.values[0].mechanism[n]=t[n]}))}catch(e){}}function Mf(e){try{for(var t=e,n=[],r=0,i=0,o=" > ".length,a=void 0;t&&r++<5&&!("html"===(a=Uf(t))||r>1&&i+n.length*o+a.length>=80);)n.push(a),i+=a.length,t=t.parentNode;return n.reverse().join(" > ")}catch(e){return"<unknown>"}}function Uf(e){var t,n,r,i,o,a=e,s=[];if(!a||!a.tagName)return"";if(s.push(a.tagName.toLowerCase()),a.id&&s.push("#"+a.id),(t=a.className)&&zc(t))for(n=t.split(/\s+/),o=0;o<n.length;o++)s.push("."+n[o]);var c=["type","name","title","alt"];for(o=0;o<c.length;o++)r=c[o],(i=a.getAttribute(r))&&s.push("["+r+'="'+i+'"]');return s.join("")}var Df=Date.now(),Ff=0,Bf={now:function(){var e=Date.now()-Df;return e<Ff&&(e=Ff),Ff=e,e},timeOrigin:Df},qf=function(){if(Af())try{return(e=module,t="perf_hooks",e.require(t)).performance}catch(e){return Bf}var e,t;return Pf().performance&&void 0===performance.timeOrigin&&(performance.timeOrigin=performance.timing&&performance.timing.navigationStart||Df),Pf().performance||Bf}();function Hf(){return(qf.timeOrigin+qf.now())/1e3}function Vf(e,t){if(!t)return 6e4;var n=parseInt(""+t,10);if(!isNaN(n))return 1e3*n;var r=Date.parse(""+t);return isNaN(r)?6e4:r-e}function Wf(e){try{return e&&"function"==typeof e&&e.name||"<anonymous>"}catch(e){return"<anonymous>"}}var zf=Pf(),Yf="Sentry Logger ",$f=function(){function e(){this._enabled=!1}return e.prototype.disable=function(){this._enabled=!1},e.prototype.enable=function(){this._enabled=!0},e.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._enabled&&Rf((function(){zf.console.log(Yf+"[Log]: "+e.join(" "))}))},e.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._enabled&&Rf((function(){zf.console.warn(Yf+"[Warn]: "+e.join(" "))}))},e.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._enabled&&Rf((function(){zf.console.error(Yf+"[Error]: "+e.join(" "))}))},e}();zf.__SENTRY__=zf.__SENTRY__||{};var Gf=zf.__SENTRY__.logger||(zf.__SENTRY__.logger=new $f),Kf=Ht("splice"),Xf=Ke("splice",{ACCESSORS:!0,0:0,1:2}),Jf=Math.max,Qf=Math.min;Pe({target:"Array",proto:!0,forced:!Kf||!Xf},{splice:function(e,t){var n,r,i,o,a,s,c=Ce(this),u=se(c.length),l=le(e,u),f=arguments.length;if(0===f?n=r=0:1===f?(n=0,r=u-l):(n=f-2,r=Qf(Jf(oe(t),0),u-l)),u+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(i=qe(c,r),o=0;o<r;o++)(a=l+o)in c&&ot(i,o,c[a]);if(i.length=r,n<r){for(o=l;o<u-r;o++)s=o+n,(a=o+r)in c?c[s]=c[a]:delete c[s];for(o=u;o>u-r+n;o--)delete c[o-1]}else if(n>r)for(o=u-r;o>l;o--)s=o+n-1,(a=o+r-1)in c?c[s]=c[a]:delete c[s];for(o=0;o<n;o++)c[o+l]=arguments[o+2];return c.length=u-r+n,i}});var Zf=!i((function(){return Object.isExtensible(Object.preventExtensions({}))})),eh=t((function(e){var t=O.f,n=H("meta"),r=0,i=Object.isExtensible||function(){return!0},o=function(e){t(e,n,{value:{objectID:"O"+ ++r,weakData:{}}})},a=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!v(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!b(e,n)){if(!i(e))return"F";if(!t)return"E";o(e)}return e[n].objectID},getWeakData:function(e,t){if(!b(e,n)){if(!i(e))return!0;if(!t)return!1;o(e)}return e[n].weakData},onFreeze:function(e){return Zf&&a.REQUIRED&&i(e)&&!b(e,n)&&o(e),e}};z[n]=!0})),th=(eh.REQUIRED,eh.fastKey,eh.getWeakData,eh.onFreeze,eh.getWeakData),nh=Q.set,rh=Q.getterFor,ih=We.find,oh=We.findIndex,ah=0,sh=function(e){return e.frozen||(e.frozen=new ch)},ch=function(){this.entries=[]},uh=function(e,t){return ih(e.entries,(function(e){return e[0]===t}))};ch.prototype={get:function(e){var t=uh(this,e);if(t)return t[1]},has:function(e){return!!uh(this,e)},set:function(e,t){var n=uh(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=oh(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},function(e,t,n){var o=-1!==e.indexOf("Map"),a=-1!==e.indexOf("Weak"),s=o?"set":"add",c=r[e],u=c&&c.prototype,l=c,f={},h=function(e){var t=u[e];Z(u,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(a&&!v(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return a&&!v(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(a&&!v(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Ae(e,"function"!=typeof c||!(a||u.forEach&&!i((function(){(new c).entries().next()})))))l=n.getConstructor(t,e,o,s),eh.REQUIRED=!0;else if(Ae(e,!0)){var p=new l,d=p[s](a?{}:-0,1)!=p,g=i((function(){p.has(1)})),m=yt((function(e){new c(e)})),y=!a&&i((function(){for(var e=new c,t=5;t--;)e[s](t,t);return!e.has(-0)}));m||((l=t((function(t,n){Wi(t,l,e);var r=Gt(new c,t,l);return null!=n&&ms(n,r[s],r,o),r}))).prototype=u,u.constructor=l),(g||y)&&(h("delete"),h("has"),o&&h("get")),(y||d)&&h(s),a&&u.clear&&delete u.clear}f[e]=l,Pe({global:!0,forced:l!=c},f),Wn(l,e),a||n.setStrong(l,e,o)}("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),{getConstructor:function(e,t,n,r){var i=e((function(e,o){Wi(e,i,t),nh(e,{type:t,id:ah++,frozen:void 0}),null!=o&&ms(o,e[r],e,n)})),o=rh(t),a=function(e,t,n){var r=o(e),i=th(x(t),!0);return!0===i?sh(r).set(t,n):i[r.id]=n,e};return no(i.prototype,{delete:function(e){var t=o(this);if(!v(e))return!1;var n=th(e);return!0===n?sh(t).delete(e):n&&b(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!v(e))return!1;var n=th(e);return!0===n?sh(t).has(e):n&&b(n,t.id)}}),no(i.prototype,n?{get:function(e){var t=o(this);if(v(e)){var n=th(e);return!0===n?sh(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return a(this,e,t)}}:{add:function(e){return a(this,e,!0)}}),i}});var lh=function(){function e(){this._hasWeakSet="function"==typeof WeakSet,this._inner=this._hasWeakSet?new WeakSet:[]}return e.prototype.memoize=function(e){if(this._hasWeakSet)return!!this._inner.has(e)||(this._inner.add(e),!1);for(var t=0;t<this._inner.length;t++){if(this._inner[t]===e)return!0}return this._inner.push(e),!1},e.prototype.unmemoize=function(e){if(this._hasWeakSet)this._inner.delete(e);else for(var t=0;t<this._inner.length;t++)if(this._inner[t]===e){this._inner.splice(t,1);break}},e}();function fh(e,t,n){if(t in e){var r=e[t],i=n(r);if("function"==typeof i)try{i.prototype=i.prototype||{},Object.defineProperties(i,{__sentry_original__:{enumerable:!1,value:r}})}catch(e){}e[t]=i}}function hh(e){if(Hc(e)){var t=e,n={message:t.message,name:t.name,stack:t.stack};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}if(Gc(e)){var i=e,o={};o.type=i.type;try{o.target=Kc(i.target)?Mf(i.target):Object.prototype.toString.call(i.target)}catch(e){o.target="<unknown>"}try{o.currentTarget=Kc(i.currentTarget)?Mf(i.currentTarget):Object.prototype.toString.call(i.currentTarget)}catch(e){o.currentTarget="<unknown>"}for(var r in"undefined"!=typeof CustomEvent&&Jc(e,CustomEvent)&&(o.detail=i.detail),i)Object.prototype.hasOwnProperty.call(i,r)&&(o[r]=i);return o}return e}function ph(e){return function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(e))}function dh(e,t,n){void 0===t&&(t=3),void 0===n&&(n=102400);var r=mh(e,t);return ph(r)>n?dh(e,t-1,n):r}function gh(e,t){return"domain"===t&&e&&"object"===Ka(e)&&e._events?"[Domain]":"domainEmitter"===t?"[DomainEmitter]":"undefined"!=typeof global&&e===global?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":$c(n=e)&&"nativeEvent"in n&&"preventDefault"in n&&"stopPropagation"in n?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Wf(e)+"]":e;var n}function vh(e,t,n,r){if(void 0===n&&(n=1/0),void 0===r&&(r=new lh),0===n)return function(e){var t=Object.prototype.toString.call(e);if("string"==typeof e)return e;if("[object Object]"===t)return"[Object]";if("[object Array]"===t)return"[Array]";var n=gh(e);return Yc(n)?n:t}(t);if(null!=t&&"function"==typeof t.toJSON)return t.toJSON();var i=gh(t,e);if(Yc(i))return i;var o=hh(t),a=Array.isArray(t)?[]:{};if(r.memoize(t))return"[Circular ~]";for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(a[s]=vh(s,o[s],n-1,r));return r.unmemoize(t),a}function mh(e,t){try{return JSON.parse(JSON.stringify(e,(function(e,n){return vh(e,n,t)})))}catch(e){return"**non-serializable**"}}function yh(e,t){void 0===t&&(t=40);var n=Object.keys(hh(e));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=t)return Sf(n[0],t);for(var r=n.length;r>0;r--){var i=n.slice(0,r).join(", ");if(!(i.length>t))return r===n.length?i:Sf(i,t)}return""}Pe({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}});var bh=We.filter,wh=Ht("filter"),_h=Ke("filter");Pe({target:"Array",proto:!0,forced:!wh||!_h},{filter:function(e){return bh(this,e,arguments.length>1?arguments[1]:void 0)}});var Eh,kh=!!vs&&i((function(){vs.prototype.finally.call({then:function(){}},(function(){}))}));Pe({target:"Promise",proto:!0,real:!0,forced:kh},{finally:function(e){var t=ji(this,ne("Promise")),n="function"==typeof e;return this.then(n?function(n){return tc(t,e()).then((function(){return n}))}:e,n?function(n){return tc(t,e()).then((function(){throw n}))}:e)}}),"function"!=typeof vs||vs.prototype.finally||Z(vs.prototype,"finally",ne("Promise").prototype.finally),function(e){e.PENDING="PENDING",e.RESOLVED="RESOLVED",e.REJECTED="REJECTED"}(Eh||(Eh={}));var Sh=function(){function e(e){var t=this;this._state=Eh.PENDING,this._handlers=[],this._resolve=function(e){t._setResult(Eh.RESOLVED,e)},this._reject=function(e){t._setResult(Eh.REJECTED,e)},this._setResult=function(e,n){t._state===Eh.PENDING&&(Xc(n)?n.then(t._resolve,t._reject):(t._state=e,t._value=n,t._executeHandlers()))},this._attachHandler=function(e){t._handlers=t._handlers.concat(e),t._executeHandlers()},this._executeHandlers=function(){if(t._state!==Eh.PENDING){var e=t._handlers.slice();t._handlers=[],e.forEach((function(e){e.done||(t._state===Eh.RESOLVED&&e.onfulfilled&&e.onfulfilled(t._value),t._state===Eh.REJECTED&&e.onrejected&&e.onrejected(t._value),e.done=!0)}))}};try{e(this._resolve,this._reject)}catch(e){this._reject(e)}}return e.prototype.toString=function(){return"[object SyncPromise]"},e.resolve=function(t){return new e((function(e){e(t)}))},e.reject=function(t){return new e((function(e,n){n(t)}))},e.all=function(t){return new e((function(n,r){if(Array.isArray(t))if(0!==t.length){var i=t.length,o=[];t.forEach((function(t,a){e.resolve(t).then((function(e){o[a]=e,0===(i-=1)&&n(o)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},e.prototype.then=function(t,n){var r=this;return new e((function(e,i){r._attachHandler({done:!1,onfulfilled:function(n){if(t)try{return void e(t(n))}catch(e){return void i(e)}else e(n)},onrejected:function(t){if(n)try{return void e(n(t))}catch(e){return void i(e)}else i(t)}})}))},e.prototype.catch=function(e){return this.then((function(e){return e}),e)},e.prototype.finally=function(t){var n=this;return new e((function(e,r){var i,o;return n.then((function(e){o=!1,i=e,t&&t()}),(function(e){o=!0,i=e,t&&t()})).then((function(){o?r(i):e(i)}))}))},e}(),Th=function(){function e(e){this._limit=e,this._buffer=[]}return e.prototype.isReady=function(){return void 0===this._limit||this.length()<this._limit},e.prototype.add=function(e){var t=this;return this.isReady()?(-1===this._buffer.indexOf(e)&&this._buffer.push(e),e.then((function(){return t.remove(e)})).then(null,(function(){return t.remove(e).then(null,(function(){}))})),e):Sh.reject(new qc("Not adding Promise due to buffer limit reached."))},e.prototype.remove=function(e){return this._buffer.splice(this._buffer.indexOf(e),1)[0]},e.prototype.length=function(){return this._buffer.length},e.prototype.drain=function(e){var t=this;return new Sh((function(n){var r=setTimeout((function(){e&&e>0&&n(!1)}),e);Sh.all(t._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},e}();function xh(){if(!("fetch"in Pf()))return!1;try{return new Headers,new Request(""),new Response,!0}catch(e){return!1}}function Ah(e){return e&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(e.toString())}function Oh(){if(!xh())return!1;try{return new Request("_",{referrerPolicy:"origin"}),!0}catch(e){return!1}}var Ph,Ih=Pf(),jh={},Ch={};function Rh(e){if(!Ch[e])switch(Ch[e]=!0,e){case"console":!function(){if(!("console"in Ih))return;["debug","info","warn","error","log","assert"].forEach((function(e){e in Ih.console&&fh(Ih.console,e,(function(t){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];Nh("console",{args:n,level:e}),t&&Function.prototype.apply.call(t,Ih.console,n)}}))}))}();break;case"dom":!function(){if(!("document"in Ih))return;Ih.document.addEventListener("click",qh("click",Nh.bind(null,"dom")),!1),Ih.document.addEventListener("keypress",Hh(Nh.bind(null,"dom")),!1),["EventTarget","Node"].forEach((function(e){var t=Ih[e]&&Ih[e].prototype;t&&t.hasOwnProperty&&t.hasOwnProperty("addEventListener")&&(fh(t,"addEventListener",(function(e){return function(t,n,r){return n&&n.handleEvent?("click"===t&&fh(n,"handleEvent",(function(e){return function(t){return qh("click",Nh.bind(null,"dom"))(t),e.call(this,t)}})),"keypress"===t&&fh(n,"handleEvent",(function(e){return function(t){return Hh(Nh.bind(null,"dom"))(t),e.call(this,t)}}))):("click"===t&&qh("click",Nh.bind(null,"dom"),!0)(this),"keypress"===t&&Hh(Nh.bind(null,"dom"))(this)),e.call(this,t,n,r)}})),fh(t,"removeEventListener",(function(e){return function(t,n,r){var i=n;try{i=i&&(i.__sentry_wrapped__||i)}catch(e){}return e.call(this,t,i,r)}})))}))}();break;case"xhr":!function(){if(!("XMLHttpRequest"in Ih))return;var e=XMLHttpRequest.prototype;fh(e,"open",(function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=t[1];return this.__sentry_xhr__={method:zc(t[0])?t[0].toUpperCase():t[0],url:t[1]},zc(r)&&"POST"===this.__sentry_xhr__.method&&r.match(/sentry_key/)&&(this.__sentry_own_request__=!0),e.apply(this,t)}})),fh(e,"send",(function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=this,i={args:t,startTimestamp:Date.now(),xhr:r};return Nh("xhr",Rc({},i)),r.addEventListener("readystatechange",(function(){if(4===r.readyState){try{r.__sentry_xhr__&&(r.__sentry_xhr__.status_code=r.status)}catch(e){}Nh("xhr",Rc({},i,{endTimestamp:Date.now()}))}})),e.apply(this,t)}}))}();break;case"fetch":!function(){if(!function(){if(!xh())return!1;var e=Pf();if(Ah(e.fetch))return!0;var t=!1,n=e.document;if(n&&"function"==typeof n.createElement)try{var r=n.createElement("iframe");r.hidden=!0,n.head.appendChild(r),r.contentWindow&&r.contentWindow.fetch&&(t=Ah(r.contentWindow.fetch)),n.head.removeChild(r)}catch(e){Gf.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",e)}return t}())return;fh(Ih,"fetch",(function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r={args:t,fetchData:{method:Mh(t),url:Uh(t)},startTimestamp:Date.now()};return Nh("fetch",Rc({},r)),e.apply(Ih,t).then((function(e){return Nh("fetch",Rc({},r,{endTimestamp:Date.now(),response:e})),e}),(function(e){throw Nh("fetch",Rc({},r,{endTimestamp:Date.now(),error:e})),e}))}}))}();break;case"history":!function(){if(!function(){var e=Pf(),t=e.chrome,n=t&&t.app&&t.app.runtime,r="history"in e&&!!e.history.pushState&&!!e.history.replaceState;return!n&&r}())return;var e=Ih.onpopstate;function t(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=t.length>2?t[2]:void 0;if(r){var i=Ph,o=String(r);Ph=o,Nh("history",{from:i,to:o})}return e.apply(this,t)}}Ih.onpopstate=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=Ih.location.href,i=Ph;if(Ph=r,Nh("history",{from:i,to:r}),e)return e.apply(this,t)},fh(Ih.history,"pushState",t),fh(Ih.history,"replaceState",t)}();break;case"error":Vh=Ih.onerror,Ih.onerror=function(e,t,n,r,i){return Nh("error",{column:r,error:i,line:n,msg:e,url:t}),!!Vh&&Vh.apply(this,arguments)};break;case"unhandledrejection":Wh=Ih.onunhandledrejection,Ih.onunhandledrejection=function(e){return Nh("unhandledrejection",e),!Wh||Wh.apply(this,arguments)};break;default:Gf.warn("unknown instrumentation type:",e)}}function Lh(e){e&&"string"==typeof e.type&&"function"==typeof e.callback&&(jh[e.type]=jh[e.type]||[],jh[e.type].push(e.callback),Rh(e.type))}function Nh(e,t){var n,r;if(e&&jh[e])try{for(var i=function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(jh[e]||[]),o=i.next();!o.done;o=i.next()){var a=o.value;try{a(t)}catch(t){Gf.error("Error while triggering instrumentation handler.\nType: "+e+"\nName: "+Wf(a)+"\nError: "+t)}}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}function Mh(e){return void 0===e&&(e=[]),"Request"in Ih&&Jc(e[0],Request)&&e[0].method?String(e[0].method).toUpperCase():e[1]&&e[1].method?String(e[1].method).toUpperCase():"GET"}function Uh(e){return void 0===e&&(e=[]),"string"==typeof e[0]?e[0]:"Request"in Ih&&Jc(e[0],Request)?e[0].url:String(e[0])}var Dh,Fh,Bh=0;function qh(e,t,n){return void 0===n&&(n=!1),function(r){Dh=void 0,r&&Fh!==r&&(Fh=r,Bh&&clearTimeout(Bh),n?Bh=setTimeout((function(){t({event:r,name:e})})):t({event:r,name:e}))}}function Hh(e){return function(t){var n;try{n=t.target}catch(e){return}var r=n&&n.tagName;r&&("INPUT"===r||"TEXTAREA"===r||n.isContentEditable)&&(Dh||qh("input",e)(t),clearTimeout(Dh),Dh=setTimeout((function(){Dh=void 0}),1e3))}}var Vh=null;var Wh=null;var zh=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w\.-]+)(?::(\d+))?\/(.+)/,Yh=function(){function e(e){"string"==typeof e?this._fromString(e):this._fromComponents(e),this._validate()}return e.prototype.toString=function(e){void 0===e&&(e=!1);var t=this,n=t.host,r=t.path,i=t.pass,o=t.port,a=t.projectId;return t.protocol+"://"+t.user+(e&&i?":"+i:"")+"@"+n+(o?":"+o:"")+"/"+(r?r+"/":r)+a},e.prototype._fromString=function(e){var t=zh.exec(e);if(!t)throw new qc("Invalid Dsn");var n=Lc(t.slice(1),6),r=n[0],i=n[1],o=n[2],a=void 0===o?"":o,s=n[3],c=n[4],u=void 0===c?"":c,l="",f=n[5],h=f.split("/");h.length>1&&(l=h.slice(0,-1).join("/"),f=h.pop()),this._fromComponents({host:s,pass:a,path:l,projectId:f,port:u,protocol:r,user:i})},e.prototype._fromComponents=function(e){this.protocol=e.protocol,this.user=e.user,this.pass=e.pass||"",this.host=e.host,this.port=e.port||"",this.path=e.path||"",this.projectId=e.projectId},e.prototype._validate=function(){var e=this;if(["protocol","user","host","projectId"].forEach((function(t){if(!e[t])throw new qc("Invalid Dsn")})),"http"!==this.protocol&&"https"!==this.protocol)throw new qc("Invalid Dsn");if(this.port&&isNaN(parseInt(this.port,10)))throw new qc("Invalid Dsn")},e}(),$h=function(){function e(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._context={}}return e.prototype.addScopeListener=function(e){this._scopeListeners.push(e)},e.prototype.addEventProcessor=function(e){return this._eventProcessors.push(e),this},e.prototype._notifyScopeListeners=function(){var e=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){e._scopeListeners.forEach((function(t){t(e)})),e._notifyingListeners=!1})))},e.prototype._notifyEventProcessors=function(e,t,n,r){var i=this;return void 0===r&&(r=0),new Sh((function(o,a){var s=e[r];if(null===t||"function"!=typeof s)o(t);else{var c=s(Rc({},t),n);Xc(c)?c.then((function(t){return i._notifyEventProcessors(e,t,n,r+1).then(o)})).then(null,a):i._notifyEventProcessors(e,c,n,r+1).then(o).then(null,a)}}))},e.prototype.setUser=function(e){return this._user=e||{},this._notifyScopeListeners(),this},e.prototype.setTags=function(e){return this._tags=Rc({},this._tags,e),this._notifyScopeListeners(),this},e.prototype.setTag=function(e,t){var n;return this._tags=Rc({},this._tags,((n={})[e]=t,n)),this._notifyScopeListeners(),this},e.prototype.setExtras=function(e){return this._extra=Rc({},this._extra,e),this._notifyScopeListeners(),this},e.prototype.setExtra=function(e,t){var n;return this._extra=Rc({},this._extra,((n={})[e]=t,n)),this._notifyScopeListeners(),this},e.prototype.setFingerprint=function(e){return this._fingerprint=e,this._notifyScopeListeners(),this},e.prototype.setLevel=function(e){return this._level=e,this._notifyScopeListeners(),this},e.prototype.setTransaction=function(e){return this._transaction=e,this._span&&(this._span.transaction=e),this._notifyScopeListeners(),this},e.prototype.setContext=function(e,t){var n;return this._context=Rc({},this._context,((n={})[e]=t,n)),this._notifyScopeListeners(),this},e.prototype.setSpan=function(e){return this._span=e,this._notifyScopeListeners(),this},e.prototype.getSpan=function(){return this._span},e.clone=function(t){var n=new e;return t&&(n._breadcrumbs=Nc(t._breadcrumbs),n._tags=Rc({},t._tags),n._extra=Rc({},t._extra),n._context=Rc({},t._context),n._user=t._user,n._level=t._level,n._span=t._span,n._transaction=t._transaction,n._fingerprint=t._fingerprint,n._eventProcessors=Nc(t._eventProcessors)),n},e.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._context={},this._level=void 0,this._transaction=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},e.prototype.addBreadcrumb=function(e,t){var n=Rc({timestamp:Hf()},e);return this._breadcrumbs=void 0!==t&&t>=0?Nc(this._breadcrumbs,[n]).slice(-t):Nc(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},e.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},e.prototype._applyFingerprint=function(e){e.fingerprint=e.fingerprint?Array.isArray(e.fingerprint)?e.fingerprint:[e.fingerprint]:[],this._fingerprint&&(e.fingerprint=e.fingerprint.concat(this._fingerprint)),e.fingerprint&&!e.fingerprint.length&&delete e.fingerprint},e.prototype.applyToEvent=function(e,t){return this._extra&&Object.keys(this._extra).length&&(e.extra=Rc({},this._extra,e.extra)),this._tags&&Object.keys(this._tags).length&&(e.tags=Rc({},this._tags,e.tags)),this._user&&Object.keys(this._user).length&&(e.user=Rc({},this._user,e.user)),this._context&&Object.keys(this._context).length&&(e.contexts=Rc({},this._context,e.contexts)),this._level&&(e.level=this._level),this._transaction&&(e.transaction=this._transaction),this._span&&(e.contexts=Rc({trace:this._span.getTraceContext()},e.contexts)),this._applyFingerprint(e),e.breadcrumbs=Nc(e.breadcrumbs||[],this._breadcrumbs),e.breadcrumbs=e.breadcrumbs.length>0?e.breadcrumbs:void 0,this._notifyEventProcessors(Nc(Gh(),this._eventProcessors),e,t)},e}();function Gh(){var e=Pf();return e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.globalEventProcessors=e.__SENTRY__.globalEventProcessors||[],e.__SENTRY__.globalEventProcessors}function Kh(e){Gh().push(e)}var Xh=function(){function e(e,t,n){void 0===t&&(t=new $h),void 0===n&&(n=3),this._version=n,this._stack=[],this._stack.push({client:e,scope:t})}return e.prototype._invokeClient=function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=this.getStackTop();i&&i.client&&i.client[e]&&(t=i.client)[e].apply(t,Nc(n,[i.scope]))},e.prototype.isOlderThan=function(e){return this._version<e},e.prototype.bindClient=function(e){this.getStackTop().client=e,e&&e.setupIntegrations&&e.setupIntegrations()},e.prototype.pushScope=function(){var e=this.getStack(),t=e.length>0?e[e.length-1].scope:void 0,n=$h.clone(t);return this.getStack().push({client:this.getClient(),scope:n}),n},e.prototype.popScope=function(){return void 0!==this.getStack().pop()},e.prototype.withScope=function(e){var t=this.pushScope();try{e(t)}finally{this.popScope()}},e.prototype.getClient=function(){return this.getStackTop().client},e.prototype.getScope=function(){return this.getStackTop().scope},e.prototype.getStack=function(){return this._stack},e.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},e.prototype.captureException=function(e,t){var n=this._lastEventId=If(),r=t;if(!t){var i=void 0;try{throw new Error("Sentry syntheticException")}catch(e){i=e}r={originalException:e,syntheticException:i}}return this._invokeClient("captureException",e,Rc({},r,{event_id:n})),n},e.prototype.captureMessage=function(e,t,n){var r=this._lastEventId=If(),i=n;if(!n){var o=void 0;try{throw new Error(e)}catch(e){o=e}i={originalException:e,syntheticException:o}}return this._invokeClient("captureMessage",e,t,Rc({},i,{event_id:r})),r},e.prototype.captureEvent=function(e,t){var n=this._lastEventId=If();return this._invokeClient("captureEvent",e,Rc({},t,{event_id:n})),n},e.prototype.lastEventId=function(){return this._lastEventId},e.prototype.addBreadcrumb=function(e,t){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},i=r.beforeBreadcrumb,o=void 0===i?null:i,a=r.maxBreadcrumbs,s=void 0===a?100:a;if(!(s<=0)){var c=Hf(),u=Rc({timestamp:c},e),l=o?Rf((function(){return o(u,t)})):u;null!==l&&n.scope.addBreadcrumb(l,Math.min(s,100))}}},e.prototype.setUser=function(e){var t=this.getStackTop();t.scope&&t.scope.setUser(e)},e.prototype.setTags=function(e){var t=this.getStackTop();t.scope&&t.scope.setTags(e)},e.prototype.setExtras=function(e){var t=this.getStackTop();t.scope&&t.scope.setExtras(e)},e.prototype.setTag=function(e,t){var n=this.getStackTop();n.scope&&n.scope.setTag(e,t)},e.prototype.setExtra=function(e,t){var n=this.getStackTop();n.scope&&n.scope.setExtra(e,t)},e.prototype.setContext=function(e,t){var n=this.getStackTop();n.scope&&n.scope.setContext(e,t)},e.prototype.configureScope=function(e){var t=this.getStackTop();t.scope&&t.client&&e(t.scope)},e.prototype.run=function(e){var t=Qh(this);try{e(this)}finally{Qh(t)}},e.prototype.getIntegration=function(e){var t=this.getClient();if(!t)return null;try{return t.getIntegration(e)}catch(t){return Gf.warn("Cannot retrieve integration "+e.id+" from the current Hub"),null}},e.prototype.startSpan=function(e,t){return void 0===t&&(t=!1),this._callExtensionMethod("startSpan",e,t)},e.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},e.prototype._callExtensionMethod=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Jh(),i=r.__SENTRY__;if(i&&i.extensions&&"function"==typeof i.extensions[e])return i.extensions[e].apply(this,t);Gf.warn("Extension method "+e+" couldn't be found, doing nothing.")},e}();function Jh(){var e=Pf();return e.__SENTRY__=e.__SENTRY__||{extensions:{},hub:void 0},e}function Qh(e){var t=Jh(),n=tp(t);return np(t,e),n}function Zh(){var e=Jh();return ep(e)&&!tp(e).isOlderThan(3)||np(e,new Xh),Af()?function(e){try{var t=Jh().__SENTRY__;if(!t||!t.extensions||!t.extensions.domain)return tp(e);var n=t.extensions.domain.active;if(!n)return tp(e);if(!ep(n)||tp(n).isOlderThan(3)){var r=tp(e).getStackTop();np(n,new Xh(r.client,$h.clone(r.scope)))}return tp(n)}catch(t){return tp(e)}}(e):tp(e)}function ep(e){return!!(e&&e.__SENTRY__&&e.__SENTRY__.hub)}function tp(e){return e&&e.__SENTRY__&&e.__SENTRY__.hub||(e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.hub=new Xh),e.__SENTRY__.hub}function np(e,t){return!!e&&(e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.hub=t,!0)}function rp(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Zh();if(r&&r[e])return r[e].apply(r,Nc(t));throw new Error("No hub defined or "+e+" was not found on the hub, please open a bug report.")}function ip(e){var t;try{throw new Error("Sentry syntheticException")}catch(e){t=e}return rp("captureException",e,{originalException:e,syntheticException:t})}function op(e){rp("withScope",e)}var ap=function(){function e(e){this.dsn=e,this._dsnObject=new Yh(e)}return e.prototype.getDsn=function(){return this._dsnObject},e.prototype.getStoreEndpoint=function(){return""+this._getBaseUrl()+this.getStoreEndpointPath()},e.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var e,t={sentry_key:this._dsnObject.user,sentry_version:"7"};return this.getStoreEndpoint()+"?"+(e=t,Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&"))},e.prototype._getBaseUrl=function(){var e=this._dsnObject,t=e.protocol?e.protocol+":":"",n=e.port?":"+e.port:"";return t+"//"+e.host+n},e.prototype.getStoreEndpointPath=function(){var e=this._dsnObject;return(e.path?"/"+e.path:"")+"/api/"+e.projectId+"/store/"},e.prototype.getRequestHeaders=function(e,t){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+e+"/"+t),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},e.prototype.getReportDialogEndpoint=function(e){void 0===e&&(e={});var t=this._dsnObject,n=this._getBaseUrl()+(t.path?"/"+t.path:"")+"/api/embed/error-page/",r=[];for(var i in r.push("dsn="+t.toString()),e)if("user"===i){if(!e.user)continue;e.user.name&&r.push("name="+encodeURIComponent(e.user.name)),e.user.email&&r.push("email="+encodeURIComponent(e.user.email))}else r.push(encodeURIComponent(i)+"="+encodeURIComponent(e[i]));return r.length?n+"?"+r.join("&"):n},e}(),sp=[];function cp(e){var t={};return function(e){var t=e.defaultIntegrations&&Nc(e.defaultIntegrations)||[],n=e.integrations,r=[];if(Array.isArray(n)){var i=n.map((function(e){return e.name})),o=[];t.forEach((function(e){-1===i.indexOf(e.name)&&-1===o.indexOf(e.name)&&(r.push(e),o.push(e.name))})),n.forEach((function(e){-1===o.indexOf(e.name)&&(r.push(e),o.push(e.name))}))}else"function"==typeof n?(r=n(t),r=Array.isArray(r)?r:[r]):r=Nc(t);var a=r.map((function(e){return e.name}));return-1!==a.indexOf("Debug")&&r.push.apply(r,Nc(r.splice(a.indexOf("Debug"),1))),r}(e).forEach((function(e){t[e.name]=e,function(e){-1===sp.indexOf(e.name)&&(e.setupOnce(Kh,Zh),sp.push(e.name),Gf.log("Integration installed: "+e.name))}(e)})),t}var up,lp=function(){function e(e,t){this._integrations={},this._processing=!1,this._backend=new e(t),this._options=t,t.dsn&&(this._dsn=new Yh(t.dsn))}return e.prototype.captureException=function(e,t,n){var r=this,i=t&&t.event_id;return this._processing=!0,this._getBackend().eventFromException(e,t).then((function(e){return r._processEvent(e,t,n)})).then((function(e){i=e&&e.event_id,r._processing=!1})).then(null,(function(e){Gf.error(e),r._processing=!1})),i},e.prototype.captureMessage=function(e,t,n,r){var i=this,o=n&&n.event_id;return this._processing=!0,(Yc(e)?this._getBackend().eventFromMessage(""+e,t,n):this._getBackend().eventFromException(e,n)).then((function(e){return i._processEvent(e,n,r)})).then((function(e){o=e&&e.event_id,i._processing=!1})).then(null,(function(e){Gf.error(e),i._processing=!1})),o},e.prototype.captureEvent=function(e,t,n){var r=this,i=t&&t.event_id;return this._processing=!0,this._processEvent(e,t,n).then((function(e){i=e&&e.event_id,r._processing=!1})).then(null,(function(e){Gf.error(e),r._processing=!1})),i},e.prototype.getDsn=function(){return this._dsn},e.prototype.getOptions=function(){return this._options},e.prototype.flush=function(e){var t=this;return this._isClientProcessing(e).then((function(n){return clearInterval(n.interval),t._getBackend().getTransport().close(e).then((function(e){return n.ready&&e}))}))},e.prototype.close=function(e){var t=this;return this.flush(e).then((function(e){return t.getOptions().enabled=!1,e}))},e.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=cp(this._options))},e.prototype.getIntegration=function(e){try{return this._integrations[e.id]||null}catch(t){return Gf.warn("Cannot retrieve integration "+e.id+" from the current Client"),null}},e.prototype._isClientProcessing=function(e){var t=this;return new Sh((function(n){var r=0,i=0;clearInterval(i),i=setInterval((function(){t._processing?(r+=1,e&&r>=e&&n({interval:i,ready:!1})):n({interval:i,ready:!0})}),1)}))},e.prototype._getBackend=function(){return this._backend},e.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},e.prototype._prepareEvent=function(e,t,n){var r=this,i=this.getOptions(),o=i.environment,a=i.release,s=i.dist,c=i.maxValueLength,u=void 0===c?250:c,l=i.normalizeDepth,f=void 0===l?3:l,h=Rc({},e);void 0===h.environment&&void 0!==o&&(h.environment=o),void 0===h.release&&void 0!==a&&(h.release=a),void 0===h.dist&&void 0!==s&&(h.dist=s),h.message&&(h.message=Sf(h.message,u));var p=h.exception&&h.exception.values&&h.exception.values[0];p&&p.value&&(p.value=Sf(p.value,u));var d=h.request;d&&d.url&&(d.url=Sf(d.url,u)),void 0===h.event_id&&(h.event_id=n&&n.event_id?n.event_id:If()),this._addIntegrations(h.sdk);var g=Sh.resolve(h);return t&&(g=t.applyToEvent(h,n)),g.then((function(e){return"number"==typeof f&&f>0?r._normalizeEvent(e,f):e}))},e.prototype._normalizeEvent=function(e,t){return e?Rc({},e,e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map((function(e){return Rc({},e,e.data&&{data:mh(e.data,t)})}))},e.user&&{user:mh(e.user,t)},e.contexts&&{contexts:mh(e.contexts,t)},e.extra&&{extra:mh(e.extra,t)}):null},e.prototype._addIntegrations=function(e){var t=Object.keys(this._integrations);e&&t.length>0&&(e.integrations=t)},e.prototype._processEvent=function(e,t,n){var r=this,i=this.getOptions(),o=i.beforeSend,a=i.sampleRate;return this._isEnabled()?"number"==typeof a&&Math.random()>a?Sh.reject("This event has been sampled, will not send event."):new Sh((function(i,a){r._prepareEvent(e,n,t).then((function(e){if(null!==e){var n=e;if(t&&t.data&&!0===t.data.__sentry__||!o)return r._getBackend().sendEvent(n),void i(n);var s=o(e,t);if(void 0===s)Gf.error("`beforeSend` method has to return `null` or a valid event.");else if(Xc(s))r._handleAsyncBeforeSend(s,i,a);else{if(null===(n=s))return Gf.log("`beforeSend` returned `null`, will not send event."),void i(null);r._getBackend().sendEvent(n),i(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(e){r.captureException(e,{data:{__sentry__:!0},originalException:e}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+e)}))})):Sh.reject("SDK not enabled, will not send event.")},e.prototype._handleAsyncBeforeSend=function(e,t,n){var r=this;e.then((function(e){null!==e?(r._getBackend().sendEvent(e),t(e)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(e){n("beforeSend rejected with "+e)}))},e}(),fp=function(){function e(){}return e.prototype.sendEvent=function(e){return Sh.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:Cc.Skipped})},e.prototype.close=function(e){return Sh.resolve(!0)},e}(),hp=function(){function e(e){this._options=e,this._options.dsn||Gf.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return e.prototype._setupTransport=function(){return new fp},e.prototype.eventFromException=function(e,t){throw new qc("Backend has to implement `eventFromException` method")},e.prototype.eventFromMessage=function(e,t,n){throw new qc("Backend has to implement `eventFromMessage` method")},e.prototype.sendEvent=function(e){this._transport.sendEvent(e).then(null,(function(e){Gf.error("Error while sending event: "+e)}))},e.prototype.getTransport=function(){return this._transport},e}();var pp=function(){function e(){this.name=e.id}return e.prototype.setupOnce=function(){up=Function.prototype.toString,Function.prototype.toString=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this.__sentry_original__||this;return up.apply(n,e)}},e.id="FunctionToString",e}(),dp=We.some,gp=ze("some"),vp=Ke("some");Pe({target:"Array",proto:!0,forced:!gp||!vp},{some:function(e){return dp(this,e,arguments.length>1?arguments[1]:void 0)}});var mp=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/],yp=function(){function e(t){void 0===t&&(t={}),this._options=t,this.name=e.id}return e.prototype.setupOnce=function(){Kh((function(t){var n=Zh();if(!n)return t;var r=n.getIntegration(e);if(r){var i=n.getClient(),o=i?i.getOptions():{},a=r._mergeOptions(o);if(r._shouldDropEvent(t,a))return null}return t}))},e.prototype._shouldDropEvent=function(e,t){return this._isSentryError(e,t)?(Gf.warn("Event dropped due to being internal Sentry Error.\nEvent: "+Cf(e)),!0):this._isIgnoredError(e,t)?(Gf.warn("Event dropped due to being matched by `ignoreErrors` option.\nEvent: "+Cf(e)),!0):this._isBlacklistedUrl(e,t)?(Gf.warn("Event dropped due to being matched by `blacklistUrls` option.\nEvent: "+Cf(e)+".\nUrl: "+this._getEventFilterUrl(e)),!0):!this._isWhitelistedUrl(e,t)&&(Gf.warn("Event dropped due to not being matched by `whitelistUrls` option.\nEvent: "+Cf(e)+".\nUrl: "+this._getEventFilterUrl(e)),!0)},e.prototype._isSentryError=function(e,t){if(void 0===t&&(t={}),!t.ignoreInternal)return!1;try{return e&&e.exception&&e.exception.values&&e.exception.values[0]&&"SentryError"===e.exception.values[0].type||!1}catch(e){return!1}},e.prototype._isIgnoredError=function(e,t){return void 0===t&&(t={}),!(!t.ignoreErrors||!t.ignoreErrors.length)&&this._getPossibleEventMessages(e).some((function(e){return t.ignoreErrors.some((function(t){return xf(e,t)}))}))},e.prototype._isBlacklistedUrl=function(e,t){if(void 0===t&&(t={}),!t.blacklistUrls||!t.blacklistUrls.length)return!1;var n=this._getEventFilterUrl(e);return!!n&&t.blacklistUrls.some((function(e){return xf(n,e)}))},e.prototype._isWhitelistedUrl=function(e,t){if(void 0===t&&(t={}),!t.whitelistUrls||!t.whitelistUrls.length)return!0;var n=this._getEventFilterUrl(e);return!n||t.whitelistUrls.some((function(e){return xf(n,e)}))},e.prototype._mergeOptions=function(e){return void 0===e&&(e={}),{blacklistUrls:Nc(this._options.blacklistUrls||[],e.blacklistUrls||[]),ignoreErrors:Nc(this._options.ignoreErrors||[],e.ignoreErrors||[],mp),ignoreInternal:void 0===this._options.ignoreInternal||this._options.ignoreInternal,whitelistUrls:Nc(this._options.whitelistUrls||[],e.whitelistUrls||[])}},e.prototype._getPossibleEventMessages=function(e){if(e.message)return[e.message];if(e.exception)try{var t=e.exception.values&&e.exception.values[0]||{},n=t.type,r=void 0===n?"":n,i=t.value,o=void 0===i?"":i;return[""+o,r+": "+o]}catch(t){return Gf.error("Cannot extract message for event "+Cf(e)),[]}return[]},e.prototype._getEventFilterUrl=function(e){try{if(e.stacktrace){var t=e.stacktrace.frames;return t&&t[t.length-1].filename||null}if(e.exception){var n=e.exception.values&&e.exception.values[0].stacktrace&&e.exception.values[0].stacktrace.frames;return n&&n[n.length-1].filename||null}return null}catch(t){return Gf.error("Cannot extract url for event "+Cf(e)),null}},e.id="InboundFilters",e}(),bp=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,wp=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,_p=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Ep=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,kp=/\((\S*)(?::(\d+))(?::(\d+))\)/;function Sp(e){var t=null,n=e&&e.framesToPop;try{if(t=function(e){if(!e||!e.stacktrace)return null;for(var t,n=e.stacktrace,r=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,i=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,o=n.split("\n"),a=[],s=0;s<o.length;s+=2){var c=null;(t=r.exec(o[s]))?c={url:t[2],func:t[3],args:[],line:+t[1],column:null}:(t=i.exec(o[s]))&&(c={url:t[6],func:t[3]||t[4],args:t[5]?t[5].split(","):[],line:+t[1],column:+t[2]}),c&&(!c.func&&c.line&&(c.func="?"),a.push(c))}if(!a.length)return null;return{message:xp(e),name:e.name,stack:a}}(e))return Tp(t,n)}catch(e){}try{if(t=function(e){if(!e||!e.stack)return null;for(var t,n,r,i=[],o=e.stack.split("\n"),a=0;a<o.length;++a){if(n=bp.exec(o[a])){var s=n[2]&&0===n[2].indexOf("native");n[2]&&0===n[2].indexOf("eval")&&(t=kp.exec(n[2]))&&(n[2]=t[1],n[3]=t[2],n[4]=t[3]),r={url:n[2]&&0===n[2].indexOf("address at ")?n[2].substr("address at ".length):n[2],func:n[1]||"?",args:s?[n[2]]:[],line:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}else if(n=_p.exec(o[a]))r={url:n[2],func:n[1]||"?",args:[],line:+n[3],column:n[4]?+n[4]:null};else{if(!(n=wp.exec(o[a])))continue;n[3]&&n[3].indexOf(" > eval")>-1&&(t=Ep.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=t[1],n[4]=t[2],n[5]=""):0!==a||n[5]||void 0===e.columnNumber||(i[0].column=e.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),i.push(r)}if(!i.length)return null;return{message:xp(e),name:e.name,stack:i}}(e))return Tp(t,n)}catch(e){}return{message:xp(e),name:e&&e.name,stack:[],failed:!0}}function Tp(e,t){try{return Rc({},e,{stack:e.stack.slice(t)})}catch(t){return e}}function xp(e){var t=e&&e.message;return t?t.error&&"string"==typeof t.error.message?t.error.message:t:"No error message"}function Ap(e){var t=Pp(e.stack),n={type:e.name,value:e.message};return t&&t.length&&(n.stacktrace={frames:t}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function Op(e){return{exception:{values:[Ap(e)]}}}function Pp(e){if(!e||!e.length)return[];var t=e,n=t[0].func||"",r=t[t.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(t=t.slice(1)),-1!==r.indexOf("sentryWrapped")&&(t=t.slice(0,-1)),t.map((function(e){return{colno:null===e.column?void 0:e.column,filename:e.url||t[0].url,function:e.func||"?",in_app:!0,lineno:null===e.line?void 0:e.line}})).slice(0,50).reverse()}function Ip(e,t,n){var r,i;if(void 0===n&&(n={}),Vc(e)&&e.error)return r=Op(Sp(e=e.error));if(Wc(e)||(i=e,"[object DOMException]"===Object.prototype.toString.call(i))){var o=e,a=o.name||(Wc(o)?"DOMError":"DOMException"),s=o.message?a+": "+o.message:a;return Lf(r=jp(s,t,n),s),r}return Hc(e)?r=Op(Sp(e)):$c(e)||Gc(e)?(Nf(r=function(e,t,n){var r={exception:{values:[{type:Gc(e)?e.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+yh(e)}]},extra:{__serialized__:dh(e)}};if(t){var i=Pp(Sp(t).stack);r.stacktrace={frames:i}}return r}(e,t,n.rejection),{synthetic:!0}),r):(Lf(r=jp(e,t,n),""+e,void 0),Nf(r,{synthetic:!0}),r)}function jp(e,t,n){void 0===n&&(n={});var r={message:e};if(n.attachStacktrace&&t){var i=Pp(Sp(t).stack);r.stacktrace={frames:i}}return r}var Cp=function(){function e(e){this.options=e,this._buffer=new Th(30),this.url=new ap(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return e.prototype.sendEvent=function(e){throw new qc("Transport Class has to implement `sendEvent` method")},e.prototype.close=function(e){return this._buffer.drain(e)},e}(),Rp=Pf(),Lp=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._disabledUntil=new Date(Date.now()),t}return Ic(t,e),t.prototype.sendEvent=function(e){var t=this;if(new Date(Date.now())<this._disabledUntil)return Promise.reject({event:e,reason:"Transport locked till "+this._disabledUntil+" due to too many requests.",status:429});var n={body:JSON.stringify(e),method:"POST",referrerPolicy:Oh()?"origin":""};return void 0!==this.options.headers&&(n.headers=this.options.headers),this._buffer.add(new Sh((function(e,r){Rp.fetch(t.url,n).then((function(n){var i=Cc.fromHttpCode(n.status);if(i!==Cc.Success){if(i===Cc.RateLimit){var o=Date.now();t._disabledUntil=new Date(o+Vf(o,n.headers.get("Retry-After"))),Gf.warn("Too many requests, backing off till: "+t._disabledUntil)}r(n)}else e({status:i})})).catch(r)})))},t}(Cp),Np=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._disabledUntil=new Date(Date.now()),t}return Ic(t,e),t.prototype.sendEvent=function(e){var t=this;return new Date(Date.now())<this._disabledUntil?Promise.reject({event:e,reason:"Transport locked till "+this._disabledUntil+" due to too many requests.",status:429}):this._buffer.add(new Sh((function(n,r){var i=new XMLHttpRequest;for(var o in i.onreadystatechange=function(){if(4===i.readyState){var e=Cc.fromHttpCode(i.status);if(e!==Cc.Success){if(e===Cc.RateLimit){var o=Date.now();t._disabledUntil=new Date(o+Vf(o,i.getResponseHeader("Retry-After"))),Gf.warn("Too many requests, backing off till: "+t._disabledUntil)}r(i)}else n({status:e})}},i.open("POST",t.url),t.options.headers)t.options.headers.hasOwnProperty(o)&&i.setRequestHeader(o,t.options.headers[o]);i.send(JSON.stringify(e))})))},t}(Cp),Mp=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ic(t,e),t.prototype._setupTransport=function(){if(!this._options.dsn)return e.prototype._setupTransport.call(this);var t=Rc({},this._options.transportOptions,{dsn:this._options.dsn});return this._options.transport?new this._options.transport(t):xh()?new Lp(t):new Np(t)},t.prototype.eventFromException=function(e,t){var n=Ip(e,t&&t.syntheticException||void 0,{attachStacktrace:this._options.attachStacktrace});return Nf(n,{handled:!0,type:"generic"}),n.level=jc.Error,t&&t.event_id&&(n.event_id=t.event_id),Sh.resolve(n)},t.prototype.eventFromMessage=function(e,t,n){void 0===t&&(t=jc.Info);var r=jp(e,n&&n.syntheticException||void 0,{attachStacktrace:this._options.attachStacktrace});return r.level=t,n&&n.event_id&&(r.event_id=n.event_id),Sh.resolve(r)},t}(hp),Up=function(e){function t(t){return void 0===t&&(t={}),e.call(this,Mp,t)||this}return Ic(t,e),t.prototype._prepareEvent=function(t,n,r){return t.platform=t.platform||"javascript",t.sdk=Rc({},t.sdk,{name:"sentry.javascript.browser",packages:Nc(t.sdk&&t.sdk.packages||[],[{name:"npm:@sentry/browser",version:"5.15.5"}]),version:"5.15.5"}),e.prototype._prepareEvent.call(this,t,n,r)},t.prototype.showReportDialog=function(e){void 0===e&&(e={});var t=Pf().document;if(t)if(this._isEnabled()){var n=e.dsn||this.getDsn();if(e.eventId)if(n){var r=t.createElement("script");r.async=!0,r.src=new ap(n).getReportDialogEndpoint(e),e.onLoad&&(r.onload=e.onLoad),(t.head||t.body).appendChild(r)}else Gf.error("Missing `Dsn` option in showReportDialog call");else Gf.error("Missing `eventId` option in showReportDialog call")}else Gf.error("Trying to call showReportDialog with Sentry Client is disabled")},t}(lp),Dp=0;function Fp(){return Dp>0}function Bp(){Dp+=1,setTimeout((function(){Dp-=1}))}function qp(e,t,n){if(void 0===t&&(t={}),"function"!=typeof e)return e;try{if(e.__sentry__)return e;if(e.__sentry_wrapped__)return e.__sentry_wrapped__}catch(t){return e}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var i=r.map((function(e){return qp(e,t)}));return e.handleEvent?e.handleEvent.apply(this,i):e.apply(this,i)}catch(e){throw Bp(),op((function(n){n.addEventProcessor((function(e){var n=Rc({},e);return t.mechanism&&(Lf(n,void 0,void 0),Nf(n,t.mechanism)),n.extra=Rc({},n.extra,{arguments:r}),n})),ip(e)})),e}};try{for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}catch(e){}e.prototype=e.prototype||{},r.prototype=e.prototype,Object.defineProperty(e,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:e}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return e.name}})}catch(e){}return r}var Hp=function(){function e(t){this.name=e.id,this._onErrorHandlerInstalled=!1,this._onUnhandledRejectionHandlerInstalled=!1,this._options=Rc({onerror:!0,onunhandledrejection:!0},t)}return e.prototype.setupOnce=function(){Error.stackTraceLimit=50,this._options.onerror&&(Gf.log("Global Handler attached: onerror"),this._installGlobalOnErrorHandler()),this._options.onunhandledrejection&&(Gf.log("Global Handler attached: onunhandledrejection"),this._installGlobalOnUnhandledRejectionHandler())},e.prototype._installGlobalOnErrorHandler=function(){var t=this;this._onErrorHandlerInstalled||(Lh({callback:function(n){var r=n.error,i=Zh(),o=i.getIntegration(e),a=r&&!0===r.__sentry_own_request__;if(o&&!Fp()&&!a){var s=i.getClient(),c=Yc(r)?t._eventFromIncompleteOnError(n.msg,n.url,n.line,n.column):t._enhanceEventWithInitialFrame(Ip(r,void 0,{attachStacktrace:s&&s.getOptions().attachStacktrace,rejection:!1}),n.url,n.line,n.column);Nf(c,{handled:!1,type:"onerror"}),i.captureEvent(c,{originalException:r})}},type:"error"}),this._onErrorHandlerInstalled=!0)},e.prototype._installGlobalOnUnhandledRejectionHandler=function(){var t=this;this._onUnhandledRejectionHandlerInstalled||(Lh({callback:function(n){var r=n;try{"reason"in n?r=n.reason:"detail"in n&&"reason"in n.detail&&(r=n.detail.reason)}catch(e){}var i=Zh(),o=i.getIntegration(e),a=r&&!0===r.__sentry_own_request__;if(!o||Fp()||a)return!0;var s=i.getClient(),c=Yc(r)?t._eventFromIncompleteRejection(r):Ip(r,void 0,{attachStacktrace:s&&s.getOptions().attachStacktrace,rejection:!0});c.level=jc.Error,Nf(c,{handled:!1,type:"onunhandledrejection"}),i.captureEvent(c,{originalException:r})},type:"unhandledrejection"}),this._onUnhandledRejectionHandlerInstalled=!0)},e.prototype._eventFromIncompleteOnError=function(e,t,n,r){var i,o=Vc(e)?e.message:e;if(zc(o)){var a=o.match(/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i);a&&(i=a[1],o=a[2])}var s={exception:{values:[{type:i||"Error",value:o}]}};return this._enhanceEventWithInitialFrame(s,t,n,r)},e.prototype._eventFromIncompleteRejection=function(e){return{exception:{values:[{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+e}]}}},e.prototype._enhanceEventWithInitialFrame=function(e,t,n,r){e.exception=e.exception||{},e.exception.values=e.exception.values||[],e.exception.values[0]=e.exception.values[0]||{},e.exception.values[0].stacktrace=e.exception.values[0].stacktrace||{},e.exception.values[0].stacktrace.frames=e.exception.values[0].stacktrace.frames||[];var i=isNaN(parseInt(r,10))?void 0:r,o=isNaN(parseInt(n,10))?void 0:n,a=zc(t)&&t.length>0?t:function(){try{return document.location.href}catch(e){return""}}();return 0===e.exception.values[0].stacktrace.frames.length&&e.exception.values[0].stacktrace.frames.push({colno:i,filename:a,function:"?",in_app:!0,lineno:o}),e},e.id="GlobalHandlers",e}(),Vp=function(){function e(){this._ignoreOnError=0,this.name=e.id}return e.prototype._wrapTimeFunction=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=t[0];return t[0]=qp(r,{mechanism:{data:{function:Wf(e)},handled:!0,type:"instrument"}}),e.apply(this,t)}},e.prototype._wrapRAF=function(e){return function(t){return e(qp(t,{mechanism:{data:{function:"requestAnimationFrame",handler:Wf(e)},handled:!0,type:"instrument"}}))}},e.prototype._wrapEventTarget=function(e){var t=Pf(),n=t[e]&&t[e].prototype;n&&n.hasOwnProperty&&n.hasOwnProperty("addEventListener")&&(fh(n,"addEventListener",(function(t){return function(n,r,i){try{"function"==typeof r.handleEvent&&(r.handleEvent=qp(r.handleEvent.bind(r),{mechanism:{data:{function:"handleEvent",handler:Wf(r),target:e},handled:!0,type:"instrument"}}))}catch(e){}return t.call(this,n,qp(r,{mechanism:{data:{function:"addEventListener",handler:Wf(r),target:e},handled:!0,type:"instrument"}}),i)}})),fh(n,"removeEventListener",(function(e){return function(t,n,r){var i=n;try{i=i&&(i.__sentry_wrapped__||i)}catch(e){}return e.call(this,t,i,r)}})))},e.prototype._wrapXHR=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=this,i=["onload","onerror","onprogress","onreadystatechange"];return i.forEach((function(e){e in r&&"function"==typeof r[e]&&fh(r,e,(function(t){var n={mechanism:{data:{function:e,handler:Wf(t)},handled:!0,type:"instrument"}};return t.__sentry_original__&&(n.mechanism.data.handler=Wf(t.__sentry_original__)),qp(t,n)}))})),e.apply(this,t)}},e.prototype.setupOnce=function(){this._ignoreOnError=this._ignoreOnError;var e=Pf();fh(e,"setTimeout",this._wrapTimeFunction.bind(this)),fh(e,"setInterval",this._wrapTimeFunction.bind(this)),fh(e,"requestAnimationFrame",this._wrapRAF.bind(this)),"XMLHttpRequest"in e&&fh(XMLHttpRequest.prototype,"send",this._wrapXHR.bind(this)),["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"].forEach(this._wrapEventTarget.bind(this))},e.id="TryCatch",e}(),Wp=function(){function e(t){this.name=e.id,this._options=Rc({console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0},t)}return e.prototype._consoleBreadcrumb=function(e){var t={category:"console",data:{arguments:e.args,logger:"console"},level:jc.fromString(e.level),message:Tf(e.args," ")};if("assert"===e.level){if(!1!==e.args[0])return;t.message="Assertion failed: "+(Tf(e.args.slice(1)," ")||"console.assert"),t.data.arguments=e.args.slice(1)}Zh().addBreadcrumb(t,{input:e.args,level:e.level})},e.prototype._domBreadcrumb=function(e){var t;try{t=e.event.target?Mf(e.event.target):Mf(e.event)}catch(e){t="<unknown>"}0!==t.length&&Zh().addBreadcrumb({category:"ui."+e.name,message:t},{event:e.event,name:e.name})},e.prototype._xhrBreadcrumb=function(e){if(e.endTimestamp){if(e.xhr.__sentry_own_request__)return;Zh().addBreadcrumb({category:"xhr",data:e.xhr.__sentry_xhr__,type:"http"},{xhr:e.xhr})}else this._options.sentry&&e.xhr.__sentry_own_request__&&zp(e.args[0])},e.prototype._fetchBreadcrumb=function(e){if(e.endTimestamp){var t=Zh().getClient(),n=t&&t.getDsn();if(this._options.sentry&&n){var r=new ap(n).getStoreEndpoint();if(r&&-1!==e.fetchData.url.indexOf(r)&&"POST"===e.fetchData.method&&e.args[1]&&e.args[1].body)return void zp(e.args[1].body)}e.error?Zh().addBreadcrumb({category:"fetch",data:Rc({},e.fetchData,{status_code:e.response.status}),level:jc.Error,type:"http"},{data:e.error,input:e.args}):Zh().addBreadcrumb({category:"fetch",data:Rc({},e.fetchData,{status_code:e.response.status}),type:"http"},{input:e.args,response:e.response})}},e.prototype._historyBreadcrumb=function(e){var t=Pf(),n=e.from,r=e.to,i=jf(t.location.href),o=jf(n),a=jf(r);o.path||(o=i),i.protocol===a.protocol&&i.host===a.host&&(r=a.relative),i.protocol===o.protocol&&i.host===o.host&&(n=o.relative),Zh().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},e.prototype.setupOnce=function(){var e=this;this._options.console&&Lh({callback:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e._consoleBreadcrumb.apply(e,Nc(t))},type:"console"}),this._options.dom&&Lh({callback:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e._domBreadcrumb.apply(e,Nc(t))},type:"dom"}),this._options.xhr&&Lh({callback:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e._xhrBreadcrumb.apply(e,Nc(t))},type:"xhr"}),this._options.fetch&&Lh({callback:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e._fetchBreadcrumb.apply(e,Nc(t))},type:"fetch"}),this._options.history&&Lh({callback:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e._historyBreadcrumb.apply(e,Nc(t))},type:"history"})},e.id="Breadcrumbs",e}();function zp(e){try{var t=JSON.parse(e);Zh().addBreadcrumb({category:"sentry."+("transaction"===t.type?"transaction":"event"),event_id:t.event_id,level:t.level||jc.fromString("error"),message:Cf(t)},{event:t})}catch(e){Gf.error("Error while adding sentry type breadcrumb")}}var Yp=function(){function e(t){void 0===t&&(t={}),this.name=e.id,this._key=t.key||"cause",this._limit=t.limit||5}return e.prototype.setupOnce=function(){Kh((function(t,n){var r=Zh().getIntegration(e);return r?r._handler(t,n):t}))},e.prototype._handler=function(e,t){if(!(e.exception&&e.exception.values&&t&&Jc(t.originalException,Error)))return e;var n=this._walkErrorTree(t.originalException,this._key);return e.exception.values=Nc(n,e.exception.values),e},e.prototype._walkErrorTree=function(e,t,n){if(void 0===n&&(n=[]),!Jc(e[t],Error)||n.length+1>=this._limit)return n;var r=Ap(Sp(e[t]));return this._walkErrorTree(e[t],t,Nc([r],n))},e.id="LinkedErrors",e}(),$p=Pf(),Gp=function(){function e(){this.name=e.id}return e.prototype.setupOnce=function(){Kh((function(t){if(Zh().getIntegration(e)){if(!$p.navigator||!$p.location)return t;var n=t.request||{};return n.url=n.url||$p.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=$p.navigator.userAgent,Rc({},t,{request:n})}return t}))},e.id="UserAgent",e}(),Kp=[new yp,new pp,new Vp,new Wp,new Hp,new Yp,new Gp];function Xp(e){if(void 0===e&&(e={}),void 0===e.defaultIntegrations&&(e.defaultIntegrations=Kp),void 0===e.release){var t=Pf();t.SENTRY_RELEASE&&t.SENTRY_RELEASE.id&&(e.release=t.SENTRY_RELEASE.id)}!function(e,t){!0===t.debug&&Gf.enable();var n=Zh(),r=new e(t);n.bindClient(r)}(Up,e)}var Jp=We.find,Qp=!0,Zp=Ke("find");"find"in[]&&Array(1).find((function(){Qp=!1})),Pe({target:"Array",proto:!0,forced:Qp||!Zp},{find:function(e){return Jp(this,e,arguments.length>1?arguments[1]:void 0)}}),jt("find");var ed="[\t\n\v\f\r \u2028\u2029\ufeff]",td=RegExp("^"+ed+ed+"*"),nd=RegExp(ed+ed+"*$"),rd=function(e){return function(t){var n=String(d(t));return 1&e&&(n=n.replace(td,"")),2&e&&(n=n.replace(nd,"")),n}},id={start:rd(1),end:rd(2),trim:rd(3)},od=me.f,ad=T.f,sd=O.f,cd=id.trim,ud=r.Number,ld=ud.prototype,fd="Number"==f(Ot(ld)),hd=function(e){var t,n,r,i,o,a,s,c,u=m(e,!1);if("string"==typeof u&&u.length>2)if(43===(t=(u=cd(u)).charCodeAt(0))||45===t){if(88===(n=u.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=(o=u.slice(2)).length,s=0;s<a;s++)if((c=o.charCodeAt(s))<48||c>i)return NaN;return parseInt(o,r)}return+u};if(Ae("Number",!ud(" 0o1")||!ud("0b1")||ud("+0x1"))){for(var pd,dd=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof dd&&(fd?i((function(){ld.valueOf.call(n)})):"Number"!=f(n))?Gt(new ud(hd(t)),n,dd):hd(t)},gd=o?od(ud):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),vd=0;gd.length>vd;vd++)b(ud,pd=gd[vd])&&!b(dd,pd)&&sd(dd,pd,ad(ud,pd));dd.prototype=ld,ld.constructor=dd,Z(r,"Number",dd)}Pe({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var md=c.f,yd=function(e){return function(t){for(var n,r=g(t),i=_t(r),a=i.length,s=0,c=[];a>s;)n=i[s++],o&&!md.call(r,n)||c.push(e?[n,r[n]]:r[n]);return c}},bd={entries:yd(!0),values:yd(!1)}.entries;function wd(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Ed(e,t,n){return t&&_d(e.prototype,t),n&&_d(e,n),e}function kd(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Sd(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}Pe({target:"Object",stat:!0},{entries:function(e){return bd(e)}});var Td=function(e){return null!=e?e.constructor:null},xd=function(e,t){return!!(e&&t&&e instanceof t)},Ad=function(e){return null==e},Od=function(e){return Td(e)===Object},Pd=function(e){return Td(e)===String},Id=function(e){return Array.isArray(e)},jd=function(e){return xd(e,NodeList)},Cd=Ad,Rd=Od,Ld=function(e){return Td(e)===Number&&!Number.isNaN(e)},Nd=Pd,Md=function(e){return Td(e)===Boolean},Ud=Id,Dd=jd,Fd=function(e){return xd(e,Element)},Bd=function(e){return xd(e,Event)},qd=function(e){return Ad(e)||(Pd(e)||Id(e)||jd(e))&&!e.length||Od(e)&&!Object.keys(e).length},Hd={facebook:{domain:"facebook.com",url:function(e){return"https://graph.facebook.com/?id=".concat(e,"&fields=og_object{engagement}")},shareCount:function(e){return e.og_object.engagement.count},popup:{width:640,height:360}},twitter:{domain:"twitter.com",url:function(){return null},shareCount:function(){return null},popup:{width:640,height:240}},pinterest:{domain:"pinterest.com",url:function(e){return"https://widgets.pinterest.com/v1/urls/count.json?url=".concat(e)},shareCount:function(e){return e.count},popup:{width:830,height:700}},github:{domain:"github.com",url:function(e,t){return"https://api.github.com/repos/".concat(e).concat(Nd(t)?"?access_token=".concat(t):"")},shareCount:function(e){return e.data.stargazers_count}},youtube:{domain:"youtube.com",url:function(e,t){return"https://www.googleapis.com/youtube/v3/channels?part=statistics&id=".concat(e,"&key=").concat(t)},shareCount:function(e){if(!qd(e.error))return null;var t=Sd(e.items,1)[0];return qd(t)?null:t.statistics.subscriberCount}}},Vd={debug:!1,wrapper:{className:"shr"},count:{className:"shr__count",displayZero:!1,format:!0,position:"after",increment:!0},tokens:{github:"",youtube:""},storage:{enabled:!0,key:"shr",ttl:3e5}};function Wd(e){return new Promise((function(t,n){var r="jsonp_callback_".concat(Math.round(1e5*Math.random())),i=document.createElement("script");i.addEventListener("error",(function(e){return n(e)})),window[r]=function(e){delete window[r],document.body.removeChild(i),t(e)};var o=new URL(e);o.searchParams.set("callback",r),i.setAttribute("src",o.toString()),document.body.appendChild(i)}))}var zd=function(){},Yd=function(){function e(){var t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];wd(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return Ed(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):zd}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):zd}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):zd}}]),e}();function $d(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function Gd(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var r=0<n?t.cloneNode(!0):t,i=e.parentNode,o=e.nextSibling;r.appendChild(e),o?i.insertBefore(r,o):i.appendChild(r)}))}function Kd(e,t,n){var r=document.createElement(e);return Rd(t)&&function(e,t){!Fd(e)||qd(t)||Object.entries(t).filter((function(e){var t=Sd(e,2)[1];return!Cd(t)})).forEach((function(t){var n=Sd(t,2),r=n[0],i=n[1];return e.setAttribute(r,i)}))}(r,t),Nd(n)&&(r.innerText=n),r}function Xd(e){var t=/\./.test(1.1.toLocaleString())?".":",",n=new RegExp("\\".concat(t,"\\d+$"));return Math.round(e).toLocaleString().replace(n,"")}function Jd(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;var i=n.shift();return Rd(i)?(Object.keys(i).forEach((function(t){Rd(i[t])?(!Object.keys(e).includes(t)&&Object.assign(e,kd({},t,{})),Jd(e[t],i[t])):Object.assign(e,kd({},t,i[t]))})),Jd.apply(void 0,[e].concat(n))):e}var Qd=function(){function e(t,n){var r=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];wd(this,e),this.enabled=r&&e.supported,this.key=t,this.ttl=n}return Ed(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(qd(n))return null;var r=window.localStorage.getItem("".concat(this.key,"_ttl"));if(qd(r)||r<Date.now())return null;var i=JSON.parse(n);return Nd(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&Rd(t)){var n=this.get();qd(n)&&(n={}),Jd(n,t),window.localStorage.setItem(this.key,JSON.stringify(n)),window.localStorage.setItem("".concat(this.key,"_ttl"),Date.now()+this.ttl)}}}],[{key:"supported",get:function(){try{return"localStorage"in window&&(window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0)}catch(e){return!1}}}]),e}();var Zd=function(){function e(t,n){var r=this;wd(this,e),this.elements={count:null,trigger:null,popup:null},Fd(t)?this.elements.trigger=t:Nd(t)&&(this.elements.trigger=document.querySelector(t)),Fd(this.elements.trigger)&&qd(this.elements.trigger.shr)&&(this.config=Jd({},Vd,n,{networks:Hd}),this.console=new Yd(this.config.debug),this.storage=new Qd(this.config.storage.key,this.config.storage.ttl,this.config.storage.enabled),this.getCount().then((function(e){return r.updateDisplay(e)})).catch((function(){})),this.listeners(!0),this.elements.trigger.shr=this)}return Ed(e,[{key:"destroy",value:function(){this.listeners(!1)}},{key:"listeners",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]&&arguments[0]?"addEventListener":"removeEventListener";this.elements.trigger[t]("click",(function(t){return e.share(t)}),!1)}},{key:"share",value:function(e){var t=this;this.openPopup(e);var n=this.config.count.increment;this.getCount().then((function(e){return t.updateDisplay(e,n)})).catch((function(){}))}},{key:"openPopup",value:function(e){if(!qd(this.network)&&this.networkConfig.popup){Bd(e)&&e.preventDefault();var t=this.networkConfig.popup,n=t.width,r=t.height,i="shr-popup--".concat(this.network);if(this.popup&&!this.popup.closed)this.popup.focus(),this.console.log("Popup re-focused.");else{var o=void 0===window.screenLeft?window.screen.left:window.screenLeft,a=void 0===window.screenTop?window.screen.top:window.screenTop,s=window.screen.width/2-n/2+o,c=window.screen.height/2-r/2+a;this.popup=window.open(this.href,i,"top=".concat(c,",left=").concat(s,",width=").concat(n,",height=").concat(r)),this.popup&&!this.popup.closed&&Md(this.popup.closed)?(this.popup.focus(),this.console.log("Popup opened.")):this.console.error("Popup blocked.")}}}},{key:"getCount",value:function(){var e=this,t=!(0<arguments.length&&void 0!==arguments[0])||arguments[0];return new Promise((function(n,r){var i=e.apiUrl;if(qd(i))r(new Error("No URL available for ".concat(e.network,".")));else{if(t){var o=e.storage.get(e.target);if(!qd(o)&&Object.keys(o).includes(e.network)){var a=o[e.network];return n(Ld(a)?a:0),void e.console.log("getCount for '".concat(e.target,"' for '").concat(e.network,"' resolved from cache."))}}Wd(i).then((function(t){var r=0,i=e.elements.trigger.getAttribute("data-shr-display");r=qd(i)?e.networkConfig.shareCount(t):t[i],qd(r)?r=0:(r=parseInt(r,10),!Ld(r)&&(r=0)),e.storage.set(kd({},e.target,kd({},e.network,r))),n(r)})).catch(r)}}))}},{key:"updateDisplay",value:function(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],n=this.config,r=n.count,i=n.wrapper,o=t?e+1:e,a=r.position.toLowerCase();if(0<o||r.displayZero){var s=function(e){return Math.round(o/e*10)/10},c=Xd(o);r.format&&(1e6<o?c="".concat(s(1e6),"M"):1e3<o&&(c="".concat(s(1e3),"K"))),Fd(this.elements.count)?this.elements.count.textContent=c:(Gd(this.elements.trigger,Kd("span",{class:i.className})),this.elements.count=Kd("span",{class:"".concat(r.className," ").concat(r.className,"--").concat(a)},c),this.elements.trigger.insertAdjacentElement("after"===a?"afterend":"beforebegin",this.elements.count))}}},{key:"href",get:function(){return Fd(this.elements.trigger)?this.elements.trigger.href:null}},{key:"network",get:function(){var e=this;if(!Fd(this.elements.trigger))return null;var t=this.config.networks;return Object.keys(t).find((function(n){return function(e){var t=new URL(e).hostname,n=t.split("."),r=n.length;return 2<r&&(t="".concat(n[r-2],".").concat(n[r-1]),2===n[r-2].length&&2===n[r-1].length&&(t="".concat(n[r-3],".").concat(t))),t}(e.href)===t[n].domain}))}},{key:"networkConfig",get:function(){return qd(this.network)?null:this.config.networks[this.network]}},{key:"target",get:function(){if(qd(this.network))return null;var e=new URL(this.href);switch(this.network){case"facebook":return e.searchParams.get("u");case"github":return e.pathname.substring(1);case"youtube":return e.pathname.split("/").pop();default:return e.searchParams.get("url")}}},{key:"apiUrl",get:function(){if(qd(this.network))return null;var e=this.config.tokens;switch(this.network){case"github":return this.networkConfig.url(this.target,e.github);case"youtube":return this.networkConfig.url(this.target,e.youtube);default:return this.networkConfig.url(encodeURIComponent(this.target))}}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(Nd(t)?r=Array.from(document.querySelectorAll(t)):Fd(t)?r=[t]:Dd(t)?r=Array.from(t):Ud(t)&&(r=t.filter(Fd)),qd(r))return null;var i=Object.assign({},Vd,n);return Nd(t)&&i.watch&&new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){Fd(n)&&$d(n,t)&&new e(n,i)}))}))})).observe(document.body,{childList:!0,subtree:!0}),r.map((function(t){return new e(t,n)}))}}]),e}(),eg=function(e){return e&&e.Math==Math&&e},tg=eg("object"==typeof globalThis&&globalThis)||eg("object"==typeof window&&window)||eg("object"==typeof self&&self)||eg("object"==typeof e&&e)||Function("return this")(),ng=function(e){try{return!!e()}catch(e){return!0}},rg=!ng((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),ig={}.propertyIsEnumerable,og=Object.getOwnPropertyDescriptor,ag={f:og&&!ig.call({1:2},1)?function(e){var t=og(this,e);return!!t&&t.enumerable}:ig},sg=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},cg={}.toString,ug=function(e){return cg.call(e).slice(8,-1)},lg="".split,fg=ng((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==ug(e)?lg.call(e,""):Object(e)}:Object,hg=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},pg=function(e){return fg(hg(e))},dg=function(e){return"object"==typeof e?null!==e:"function"==typeof e},gg=function(e,t){if(!dg(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!dg(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!dg(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!dg(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},vg={}.hasOwnProperty,mg=function(e,t){return vg.call(e,t)},yg=tg.document,bg=dg(yg)&&dg(yg.createElement),wg=function(e){return bg?yg.createElement(e):{}},_g=!rg&&!ng((function(){return 7!=Object.defineProperty(wg("div"),"a",{get:function(){return 7}}).a})),Eg=Object.getOwnPropertyDescriptor,kg={f:rg?Eg:function(e,t){if(e=pg(e),t=gg(t,!0),_g)try{return Eg(e,t)}catch(e){}if(mg(e,t))return sg(!ag.f.call(e,t),e[t])}},Sg=function(e){if(!dg(e))throw TypeError(String(e)+" is not an object");return e},Tg=Object.defineProperty,xg={f:rg?Tg:function(e,t,n){if(Sg(e),t=gg(t,!0),Sg(n),_g)try{return Tg(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},Ag=rg?function(e,t,n){return xg.f(e,t,sg(1,n))}:function(e,t,n){return e[t]=n,e},Og=function(e,t){try{Ag(tg,e,t)}catch(n){tg[e]=t}return t},Pg=tg["__core-js_shared__"]||Og("__core-js_shared__",{}),Ig=Function.toString;"function"!=typeof Pg.inspectSource&&(Pg.inspectSource=function(e){return Ig.call(e)});var jg,Cg,Rg,Lg=Pg.inspectSource,Ng=tg.WeakMap,Mg="function"==typeof Ng&&/native code/.test(Lg(Ng)),Ug=t((function(e){(e.exports=function(e,t){return Pg[e]||(Pg[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),Dg=0,Fg=Math.random(),Bg=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Dg+Fg).toString(36)},qg=Ug("keys"),Hg=function(e){return qg[e]||(qg[e]=Bg(e))},Vg={},Wg=tg.WeakMap;if(Mg){var zg=new Wg,Yg=zg.get,$g=zg.has,Gg=zg.set;jg=function(e,t){return Gg.call(zg,e,t),t},Cg=function(e){return Yg.call(zg,e)||{}},Rg=function(e){return $g.call(zg,e)}}else{var Kg=Hg("state");Vg[Kg]=!0,jg=function(e,t){return Ag(e,Kg,t),t},Cg=function(e){return mg(e,Kg)?e[Kg]:{}},Rg=function(e){return mg(e,Kg)}}var Xg,Jg,Qg={set:jg,get:Cg,has:Rg,enforce:function(e){return Rg(e)?Cg(e):jg(e,{})},getterFor:function(e){return function(t){var n;if(!dg(t)||(n=Cg(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Zg=t((function(e){var t=Qg.get,n=Qg.enforce,r=String(String).split("String");(e.exports=function(e,t,i,o){var a=!!o&&!!o.unsafe,s=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof i&&("string"!=typeof t||mg(i,"name")||Ag(i,"name",t),n(i).source=r.join("string"==typeof t?t:"")),e!==tg?(a?!c&&e[t]&&(s=!0):delete e[t],s?e[t]=i:Ag(e,t,i)):s?e[t]=i:Og(t,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||Lg(this)}))})),ev=tg,tv=function(e){return"function"==typeof e?e:void 0},nv=function(e,t){return arguments.length<2?tv(ev[e])||tv(tg[e]):ev[e]&&ev[e][t]||tg[e]&&tg[e][t]},rv=Math.ceil,iv=Math.floor,ov=function(e){return isNaN(e=+e)?0:(e>0?iv:rv)(e)},av=Math.min,sv=function(e){return e>0?av(ov(e),9007199254740991):0},cv=Math.max,uv=Math.min,lv=function(e,t){var n=ov(e);return n<0?cv(n+t,0):uv(n,t)},fv=function(e){return function(t,n,r){var i,o=pg(t),a=sv(o.length),s=lv(r,a);if(e&&n!=n){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===n)return e||s||0;return!e&&-1}},hv={includes:fv(!0),indexOf:fv(!1)},pv=hv.indexOf,dv=function(e,t){var n,r=pg(e),i=0,o=[];for(n in r)!mg(Vg,n)&&mg(r,n)&&o.push(n);for(;t.length>i;)mg(r,n=t[i++])&&(~pv(o,n)||o.push(n));return o},gv=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],vv=gv.concat("length","prototype"),mv={f:Object.getOwnPropertyNames||function(e){return dv(e,vv)}},yv={f:Object.getOwnPropertySymbols},bv=nv("Reflect","ownKeys")||function(e){var t=mv.f(Sg(e)),n=yv.f;return n?t.concat(n(e)):t},wv=function(e,t){for(var n=bv(t),r=xg.f,i=kg.f,o=0;o<n.length;o++){var a=n[o];mg(e,a)||r(e,a,i(t,a))}},_v=/#|\.prototype\./,Ev=function(e,t){var n=Sv[kv(e)];return n==xv||n!=Tv&&("function"==typeof t?ng(t):!!t)},kv=Ev.normalize=function(e){return String(e).replace(_v,".").toLowerCase()},Sv=Ev.data={},Tv=Ev.NATIVE="N",xv=Ev.POLYFILL="P",Av=Ev,Ov=kg.f,Pv=function(e,t){var n,r,i,o,a,s=e.target,c=e.global,u=e.stat;if(n=c?tg:u?tg[s]||Og(s,{}):(tg[s]||{}).prototype)for(r in t){if(o=t[r],i=e.noTargetGet?(a=Ov(n,r))&&a.value:n[r],!Av(c?r:s+(u?".":"#")+r,e.forced)&&void 0!==i){if(typeof o==typeof i)continue;wv(o,i)}(e.sham||i&&i.sham)&&Ag(o,"sham",!0),Zg(n,r,o,e)}},Iv=Array.isArray||function(e){return"Array"==ug(e)},jv=function(e){return Object(hg(e))},Cv=function(e,t,n){var r=gg(t);r in e?xg.f(e,r,sg(0,n)):e[r]=n},Rv=!!Object.getOwnPropertySymbols&&!ng((function(){return!String(Symbol())})),Lv=Rv&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Nv=Ug("wks"),Mv=tg.Symbol,Uv=Lv?Mv:Mv&&Mv.withoutSetter||Bg,Dv=function(e){return mg(Nv,e)||(Rv&&mg(Mv,e)?Nv[e]=Mv[e]:Nv[e]=Uv("Symbol."+e)),Nv[e]},Fv=Dv("species"),Bv=function(e,t){var n;return Iv(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Iv(n.prototype)?dg(n)&&null===(n=n[Fv])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},qv=nv("navigator","userAgent")||"",Hv=tg.process,Vv=Hv&&Hv.versions,Wv=Vv&&Vv.v8;Wv?Jg=(Xg=Wv.split("."))[0]+Xg[1]:qv&&(!(Xg=qv.match(/Edge\/(\d+)/))||Xg[1]>=74)&&(Xg=qv.match(/Chrome\/(\d+)/))&&(Jg=Xg[1]);var zv=Jg&&+Jg,Yv=Dv("species"),$v=function(e){return zv>=51||!ng((function(){var t=[];return(t.constructor={})[Yv]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Gv=Dv("isConcatSpreadable"),Kv=zv>=51||!ng((function(){var e=[];return e[Gv]=!1,e.concat()[0]!==e})),Xv=$v("concat"),Jv=function(e){if(!dg(e))return!1;var t=e[Gv];return void 0!==t?!!t:Iv(e)};Pv({target:"Array",proto:!0,forced:!Kv||!Xv},{concat:function(e){var t,n,r,i,o,a=jv(this),s=Bv(a,0),c=0;for(t=-1,r=arguments.length;t<r;t++)if(o=-1===t?a:arguments[t],Jv(o)){if(c+(i=sv(o.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<i;n++,c++)n in o&&Cv(s,c,o[n])}else{if(c>=9007199254740991)throw TypeError("Maximum allowed index exceeded");Cv(s,c++,o)}return s.length=c,s}});var Qv=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},Zv=function(e,t,n){if(Qv(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}},em=[].push,tm=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,o=6==e,a=5==e||o;return function(s,c,u,l){for(var f,h,p=jv(s),d=fg(p),g=Zv(c,u,3),v=sv(d.length),m=0,y=l||Bv,b=t?y(s,v):n?y(s,0):void 0;v>m;m++)if((a||m in d)&&(h=g(f=d[m],m,p),e))if(t)b[m]=h;else if(h)switch(e){case 3:return!0;case 5:return f;case 6:return m;case 2:em.call(b,f)}else if(i)return!1;return o?-1:r||i?i:b}},nm={forEach:tm(0),map:tm(1),filter:tm(2),some:tm(3),every:tm(4),find:tm(5),findIndex:tm(6)},rm=Object.defineProperty,im={},om=function(e){throw e},am=function(e,t){if(mg(im,e))return im[e];t||(t={});var n=[][e],r=!!mg(t,"ACCESSORS")&&t.ACCESSORS,i=mg(t,0)?t[0]:om,o=mg(t,1)?t[1]:void 0;return im[e]=!!n&&!ng((function(){if(r&&!rg)return!0;var e={length:-1};r?rm(e,1,{enumerable:!0,get:om}):e[1]=1,n.call(e,i,o)}))},sm=nm.filter,cm=$v("filter"),um=am("filter");Pv({target:"Array",proto:!0,forced:!cm||!um},{filter:function(e){return sm(this,e,arguments.length>1?arguments[1]:void 0)}});var lm,fm=Object.keys||function(e){return dv(e,gv)},hm=rg?Object.defineProperties:function(e,t){Sg(e);for(var n,r=fm(t),i=r.length,o=0;i>o;)xg.f(e,n=r[o++],t[n]);return e},pm=nv("document","documentElement"),dm=Hg("IE_PROTO"),gm=function(){},vm=function(e){return"<script>"+e+"<\/script>"},mm=function(){try{lm=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;mm=lm?function(e){e.write(vm("")),e.close();var t=e.parentWindow.Object;return e=null,t}(lm):((t=wg("iframe")).style.display="none",pm.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(vm("document.F=Object")),e.close(),e.F);for(var n=gv.length;n--;)delete mm.prototype[gv[n]];return mm()};Vg[dm]=!0;var ym=Object.create||function(e,t){var n;return null!==e?(gm.prototype=Sg(e),n=new gm,gm.prototype=null,n[dm]=e):n=mm(),void 0===t?n:hm(n,t)},bm=Dv("unscopables"),wm=Array.prototype;null==wm[bm]&&xg.f(wm,bm,{configurable:!0,value:ym(null)});var _m=function(e){wm[bm][e]=!0},Em=nm.find,km=!0,Sm=am("find");"find"in[]&&Array(1).find((function(){km=!1})),Pv({target:"Array",proto:!0,forced:km||!Sm},{find:function(e){return Em(this,e,arguments.length>1?arguments[1]:void 0)}}),_m("find");var Tm=function(e,t,n,r){try{return r?t(Sg(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&Sg(i.call(e)),t}},xm={},Am=Dv("iterator"),Om=Array.prototype,Pm=function(e){return void 0!==e&&(xm.Array===e||Om[Am]===e)},Im={};Im[Dv("toStringTag")]="z";var jm="[object z]"===String(Im),Cm=Dv("toStringTag"),Rm="Arguments"==ug(function(){return arguments}()),Lm=jm?ug:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),Cm))?n:Rm?ug(t):"Object"==(r=ug(t))&&"function"==typeof t.callee?"Arguments":r},Nm=Dv("iterator"),Mm=function(e){if(null!=e)return e[Nm]||e["@@iterator"]||xm[Lm(e)]},Um=function(e){var t,n,r,i,o,a,s=jv(e),c="function"==typeof this?this:Array,u=arguments.length,l=u>1?arguments[1]:void 0,f=void 0!==l,h=Mm(s),p=0;if(f&&(l=Zv(l,u>2?arguments[2]:void 0,2)),null==h||c==Array&&Pm(h))for(n=new c(t=sv(s.length));t>p;p++)a=f?l(s[p],p):s[p],Cv(n,p,a);else for(o=(i=h.call(s)).next,n=new c;!(r=o.call(i)).done;p++)a=f?Tm(i,l,[r.value,p],!0):r.value,Cv(n,p,a);return n.length=p,n},Dm=Dv("iterator"),Fm=!1;try{var Bm=0,qm={next:function(){return{done:!!Bm++}},return:function(){Fm=!0}};qm[Dm]=function(){return this},Array.from(qm,(function(){throw 2}))}catch(e){}var Hm=function(e,t){if(!t&&!Fm)return!1;var n=!1;try{var r={};r[Dm]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Vm=!Hm((function(e){Array.from(e)}));Pv({target:"Array",stat:!0,forced:Vm},{from:Um});var Wm=hv.includes,zm=am("indexOf",{ACCESSORS:!0,1:0});Pv({target:"Array",proto:!0,forced:!zm},{includes:function(e){return Wm(this,e,arguments.length>1?arguments[1]:void 0)}}),_m("includes");var Ym,$m,Gm,Km=!ng((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Xm=Hg("IE_PROTO"),Jm=Object.prototype,Qm=Km?Object.getPrototypeOf:function(e){return e=jv(e),mg(e,Xm)?e[Xm]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?Jm:null},Zm=Dv("iterator"),ey=!1;[].keys&&("next"in(Gm=[].keys())?($m=Qm(Qm(Gm)))!==Object.prototype&&(Ym=$m):ey=!0),null==Ym&&(Ym={}),mg(Ym,Zm)||Ag(Ym,Zm,(function(){return this}));var ty={IteratorPrototype:Ym,BUGGY_SAFARI_ITERATORS:ey},ny=xg.f,ry=Dv("toStringTag"),iy=function(e,t,n){e&&!mg(e=n?e:e.prototype,ry)&&ny(e,ry,{configurable:!0,value:t})},oy=ty.IteratorPrototype,ay=function(){return this},sy=function(e,t,n){var r=t+" Iterator";return e.prototype=ym(oy,{next:sg(1,n)}),iy(e,r,!1),xm[r]=ay,e},cy=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return Sg(n),function(e){if(!dg(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(r),t?e.call(n,r):n.__proto__=r,n}}():void 0),uy=ty.IteratorPrototype,ly=ty.BUGGY_SAFARI_ITERATORS,fy=Dv("iterator"),hy=function(){return this},py=function(e,t,n,r,i,o,a){sy(n,t,r);var s,c,u,l=function(e){if(e===i&&g)return g;if(!ly&&e in p)return p[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},f=t+" Iterator",h=!1,p=e.prototype,d=p[fy]||p["@@iterator"]||i&&p[i],g=!ly&&d||l(i),v="Array"==t&&p.entries||d;if(v&&(s=Qm(v.call(new e)),uy!==Object.prototype&&s.next&&(Qm(s)!==uy&&(cy?cy(s,uy):"function"!=typeof s[fy]&&Ag(s,fy,hy)),iy(s,f,!0))),"values"==i&&d&&"values"!==d.name&&(h=!0,g=function(){return d.call(this)}),p[fy]!==g&&Ag(p,fy,g),xm[t]=g,i)if(c={values:l("values"),keys:o?g:l("keys"),entries:l("entries")},a)for(u in c)(ly||h||!(u in p))&&Zg(p,u,c[u]);else Pv({target:t,proto:!0,forced:ly||h},c);return c},dy=Qg.set,gy=Qg.getterFor("Array Iterator"),vy=py(Array,"Array",(function(e,t){dy(this,{type:"Array Iterator",target:pg(e),index:0,kind:t})}),(function(){var e=gy(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values");xm.Arguments=xm.Array,_m("keys"),_m("values"),_m("entries");var my=function(e,t){var n=[][e];return!!n&&ng((function(){n.call(null,t||function(){throw 1},1)}))},yy=[].join,by=fg!=Object,wy=my("join",",");Pv({target:"Array",proto:!0,forced:by||!wy},{join:function(e){return yy.call(pg(this),void 0===e?",":e)}});var _y=nm.map,Ey=$v("map"),ky=am("map");Pv({target:"Array",proto:!0,forced:!Ey||!ky},{map:function(e){return _y(this,e,arguments.length>1?arguments[1]:void 0)}});var Sy=function(e,t,n){var r,i;return cy&&"function"==typeof(r=t.constructor)&&r!==n&&dg(i=r.prototype)&&i!==n.prototype&&cy(e,i),e},Ty="[\t\n\v\f\r \u2028\u2029\ufeff]",xy=RegExp("^"+Ty+Ty+"*"),Ay=RegExp(Ty+Ty+"*$"),Oy=function(e){return function(t){var n=String(hg(t));return 1&e&&(n=n.replace(xy,"")),2&e&&(n=n.replace(Ay,"")),n}},Py={start:Oy(1),end:Oy(2),trim:Oy(3)},Iy=mv.f,jy=kg.f,Cy=xg.f,Ry=Py.trim,Ly=tg.Number,Ny=Ly.prototype,My="Number"==ug(ym(Ny)),Uy=function(e){var t,n,r,i,o,a,s,c,u=gg(e,!1);if("string"==typeof u&&u.length>2)if(43===(t=(u=Ry(u)).charCodeAt(0))||45===t){if(88===(n=u.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=(o=u.slice(2)).length,s=0;s<a;s++)if((c=o.charCodeAt(s))<48||c>i)return NaN;return parseInt(o,r)}return+u};if(Av("Number",!Ly(" 0o1")||!Ly("0b1")||Ly("+0x1"))){for(var Dy,Fy=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof Fy&&(My?ng((function(){Ny.valueOf.call(n)})):"Number"!=ug(n))?Sy(new Ly(Uy(t)),n,Fy):Uy(t)},By=rg?Iy(Ly):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),qy=0;By.length>qy;qy++)mg(Ly,Dy=By[qy])&&!mg(Fy,Dy)&&Cy(Fy,Dy,jy(Ly,Dy));Fy.prototype=Ny,Ny.constructor=Fy,Zg(tg,"Number",Fy)}var Hy=ng((function(){fm(1)}));Pv({target:"Object",stat:!0,forced:Hy},{keys:function(e){return fm(jv(e))}});var Vy=jm?{}.toString:function(){return"[object "+Lm(this)+"]"};jm||Zg(Object.prototype,"toString",Vy,{unsafe:!0});var Wy=function(){var e=Sg(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function zy(e,t){return RegExp(e,t)}var Yy={UNSUPPORTED_Y:ng((function(){var e=zy("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:ng((function(){var e=zy("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},$y=RegExp.prototype.exec,Gy=String.prototype.replace,Ky=$y,Xy=function(){var e=/a/,t=/b*/g;return $y.call(e,"a"),$y.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),Jy=Yy.UNSUPPORTED_Y||Yy.BROKEN_CARET,Qy=void 0!==/()??/.exec("")[1];(Xy||Qy||Jy)&&(Ky=function(e){var t,n,r,i,o=this,a=Jy&&o.sticky,s=Wy.call(o),c=o.source,u=0,l=e;return a&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),l=String(e).slice(o.lastIndex),o.lastIndex>0&&(!o.multiline||o.multiline&&"\n"!==e[o.lastIndex-1])&&(c="(?: "+c+")",l=" "+l,u++),n=new RegExp("^(?:"+c+")",s)),Qy&&(n=new RegExp("^"+c+"$(?!\\s)",s)),Xy&&(t=o.lastIndex),r=$y.call(a?n:o,l),a?r?(r.input=r.input.slice(u),r[0]=r[0].slice(u),r.index=o.lastIndex,o.lastIndex+=r[0].length):o.lastIndex=0:Xy&&r&&(o.lastIndex=o.global?r.index+r[0].length:t),Qy&&r&&r.length>1&&Gy.call(r[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r});var Zy=Ky;Pv({target:"RegExp",proto:!0,forced:/./.exec!==Zy},{exec:Zy});var eb=RegExp.prototype,tb=eb.toString,nb=ng((function(){return"/a/b"!=tb.call({source:"a",flags:"b"})})),rb="toString"!=tb.name;(nb||rb)&&Zg(RegExp.prototype,"toString",(function(){var e=Sg(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in eb)?Wy.call(e):n)}),{unsafe:!0});var ib=Dv("match"),ob=function(e){var t;return dg(e)&&(void 0!==(t=e[ib])?!!t:"RegExp"==ug(e))},ab=function(e){if(ob(e))throw TypeError("The method doesn't accept regular expressions");return e},sb=Dv("match"),cb=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[sb]=!1,"/./"[e](t)}catch(e){}}return!1};Pv({target:"String",proto:!0,forced:!cb("includes")},{includes:function(e){return!!~String(hg(this)).indexOf(ab(e),arguments.length>1?arguments[1]:void 0)}});var ub=function(e){return function(t,n){var r,i,o=String(hg(t)),a=ov(n),s=o.length;return a<0||a>=s?e?"":void 0:(r=o.charCodeAt(a))<55296||r>56319||a+1===s||(i=o.charCodeAt(a+1))<56320||i>57343?e?o.charAt(a):r:e?o.slice(a,a+2):i-56320+(r-55296<<10)+65536}},lb={codeAt:ub(!1),charAt:ub(!0)},fb=lb.charAt,hb=Qg.set,pb=Qg.getterFor("String Iterator");py(String,"String",(function(e){hb(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=pb(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=fb(n,r),t.index+=e.length,{value:e,done:!1})}));var db=Dv("species"),gb=!ng((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),vb="$0"==="a".replace(/./,"$0"),mb=Dv("replace"),yb=!!/./[mb]&&""===/./[mb]("a","$0"),bb=!ng((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),wb=function(e,t,n,r){var i=Dv(e),o=!ng((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=o&&!ng((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[db]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!o||!a||"replace"===e&&(!gb||!vb||yb)||"split"===e&&!bb){var s=/./[i],c=n(i,""[e],(function(e,t,n,r,i){return t.exec===Zy?o&&!i?{done:!0,value:s.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:vb,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:yb}),u=c[0],l=c[1];Zg(String.prototype,e,u),Zg(RegExp.prototype,i,2==t?function(e,t){return l.call(e,this,t)}:function(e){return l.call(e,this)})}r&&Ag(RegExp.prototype[i],"sham",!0)},_b=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t},Eb=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==ug(e))throw TypeError("RegExp#exec called on incompatible receiver");return Zy.call(e,t)};wb("search",1,(function(e,t,n){return[function(t){var n=hg(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=Sg(e),o=String(this),a=i.lastIndex;_b(a,0)||(i.lastIndex=0);var s=Eb(i,o);return _b(i.lastIndex,a)||(i.lastIndex=a),null===s?-1:s.index}]}));var kb=function(e,t,n){for(var r in t)Zg(e,r,t[r],n);return e},Sb=!ng((function(){return Object.isExtensible(Object.preventExtensions({}))})),Tb=t((function(e){var t=xg.f,n=Bg("meta"),r=0,i=Object.isExtensible||function(){return!0},o=function(e){t(e,n,{value:{objectID:"O"+ ++r,weakData:{}}})},a=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!dg(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!mg(e,n)){if(!i(e))return"F";if(!t)return"E";o(e)}return e[n].objectID},getWeakData:function(e,t){if(!mg(e,n)){if(!i(e))return!0;if(!t)return!1;o(e)}return e[n].weakData},onFreeze:function(e){return Sb&&a.REQUIRED&&i(e)&&!mg(e,n)&&o(e),e}};Vg[n]=!0})),xb=(Tb.REQUIRED,Tb.fastKey,Tb.getWeakData,Tb.onFreeze,t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,r,i,o){var a,s,c,u,l,f,h,p=Zv(n,r,i?2:1);if(o)a=e;else{if("function"!=typeof(s=Mm(e)))throw TypeError("Target is not iterable");if(Pm(s)){for(c=0,u=sv(e.length);u>c;c++)if((l=i?p(Sg(h=e[c])[0],h[1]):p(e[c]))&&l instanceof t)return l;return new t(!1)}a=s.call(e)}for(f=a.next;!(h=f.call(a)).done;)if("object"==typeof(l=Tm(a,p,h.value,i))&&l&&l instanceof t)return l;return new t(!1)}).stop=function(e){return new t(!0,e)}}))),Ab=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},Ob=Tb.getWeakData,Pb=Qg.set,Ib=Qg.getterFor,jb=nm.find,Cb=nm.findIndex,Rb=0,Lb=function(e){return e.frozen||(e.frozen=new Nb)},Nb=function(){this.entries=[]},Mb=function(e,t){return jb(e.entries,(function(e){return e[0]===t}))};Nb.prototype={get:function(e){var t=Mb(this,e);if(t)return t[1]},has:function(e){return!!Mb(this,e)},set:function(e,t){var n=Mb(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Cb(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}};var Ub={getConstructor:function(e,t,n,r){var i=e((function(e,o){Ab(e,i,t),Pb(e,{type:t,id:Rb++,frozen:void 0}),null!=o&&xb(o,e[r],e,n)})),o=Ib(t),a=function(e,t,n){var r=o(e),i=Ob(Sg(t),!0);return!0===i?Lb(r).set(t,n):i[r.id]=n,e};return kb(i.prototype,{delete:function(e){var t=o(this);if(!dg(e))return!1;var n=Ob(e);return!0===n?Lb(t).delete(e):n&&mg(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!dg(e))return!1;var n=Ob(e);return!0===n?Lb(t).has(e):n&&mg(n,t.id)}}),kb(i.prototype,n?{get:function(e){var t=o(this);if(dg(e)){var n=Ob(e);return!0===n?Lb(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return a(this,e,t)}}:{add:function(e){return a(this,e,!0)}}),i}},Db=(t((function(e){var t,n=Qg.enforce,r=!tg.ActiveXObject&&"ActiveXObject"in tg,i=Object.isExtensible,o=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},a=e.exports=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),o=r?"set":"add",a=tg[e],s=a&&a.prototype,c=a,u={},l=function(e){var t=s[e];Zg(s,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!dg(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return i&&!dg(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!dg(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Av(e,"function"!=typeof a||!(i||s.forEach&&!ng((function(){(new a).entries().next()})))))c=n.getConstructor(t,e,r,o),Tb.REQUIRED=!0;else if(Av(e,!0)){var f=new c,h=f[o](i?{}:-0,1)!=f,p=ng((function(){f.has(1)})),d=Hm((function(e){new a(e)})),g=!i&&ng((function(){for(var e=new a,t=5;t--;)e[o](t,t);return!e.has(-0)}));d||((c=t((function(t,n){Ab(t,c,e);var i=Sy(new a,t,c);return null!=n&&xb(n,i[o],i,r),i}))).prototype=s,s.constructor=c),(p||g)&&(l("delete"),l("has"),r&&l("get")),(g||h)&&l(o),i&&s.clear&&delete s.clear}return u[e]=c,Pv({global:!0,forced:c!=a},u),iy(c,e),i||n.setStrong(c,e,r),c}("WeakMap",o,Ub);if(Mg&&r){t=Ub.getConstructor(o,"WeakMap",!0),Tb.REQUIRED=!0;var s=a.prototype,c=s.delete,u=s.has,l=s.get,f=s.set;kb(s,{delete:function(e){if(dg(e)&&!i(e)){var r=n(this);return r.frozen||(r.frozen=new t),c.call(this,e)||r.frozen.delete(e)}return c.call(this,e)},has:function(e){if(dg(e)&&!i(e)){var r=n(this);return r.frozen||(r.frozen=new t),u.call(this,e)||r.frozen.has(e)}return u.call(this,e)},get:function(e){if(dg(e)&&!i(e)){var r=n(this);return r.frozen||(r.frozen=new t),u.call(this,e)?l.call(this,e):r.frozen.get(e)}return l.call(this,e)},set:function(e,r){if(dg(e)&&!i(e)){var o=n(this);o.frozen||(o.frozen=new t),u.call(this,e)?f.call(this,e,r):o.frozen.set(e,r)}else f.call(this,e,r);return this}})}})),{CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}),Fb=Dv("iterator"),Bb=Dv("toStringTag"),qb=vy.values;for(var Hb in Db){var Vb=tg[Hb],Wb=Vb&&Vb.prototype;if(Wb){if(Wb[Fb]!==qb)try{Ag(Wb,Fb,qb)}catch(e){Wb[Fb]=qb}if(Wb[Bb]||Ag(Wb,Bb,Hb),Db[Hb])for(var zb in vy)if(Wb[zb]!==vy[zb])try{Ag(Wb,zb,vy[zb])}catch(e){Wb[zb]=vy[zb]}}}var Yb=nm.every,$b=my("every"),Gb=am("every");Pv({target:"Array",proto:!0,forced:!$b||!Gb},{every:function(e){return Yb(this,e,arguments.length>1?arguments[1]:void 0)}});var Kb=nm.forEach,Xb=my("forEach"),Jb=am("forEach"),Qb=Xb&&Jb?[].forEach:function(e){return Kb(this,e,arguments.length>1?arguments[1]:void 0)};Pv({target:"Array",proto:!0,forced:[].forEach!=Qb},{forEach:Qb});var Zb=hv.indexOf,ew=[].indexOf,tw=!!ew&&1/[1].indexOf(1,-0)<0,nw=my("indexOf"),rw=am("indexOf",{ACCESSORS:!0,1:0});Pv({target:"Array",proto:!0,forced:tw||!nw||!rw},{indexOf:function(e){return tw?ew.apply(this,arguments)||0:Zb(this,e,arguments.length>1?arguments[1]:void 0)}});var iw=Object.assign,ow=Object.defineProperty,aw=!iw||ng((function(){if(rg&&1!==iw({b:1},iw(ow({},"a",{enumerable:!0,get:function(){ow(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=iw({},e)[n]||"abcdefghijklmnopqrst"!=fm(iw({},t)).join("")}))?function(e,t){for(var n=jv(e),r=arguments.length,i=1,o=yv.f,a=ag.f;r>i;)for(var s,c=fg(arguments[i++]),u=o?fm(c).concat(o(c)):fm(c),l=u.length,f=0;l>f;)s=u[f++],rg&&!a.call(c,s)||(n[s]=c[s]);return n}:iw;Pv({target:"Object",stat:!0,forced:Object.assign!==aw},{assign:aw});var sw=Dv("species"),cw=function(e,t){var n,r=Sg(e).constructor;return void 0===r||null==(n=Sg(r)[sw])?t:Qv(n)},uw=lb.charAt,lw=function(e,t,n){return t+(n?uw(e,t).length:1)},fw=[].push,hw=Math.min,pw=!ng((function(){return!RegExp(4294967295,"y")}));wb("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(hg(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!ob(e))return t.call(r,e,i);for(var o,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,f=new RegExp(e.source,u+"g");(o=Zy.call(f,r))&&!((a=f.lastIndex)>l&&(c.push(r.slice(l,o.index)),o.length>1&&o.index<r.length&&fw.apply(c,o.slice(1)),s=o[0].length,l=a,c.length>=i));)f.lastIndex===o.index&&f.lastIndex++;return l===r.length?!s&&f.test("")||c.push(""):c.push(r.slice(l)),c.length>i?c.slice(0,i):c}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=hg(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var o=n(r,e,this,i,r!==t);if(o.done)return o.value;var a=Sg(e),s=String(this),c=cw(a,RegExp),u=a.unicode,l=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(pw?"y":"g"),f=new c(pw?a:"^(?:"+a.source+")",l),h=void 0===i?4294967295:i>>>0;if(0===h)return[];if(0===s.length)return null===Eb(f,s)?[s]:[];for(var p=0,d=0,g=[];d<s.length;){f.lastIndex=pw?d:0;var v,m=Eb(f,pw?s:s.slice(d));if(null===m||(v=hw(sv(f.lastIndex+(pw?0:d)),s.length))===p)d=lw(s,d,u);else{if(g.push(s.slice(p,d)),g.length===h)return g;for(var y=1;y<=m.length-1;y++)if(g.push(m[y]),g.length===h)return g;d=p=v}}return g.push(s.slice(p)),g}]}),!pw);var dw=Py.trim;for(var gw in Pv({target:"String",proto:!0,forced:function(e){return ng((function(){return!!"\t\n\v\f\r \u2028\u2029\ufeff"[e]()||"
"!="
"[e]()||"\t\n\v\f\r \u2028\u2029\ufeff"[e].name!==e}))}("trim")},{trim:function(){return dw(this)}}),Db){var vw=tg[gw],mw=vw&&vw.prototype;if(mw&&mw.forEach!==Qb)try{Ag(mw,"forEach",Qb)}catch(e){mw.forEach=Qb}}var yw=Dv("iterator"),bw=!ng((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[yw]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),ww=/[^\0-\u007E]/,_w=/[.\u3002\uFF0E\uFF61]/g,Ew=Math.floor,kw=String.fromCharCode,Sw=function(e){return e+22+75*(e<26)},Tw=function(e,t,n){var r=0;for(e=n?Ew(e/700):e>>1,e+=Ew(e/t);e>455;r+=36)e=Ew(e/35);return Ew(r+36*e/(e+38))},xw=function(e){var t,n,r=[],i=(e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=e.charCodeAt(n++);56320==(64512&o)?t.push(((1023&i)<<10)+(1023&o)+65536):(t.push(i),n--)}else t.push(i)}return t}(e)).length,o=128,a=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&r.push(kw(n));var c=r.length,u=c;for(c&&r.push("-");u<i;){var l=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=o&&n<l&&(l=n);var f=u+1;if(l-o>Ew((2147483647-a)/f))throw RangeError("Overflow: input needs wider integers to process");for(a+=(l-o)*f,o=l,t=0;t<e.length;t++){if((n=e[t])<o&&++a>2147483647)throw RangeError("Overflow: input needs wider integers to process");if(n==o){for(var h=a,p=36;;p+=36){var d=p<=s?1:p>=s+26?26:p-s;if(h<d)break;var g=h-d,v=36-d;r.push(kw(Sw(d+g%v))),h=Ew(g/v)}r.push(kw(Sw(h))),s=Tw(a,f,u==c),a=0,++u}}++a,++o}return r.join("")},Aw=function(e){var t=Mm(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return Sg(t.call(e))},Ow=nv("fetch"),Pw=nv("Headers"),Iw=Dv("iterator"),jw=Qg.set,Cw=Qg.getterFor("URLSearchParams"),Rw=Qg.getterFor("URLSearchParamsIterator"),Lw=/\+/g,Nw=Array(4),Mw=function(e){return Nw[e-1]||(Nw[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},Uw=function(e){try{return decodeURIComponent(e)}catch(t){return e}},Dw=function(e){var t=e.replace(Lw," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(Mw(n--),Uw);return t}},Fw=/[!'()~]|%20/g,Bw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},qw=function(e){return Bw[e]},Hw=function(e){return encodeURIComponent(e).replace(Fw,qw)},Vw=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o<i.length;)(n=i[o++]).length&&(r=n.split("="),e.push({key:Dw(r.shift()),value:Dw(r.join("="))}))},Ww=function(e){this.entries.length=0,Vw(this.entries,e)},zw=function(e,t){if(e<t)throw TypeError("Not enough arguments")},Yw=sy((function(e,t){jw(this,{type:"URLSearchParamsIterator",iterator:Aw(Cw(e).entries),kind:t})}),"Iterator",(function(){var e=Rw(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n})),$w=function(){Ab(this,$w,"URLSearchParams");var e,t,n,r,i,o,a,s,c,u=arguments.length>0?arguments[0]:void 0,l=this,f=[];if(jw(l,{type:"URLSearchParams",entries:f,updateURL:function(){},updateSearchParams:Ww}),void 0!==u)if(dg(u))if("function"==typeof(e=Mm(u)))for(n=(t=e.call(u)).next;!(r=n.call(t)).done;){if((a=(o=(i=Aw(Sg(r.value))).next).call(i)).done||(s=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");f.push({key:a.value+"",value:s.value+""})}else for(c in u)mg(u,c)&&f.push({key:c,value:u[c]+""});else Vw(f,"string"==typeof u?"?"===u.charAt(0)?u.slice(1):u:u+"")},Gw=$w.prototype;kb(Gw,{append:function(e,t){zw(arguments.length,2);var n=Cw(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){zw(arguments.length,1);for(var t=Cw(this),n=t.entries,r=e+"",i=0;i<n.length;)n[i].key===r?n.splice(i,1):i++;t.updateURL()},get:function(e){zw(arguments.length,1);for(var t=Cw(this).entries,n=e+"",r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){zw(arguments.length,1);for(var t=Cw(this).entries,n=e+"",r=[],i=0;i<t.length;i++)t[i].key===n&&r.push(t[i].value);return r},has:function(e){zw(arguments.length,1);for(var t=Cw(this).entries,n=e+"",r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){zw(arguments.length,1);for(var n,r=Cw(this),i=r.entries,o=!1,a=e+"",s=t+"",c=0;c<i.length;c++)(n=i[c]).key===a&&(o?i.splice(c--,1):(o=!0,n.value=s));o||i.push({key:a,value:s}),r.updateURL()},sort:function(){var e,t,n,r=Cw(this),i=r.entries,o=i.slice();for(i.length=0,n=0;n<o.length;n++){for(e=o[n],t=0;t<n;t++)if(i[t].key>e.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=Cw(this).entries,r=Zv(e,arguments.length>1?arguments[1]:void 0,3),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new Yw(this,"keys")},values:function(){return new Yw(this,"values")},entries:function(){return new Yw(this,"entries")}},{enumerable:!0}),Zg(Gw,Iw,Gw.entries),Zg(Gw,"toString",(function(){for(var e,t=Cw(this).entries,n=[],r=0;r<t.length;)e=t[r++],n.push(Hw(e.key)+"="+Hw(e.value));return n.join("&")}),{enumerable:!0}),iy($w,"URLSearchParams"),Pv({global:!0,forced:!bw},{URLSearchParams:$w}),bw||"function"!=typeof Ow||"function"!=typeof Pw||Pv({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,r,i=[e];return arguments.length>1&&(t=arguments[1],dg(t)&&(n=t.body,"URLSearchParams"===Lm(n)&&((r=t.headers?new Pw(t.headers):new Pw).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=ym(t,{body:sg(0,String(n)),headers:sg(0,r)}))),i.push(t)),Ow.apply(this,i)}});var Kw={URLSearchParams:$w,getState:Cw},Xw=lb.codeAt,Jw=tg.URL,Qw=Kw.URLSearchParams,Zw=Kw.getState,e_=Qg.set,t_=Qg.getterFor("URL"),n_=Math.floor,r_=Math.pow,i_=/[A-Za-z]/,o_=/[\d+-.A-Za-z]/,a_=/\d/,s_=/^(0x|0X)/,c_=/^[0-7]+$/,u_=/^\d+$/,l_=/^[\dA-Fa-f]+$/,f_=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,h_=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,p_=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,d_=/[\u0009\u000A\u000D]/g,g_=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=m_(t.slice(1,-1))))return"Invalid host";e.host=n}else if(T_(e)){if(t=function(e){var t,n,r=[],i=e.toLowerCase().replace(_w,".").split(".");for(t=0;t<i.length;t++)n=i[t],r.push(ww.test(n)?"xn--"+xw(n):n);return r.join(".")}(t),f_.test(t))return"Invalid host";if(null===(n=v_(t)))return"Invalid host";e.host=n}else{if(h_.test(t))return"Invalid host";for(n="",r=Um(t),i=0;i<r.length;i++)n+=k_(r[i],b_);e.host=n}},v_=function(e){var t,n,r,i,o,a,s,c=e.split(".");if(c.length&&""==c[c.length-1]&&c.pop(),(t=c.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=c[r]))return e;if(o=10,i.length>1&&"0"==i.charAt(0)&&(o=s_.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)a=0;else{if(!(10==o?u_:8==o?c_:l_).test(i))return e;a=parseInt(i,o)}n.push(a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=r_(256,5-t))return null}else if(a>255)return null;for(s=n.pop(),r=0;r<n.length;r++)s+=n[r]*r_(256,3-r);return s},m_=function(e){var t,n,r,i,o,a,s,c=[0,0,0,0,0,0,0,0],u=0,l=null,f=0,h=function(){return e.charAt(f)};if(":"==h()){if(":"!=e.charAt(1))return;f+=2,l=++u}for(;h();){if(8==u)return;if(":"!=h()){for(t=n=0;n<4&&l_.test(h());)t=16*t+parseInt(h(),16),f++,n++;if("."==h()){if(0==n)return;if(f-=n,u>6)return;for(r=0;h();){if(i=null,r>0){if(!("."==h()&&r<4))return;f++}if(!a_.test(h()))return;for(;a_.test(h());){if(o=parseInt(h(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;f++}c[u]=256*c[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==h()){if(f++,!h())return}else if(h())return;c[u++]=t}else{if(null!==l)return;f++,l=++u}}if(null!==l)for(a=u-l,u=7;0!=u&&a>0;)s=c[u],c[u--]=c[l+a-1],c[l+--a]=s;else if(8!=u)return;return c},y_=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=n_(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},b_={},w_=aw({},b_,{" ":1,'"':1,"<":1,">":1,"`":1}),__=aw({},w_,{"#":1,"?":1,"{":1,"}":1}),E_=aw({},__,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),k_=function(e,t){var n=Xw(e,0);return n>32&&n<127&&!mg(t,e)?e:encodeURIComponent(e)},S_={ftp:21,file:null,http:80,https:443,ws:80,wss:443},T_=function(e){return mg(S_,e.scheme)},x_=function(e){return""!=e.username||""!=e.password},A_=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},O_=function(e,t){var n;return 2==e.length&&i_.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},P_=function(e){var t;return e.length>1&&O_(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},I_=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&O_(t[0],!0)||t.pop()},j_=function(e){return"."===e||"%2e"===e.toLowerCase()},C_={},R_={},L_={},N_={},M_={},U_={},D_={},F_={},B_={},q_={},H_={},V_={},W_={},z_={},Y_={},$_={},G_={},K_={},X_={},J_={},Q_={},Z_=function(e,t,n,r){var i,o,a,s,c,u=n||C_,l=0,f="",h=!1,p=!1,d=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(p_,"")),t=t.replace(d_,""),i=Um(t);l<=i.length;){switch(o=i[l],u){case C_:if(!o||!i_.test(o)){if(n)return"Invalid scheme";u=L_;continue}f+=o.toLowerCase(),u=R_;break;case R_:if(o&&(o_.test(o)||"+"==o||"-"==o||"."==o))f+=o.toLowerCase();else{if(":"!=o){if(n)return"Invalid scheme";f="",u=L_,l=0;continue}if(n&&(T_(e)!=mg(S_,f)||"file"==f&&(x_(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(T_(e)&&S_[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?u=z_:T_(e)&&r&&r.scheme==e.scheme?u=N_:T_(e)?u=F_:"/"==i[l+1]?(u=M_,l++):(e.cannotBeABaseURL=!0,e.path.push(""),u=X_)}break;case L_:if(!r||r.cannotBeABaseURL&&"#"!=o)return"Invalid scheme";if(r.cannotBeABaseURL&&"#"==o){e.scheme=r.scheme,e.path=r.path.slice(),e.query=r.query,e.fragment="",e.cannotBeABaseURL=!0,u=Q_;break}u="file"==r.scheme?z_:U_;continue;case N_:if("/"!=o||"/"!=i[l+1]){u=U_;continue}u=B_,l++;break;case M_:if("/"==o){u=q_;break}u=K_;continue;case U_:if(e.scheme=r.scheme,null==o)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query;else if("/"==o||"\\"==o&&T_(e))u=D_;else if("?"==o)e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query="",u=J_;else{if("#"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.path.pop(),u=K_;continue}e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,e.path=r.path.slice(),e.query=r.query,e.fragment="",u=Q_}break;case D_:if(!T_(e)||"/"!=o&&"\\"!=o){if("/"!=o){e.username=r.username,e.password=r.password,e.host=r.host,e.port=r.port,u=K_;continue}u=q_}else u=B_;break;case F_:if(u=B_,"/"!=o||"/"!=f.charAt(l+1))continue;l++;break;case B_:if("/"!=o&&"\\"!=o){u=q_;continue}break;case q_:if("@"==o){h&&(f="%40"+f),h=!0,a=Um(f);for(var g=0;g<a.length;g++){var v=a[g];if(":"!=v||d){var m=k_(v,E_);d?e.password+=m:e.username+=m}else d=!0}f=""}else if(null==o||"/"==o||"?"==o||"#"==o||"\\"==o&&T_(e)){if(h&&""==f)return"Invalid authority";l-=Um(f).length+1,f="",u=H_}else f+=o;break;case H_:case V_:if(n&&"file"==e.scheme){u=$_;continue}if(":"!=o||p){if(null==o||"/"==o||"?"==o||"#"==o||"\\"==o&&T_(e)){if(T_(e)&&""==f)return"Invalid host";if(n&&""==f&&(x_(e)||null!==e.port))return;if(s=g_(e,f))return s;if(f="",u=G_,n)return;continue}"["==o?p=!0:"]"==o&&(p=!1),f+=o}else{if(""==f)return"Invalid host";if(s=g_(e,f))return s;if(f="",u=W_,n==V_)return}break;case W_:if(!a_.test(o)){if(null==o||"/"==o||"?"==o||"#"==o||"\\"==o&&T_(e)||n){if(""!=f){var y=parseInt(f,10);if(y>65535)return"Invalid port";e.port=T_(e)&&y===S_[e.scheme]?null:y,f=""}if(n)return;u=G_;continue}return"Invalid port"}f+=o;break;case z_:if(e.scheme="file","/"==o||"\\"==o)u=Y_;else{if(!r||"file"!=r.scheme){u=K_;continue}if(null==o)e.host=r.host,e.path=r.path.slice(),e.query=r.query;else if("?"==o)e.host=r.host,e.path=r.path.slice(),e.query="",u=J_;else{if("#"!=o){P_(i.slice(l).join(""))||(e.host=r.host,e.path=r.path.slice(),I_(e)),u=K_;continue}e.host=r.host,e.path=r.path.slice(),e.query=r.query,e.fragment="",u=Q_}}break;case Y_:if("/"==o||"\\"==o){u=$_;break}r&&"file"==r.scheme&&!P_(i.slice(l).join(""))&&(O_(r.path[0],!0)?e.path.push(r.path[0]):e.host=r.host),u=K_;continue;case $_:if(null==o||"/"==o||"\\"==o||"?"==o||"#"==o){if(!n&&O_(f))u=K_;else if(""==f){if(e.host="",n)return;u=G_}else{if(s=g_(e,f))return s;if("localhost"==e.host&&(e.host=""),n)return;f="",u=G_}continue}f+=o;break;case G_:if(T_(e)){if(u=K_,"/"!=o&&"\\"!=o)continue}else if(n||"?"!=o)if(n||"#"!=o){if(null!=o&&(u=K_,"/"!=o))continue}else e.fragment="",u=Q_;else e.query="",u=J_;break;case K_:if(null==o||"/"==o||"\\"==o&&T_(e)||!n&&("?"==o||"#"==o)){if(".."===(c=(c=f).toLowerCase())||"%2e."===c||".%2e"===c||"%2e%2e"===c?(I_(e),"/"==o||"\\"==o&&T_(e)||e.path.push("")):j_(f)?"/"==o||"\\"==o&&T_(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&O_(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(null==o||"?"==o||"#"==o))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==o?(e.query="",u=J_):"#"==o&&(e.fragment="",u=Q_)}else f+=k_(o,__);break;case X_:"?"==o?(e.query="",u=J_):"#"==o?(e.fragment="",u=Q_):null!=o&&(e.path[0]+=k_(o,b_));break;case J_:n||"#"!=o?null!=o&&("'"==o&&T_(e)?e.query+="%27":e.query+="#"==o?"%23":k_(o,b_)):(e.fragment="",u=Q_);break;case Q_:null!=o&&(e.fragment+=k_(o,w_))}l++}},eE=function(e){var t,n,r=Ab(this,eE,"URL"),i=arguments.length>1?arguments[1]:void 0,o=String(e),a=e_(r,{type:"URL"});if(void 0!==i)if(i instanceof eE)t=t_(i);else if(n=Z_(t={},String(i)))throw TypeError(n);if(n=Z_(a,o,null,t))throw TypeError(n);var s=a.searchParams=new Qw,c=Zw(s);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(s)||null},rg||(r.href=nE.call(r),r.origin=rE.call(r),r.protocol=iE.call(r),r.username=oE.call(r),r.password=aE.call(r),r.host=sE.call(r),r.hostname=cE.call(r),r.port=uE.call(r),r.pathname=lE.call(r),r.search=fE.call(r),r.searchParams=hE.call(r),r.hash=pE.call(r))},tE=eE.prototype,nE=function(){var e=t_(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,a=e.path,s=e.query,c=e.fragment,u=t+":";return null!==i?(u+="//",x_(e)&&(u+=n+(r?":"+r:"")+"@"),u+=y_(i),null!==o&&(u+=":"+o)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+a.join("/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},rE=function(){var e=t_(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&T_(e)?t+"://"+y_(e.host)+(null!==n?":"+n:""):"null"},iE=function(){return t_(this).scheme+":"},oE=function(){return t_(this).username},aE=function(){return t_(this).password},sE=function(){var e=t_(this),t=e.host,n=e.port;return null===t?"":null===n?y_(t):y_(t)+":"+n},cE=function(){var e=t_(this).host;return null===e?"":y_(e)},uE=function(){var e=t_(this).port;return null===e?"":String(e)},lE=function(){var e=t_(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},fE=function(){var e=t_(this).query;return e?"?"+e:""},hE=function(){return t_(this).searchParams},pE=function(){var e=t_(this).fragment;return e?"#"+e:""},dE=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(rg&&hm(tE,{href:dE(nE,(function(e){var t=t_(this),n=String(e),r=Z_(t,n);if(r)throw TypeError(r);Zw(t.searchParams).updateSearchParams(t.query)})),origin:dE(rE),protocol:dE(iE,(function(e){var t=t_(this);Z_(t,String(e)+":",C_)})),username:dE(oE,(function(e){var t=t_(this),n=Um(String(e));if(!A_(t)){t.username="";for(var r=0;r<n.length;r++)t.username+=k_(n[r],E_)}})),password:dE(aE,(function(e){var t=t_(this),n=Um(String(e));if(!A_(t)){t.password="";for(var r=0;r<n.length;r++)t.password+=k_(n[r],E_)}})),host:dE(sE,(function(e){var t=t_(this);t.cannotBeABaseURL||Z_(t,String(e),H_)})),hostname:dE(cE,(function(e){var t=t_(this);t.cannotBeABaseURL||Z_(t,String(e),V_)})),port:dE(uE,(function(e){var t=t_(this);A_(t)||(""==(e=String(e))?t.port=null:Z_(t,e,W_))})),pathname:dE(lE,(function(e){var t=t_(this);t.cannotBeABaseURL||(t.path=[],Z_(t,e+"",G_))})),search:dE(fE,(function(e){var t=t_(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",Z_(t,e,J_)),Zw(t.searchParams).updateSearchParams(t.query)})),searchParams:dE(hE),hash:dE(pE,(function(e){var t=t_(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",Z_(t,e,Q_)):t.fragment=null}))}),Zg(tE,"toJSON",(function(){return nE.call(this)}),{enumerable:!0}),Zg(tE,"toString",(function(){return nE.call(this)}),{enumerable:!0}),Jw){var gE=Jw.createObjectURL,vE=Jw.revokeObjectURL;gE&&Zg(eE,"createObjectURL",(function(e){return gE.apply(Jw,arguments)})),vE&&Zg(eE,"revokeObjectURL",(function(e){return vE.apply(Jw,arguments)}))}iy(eE,"URL"),Pv({global:!0,forced:!bw,sham:!rg},{URL:eE});var mE=nm.some,yE=my("some"),bE=am("some");Pv({target:"Array",proto:!0,forced:!yE||!bE},{some:function(e){return mE(this,e,arguments.length>1?arguments[1]:void 0)}});var wE="".repeat||function(e){var t=String(hg(this)),n="",r=ov(e);if(r<0||r==1/0)throw RangeError("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},_E=1..toFixed,EE=Math.floor,kE=function(e,t,n){return 0===t?n:t%2==1?kE(e,t-1,n*e):kE(e*e,t/2,n)},SE=_E&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!ng((function(){_E.call({})}));Pv({target:"Number",proto:!0,forced:SE},{toFixed:function(e){var t,n,r,i,o=function(e){if("number"!=typeof e&&"Number"!=ug(e))throw TypeError("Incorrect invocation");return+e}(this),a=ov(e),s=[0,0,0,0,0,0],c="",u="0",l=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*s[n],s[n]=r%1e7,r=EE(r/1e7)},f=function(e){for(var t=6,n=0;--t>=0;)n+=s[t],s[t]=EE(n/e),n=n%e*1e7},h=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==s[e]){var n=String(s[e]);t=""===t?n:t+wE.call("0",7-n.length)+n}return t};if(a<0||a>20)throw RangeError("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return String(o);if(o<0&&(c="-",o=-o),o>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(o*kE(2,69,1))-69)<0?o*kE(2,-t,1):o/kE(2,t,1),n*=4503599627370496,(t=52-t)>0){for(l(0,n),r=a;r>=7;)l(1e7,0),r-=7;for(l(kE(10,r,1),0),r=t-1;r>=23;)f(1<<23),r-=23;f(1<<r),l(1,1),f(2),u=h()}else l(0,n),l(1<<-t,0),u=h()+wE.call("0",a);return u=a>0?c+((i=u.length)<=a?"0."+wE.call("0",a-i)+u:u.slice(0,i-a)+"."+u.slice(i-a)):c+u}});var TE=ag.f,xE=function(e){return function(t){for(var n,r=pg(t),i=fm(r),o=i.length,a=0,s=[];o>a;)n=i[a++],rg&&!TE.call(r,n)||s.push(e?[n,r[n]]:r[n]);return s}},AE={entries:xE(!0),values:xE(!1)},OE=AE.entries;Pv({target:"Object",stat:!0},{entries:function(e){return OE(e)}});var PE=AE.values;Pv({target:"Object",stat:!0},{values:function(e){return PE(e)}});var IE=Math.max,jE=Math.min,CE=Math.floor,RE=/\$([$&'`]|\d\d?|<[^>]*>)/g,LE=/\$([$&'`]|\d\d?)/g;wb("replace",2,(function(e,t,n,r){var i=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=r.REPLACE_KEEPS_$0,a=i?"$":"$0";return[function(n,r){var i=hg(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!i&&o||"string"==typeof r&&-1===r.indexOf(a)){var c=n(t,e,this,r);if(c.done)return c.value}var u=Sg(e),l=String(this),f="function"==typeof r;f||(r=String(r));var h=u.global;if(h){var p=u.unicode;u.lastIndex=0}for(var d=[];;){var g=Eb(u,l);if(null===g)break;if(d.push(g),!h)break;""===String(g[0])&&(u.lastIndex=lw(l,sv(u.lastIndex),p))}for(var v,m="",y=0,b=0;b<d.length;b++){g=d[b];for(var w=String(g[0]),_=IE(jE(ov(g.index),l.length),0),E=[],k=1;k<g.length;k++)E.push(void 0===(v=g[k])?v:String(v));var S=g.groups;if(f){var T=[w].concat(E,_,l);void 0!==S&&T.push(S);var x=String(r.apply(void 0,T))}else x=s(w,l,_,E,S,r);_>=y&&(m+=l.slice(y,_)+x,y=_+w.length)}return m+l.slice(y)}];function s(e,n,r,i,o,a){var s=r+e.length,c=i.length,u=LE;return void 0!==o&&(o=jv(o),u=RE),t.call(a,u,(function(t,a){var u;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(s);case"<":u=o[a.slice(1,-1)];break;default:var l=+a;if(0===l)return t;if(l>c){var f=CE(l/10);return 0===f?t:f<=c?void 0===i[f-1]?a.charAt(1):i[f-1]+a.charAt(1):t}u=i[l-1]}return void 0===u?"":u}))}}));var NE=mv.f,ME={}.toString,UE="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],DE={f:function(e){return UE&&"[object Window]"==ME.call(e)?function(e){try{return NE(e)}catch(e){return UE.slice()}}(e):NE(pg(e))}},FE={f:Dv},BE=xg.f,qE=nm.forEach,HE=Hg("hidden"),VE=Dv("toPrimitive"),WE=Qg.set,zE=Qg.getterFor("Symbol"),YE=Object.prototype,$E=tg.Symbol,GE=nv("JSON","stringify"),KE=kg.f,XE=xg.f,JE=DE.f,QE=ag.f,ZE=Ug("symbols"),ek=Ug("op-symbols"),tk=Ug("string-to-symbol-registry"),nk=Ug("symbol-to-string-registry"),rk=Ug("wks"),ik=tg.QObject,ok=!ik||!ik.prototype||!ik.prototype.findChild,ak=rg&&ng((function(){return 7!=ym(XE({},"a",{get:function(){return XE(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=KE(YE,t);r&&delete YE[t],XE(e,t,n),r&&e!==YE&&XE(YE,t,r)}:XE,sk=function(e,t){var n=ZE[e]=ym($E.prototype);return WE(n,{type:"Symbol",tag:e,description:t}),rg||(n.description=t),n},ck=Lv?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof $E},uk=function(e,t,n){e===YE&&uk(ek,t,n),Sg(e);var r=gg(t,!0);return Sg(n),mg(ZE,r)?(n.enumerable?(mg(e,HE)&&e[HE][r]&&(e[HE][r]=!1),n=ym(n,{enumerable:sg(0,!1)})):(mg(e,HE)||XE(e,HE,sg(1,{})),e[HE][r]=!0),ak(e,r,n)):XE(e,r,n)},lk=function(e,t){Sg(e);var n=pg(t),r=fm(n).concat(dk(n));return qE(r,(function(t){rg&&!fk.call(n,t)||uk(e,t,n[t])})),e},fk=function(e){var t=gg(e,!0),n=QE.call(this,t);return!(this===YE&&mg(ZE,t)&&!mg(ek,t))&&(!(n||!mg(this,t)||!mg(ZE,t)||mg(this,HE)&&this[HE][t])||n)},hk=function(e,t){var n=pg(e),r=gg(t,!0);if(n!==YE||!mg(ZE,r)||mg(ek,r)){var i=KE(n,r);return!i||!mg(ZE,r)||mg(n,HE)&&n[HE][r]||(i.enumerable=!0),i}},pk=function(e){var t=JE(pg(e)),n=[];return qE(t,(function(e){mg(ZE,e)||mg(Vg,e)||n.push(e)})),n},dk=function(e){var t=e===YE,n=JE(t?ek:pg(e)),r=[];return qE(n,(function(e){!mg(ZE,e)||t&&!mg(YE,e)||r.push(ZE[e])})),r};if(Rv||(Zg(($E=function(){if(this instanceof $E)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=Bg(e),n=function(e){this===YE&&n.call(ek,e),mg(this,HE)&&mg(this[HE],t)&&(this[HE][t]=!1),ak(this,t,sg(1,e))};return rg&&ok&&ak(YE,t,{configurable:!0,set:n}),sk(t,e)}).prototype,"toString",(function(){return zE(this).tag})),Zg($E,"withoutSetter",(function(e){return sk(Bg(e),e)})),ag.f=fk,xg.f=uk,kg.f=hk,mv.f=DE.f=pk,yv.f=dk,FE.f=function(e){return sk(Dv(e),e)},rg&&(XE($E.prototype,"description",{configurable:!0,get:function(){return zE(this).description}}),Zg(YE,"propertyIsEnumerable",fk,{unsafe:!0}))),Pv({global:!0,wrap:!0,forced:!Rv,sham:!Rv},{Symbol:$E}),qE(fm(rk),(function(e){!function(e){var t=ev.Symbol||(ev.Symbol={});mg(t,e)||BE(t,e,{value:FE.f(e)})}(e)})),Pv({target:"Symbol",stat:!0,forced:!Rv},{for:function(e){var t=String(e);if(mg(tk,t))return tk[t];var n=$E(t);return tk[t]=n,nk[n]=t,n},keyFor:function(e){if(!ck(e))throw TypeError(e+" is not a symbol");if(mg(nk,e))return nk[e]},useSetter:function(){ok=!0},useSimple:function(){ok=!1}}),Pv({target:"Object",stat:!0,forced:!Rv,sham:!rg},{create:function(e,t){return void 0===t?ym(e):lk(ym(e),t)},defineProperty:uk,defineProperties:lk,getOwnPropertyDescriptor:hk}),Pv({target:"Object",stat:!0,forced:!Rv},{getOwnPropertyNames:pk,getOwnPropertySymbols:dk}),Pv({target:"Object",stat:!0,forced:ng((function(){yv.f(1)}))},{getOwnPropertySymbols:function(e){return yv.f(jv(e))}}),GE){var gk=!Rv||ng((function(){var e=$E();return"[null]"!=GE([e])||"{}"!=GE({a:e})||"{}"!=GE(Object(e))}));Pv({target:"JSON",stat:!0,forced:gk},{stringify:function(e,t,n){for(var r,i=[e],o=1;arguments.length>o;)i.push(arguments[o++]);if(r=t,(dg(t)||void 0!==e)&&!ck(e))return Iv(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ck(t))return t}),i[1]=t,GE.apply(null,i)}})}$E.prototype[VE]||Ag($E.prototype,VE,$E.prototype.valueOf),iy($E,"Symbol"),Vg[HE]=!0,Pv({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var vk=kg.f,mk=ng((function(){vk(1)}));function yk(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function bk(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _k(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wk(Object(n),!0).forEach((function(t){bk(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wk(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Pv({target:"Object",stat:!0,forced:!rg||mk,sham:!rg},{getOwnPropertyDescriptor:function(e,t){return vk(pg(e),t)}}),Pv({target:"Object",stat:!0,sham:!rg},{getOwnPropertyDescriptors:function(e){for(var t,n,r=pg(e),i=kg.f,o=bv(r),a={},s=0;o.length>s;)void 0!==(n=i(r,t=o[s++]))&&Cv(a,t,n);return a}}),wb("match",1,(function(e,t,n){return[function(t){var n=hg(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=Sg(e),o=String(this);if(!i.global)return Eb(i,o);var a=i.unicode;i.lastIndex=0;for(var s,c=[],u=0;null!==(s=Eb(i,o));){var l=String(s[0]);c[u]=l,""===l&&(i.lastIndex=lw(o,sv(i.lastIndex),a)),u++}return 0===u?null:c}]}));var Ek={addCSS:!0,thumbWidth:15,watch:!0};function kk(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var Sk=function(e){return null!=e?e.constructor:null},Tk=function(e,t){return!!(e&&t&&e instanceof t)},xk=function(e){return null==e},Ak=function(e){return Sk(e)===Object},Ok=function(e){return Sk(e)===String},Pk=function(e){return Array.isArray(e)},Ik=function(e){return Tk(e,NodeList)},jk=Ok,Ck=Pk,Rk=Ik,Lk=function(e){return Tk(e,Element)},Nk=function(e){return Tk(e,Event)},Mk=function(e){return xk(e)||(Ok(e)||Pk(e)||Ik(e))&&!e.length||Ak(e)&&!Object.keys(e).length};function Uk(e,t){if(1>t){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var Dk,Fk,Bk,qk=function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),Lk(t)?this.element=t:jk(t)&&(this.element=document.querySelector(t)),Lk(this.element)&&Mk(this.element.rangeTouch)&&(this.config=_k({},Ek,{},n),this.init())}return function(e,t,n){t&&yk(e.prototype,t),n&&yk(e,n)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,n=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!Nk(t))return null;var n,r=t.target,i=t.changedTouches[0],o=parseFloat(r.getAttribute("min"))||0,a=parseFloat(r.getAttribute("max"))||100,s=parseFloat(r.getAttribute("step"))||1,c=r.getBoundingClientRect(),u=100/c.width*(this.config.thumbWidth/2)/100;return 0>(n=100/c.width*(i.clientX-c.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*u:50<n&&(n+=2*(n-50)*u),o+Uk(n/100*(a-o),s)}},{key:"set",value:function(t){e.enabled&&Nk(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(Mk(t)||jk(t)?r=Array.from(document.querySelectorAll(jk(t)?t:'input[type="range"]')):Lk(t)?r=[t]:Rk(t)?r=Array.from(t):Ck(t)&&(r=t.filter(Lk)),Mk(r))return null;var i=_k({},Ek,{},n);if(jk(t)&&i.watch){var o=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){Lk(n)&&kk(n,t)&&new e(n,i)}))}))}));o.observe(document.body,{childList:!0,subtree:!0})}return r.map((function(t){return new e(t,n)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),Hk=tg.Promise,Vk=Dv("species"),Wk=function(e){var t=nv(e),n=xg.f;rg&&t&&!t[Vk]&&n(t,Vk,{configurable:!0,get:function(){return this}})},zk=/(iphone|ipod|ipad).*applewebkit/i.test(qv),Yk=tg.location,$k=tg.setImmediate,Gk=tg.clearImmediate,Kk=tg.process,Xk=tg.MessageChannel,Jk=tg.Dispatch,Qk=0,Zk={},eS=function(e){if(Zk.hasOwnProperty(e)){var t=Zk[e];delete Zk[e],t()}},tS=function(e){return function(){eS(e)}},nS=function(e){eS(e.data)},rS=function(e){tg.postMessage(e+"",Yk.protocol+"//"+Yk.host)};$k&&Gk||($k=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return Zk[++Qk]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},Dk(Qk),Qk},Gk=function(e){delete Zk[e]},"process"==ug(Kk)?Dk=function(e){Kk.nextTick(tS(e))}:Jk&&Jk.now?Dk=function(e){Jk.now(tS(e))}:Xk&&!zk?(Bk=(Fk=new Xk).port2,Fk.port1.onmessage=nS,Dk=Zv(Bk.postMessage,Bk,1)):!tg.addEventListener||"function"!=typeof postMessage||tg.importScripts||ng(rS)||"file:"===Yk.protocol?Dk="onreadystatechange"in wg("script")?function(e){pm.appendChild(wg("script")).onreadystatechange=function(){pm.removeChild(this),eS(e)}}:function(e){setTimeout(tS(e),0)}:(Dk=rS,tg.addEventListener("message",nS,!1)));var iS,oS,aS,sS,cS,uS,lS,fS,hS={set:$k,clear:Gk},pS=kg.f,dS=hS.set,gS=tg.MutationObserver||tg.WebKitMutationObserver,vS=tg.process,mS=tg.Promise,yS="process"==ug(vS),bS=pS(tg,"queueMicrotask"),wS=bS&&bS.value;wS||(iS=function(){var e,t;for(yS&&(e=vS.domain)&&e.exit();oS;){t=oS.fn,oS=oS.next;try{t()}catch(e){throw oS?sS():aS=void 0,e}}aS=void 0,e&&e.enter()},yS?sS=function(){vS.nextTick(iS)}:gS&&!zk?(cS=!0,uS=document.createTextNode(""),new gS(iS).observe(uS,{characterData:!0}),sS=function(){uS.data=cS=!cS}):mS&&mS.resolve?(lS=mS.resolve(void 0),fS=lS.then,sS=function(){fS.call(lS,iS)}):sS=function(){dS.call(tg,iS)});var _S,ES,kS,SS,TS=wS||function(e){var t={fn:e,next:void 0};aS&&(aS.next=t),oS||(oS=t,sS()),aS=t},xS=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=Qv(t),this.reject=Qv(n)},AS={f:function(e){return new xS(e)}},OS=function(e,t){if(Sg(e),dg(t)&&t.constructor===e)return t;var n=AS.f(e);return(0,n.resolve)(t),n.promise},PS=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},IS=hS.set,jS=Dv("species"),CS=Qg.get,RS=Qg.set,LS=Qg.getterFor("Promise"),NS=Hk,MS=tg.TypeError,US=tg.document,DS=tg.process,FS=nv("fetch"),BS=AS.f,qS=BS,HS="process"==ug(DS),VS=!!(US&&US.createEvent&&tg.dispatchEvent),WS=Av("Promise",(function(){if(!(Lg(NS)!==String(NS))){if(66===zv)return!0;if(!HS&&"function"!=typeof PromiseRejectionEvent)return!0}if(zv>=51&&/native code/.test(NS))return!1;var e=NS.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[jS]=t,!(e.then((function(){}))instanceof t)})),zS=WS||!Hm((function(e){NS.all(e).catch((function(){}))})),YS=function(e){var t;return!(!dg(e)||"function"!=typeof(t=e.then))&&t},$S=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;TS((function(){for(var i=t.value,o=1==t.state,a=0;r.length>a;){var s,c,u,l=r[a++],f=o?l.ok:l.fail,h=l.resolve,p=l.reject,d=l.domain;try{f?(o||(2===t.rejection&&JS(e,t),t.rejection=1),!0===f?s=i:(d&&d.enter(),s=f(i),d&&(d.exit(),u=!0)),s===l.promise?p(MS("Promise-chain cycle")):(c=YS(s))?c.call(s,h,p):h(s)):p(i)}catch(e){d&&!u&&d.exit(),p(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&KS(e,t)}))}},GS=function(e,t,n){var r,i;VS?((r=US.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),tg.dispatchEvent(r)):r={promise:t,reason:n},(i=tg["on"+e])?i(r):"unhandledrejection"===e&&function(e,t){var n=tg.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},KS=function(e,t){IS.call(tg,(function(){var n,r=t.value;if(XS(t)&&(n=PS((function(){HS?DS.emit("unhandledRejection",r,e):GS("unhandledrejection",e,r)})),t.rejection=HS||XS(t)?2:1,n.error))throw n.value}))},XS=function(e){return 1!==e.rejection&&!e.parent},JS=function(e,t){IS.call(tg,(function(){HS?DS.emit("rejectionHandled",e):GS("rejectionhandled",e,t.value)}))},QS=function(e,t,n,r){return function(i){e(t,n,i,r)}},ZS=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,$S(e,t,!0))},eT=function(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw MS("Promise can't be resolved itself");var i=YS(n);i?TS((function(){var r={done:!1};try{i.call(n,QS(eT,e,r,t),QS(ZS,e,r,t))}catch(n){ZS(e,r,n,t)}})):(t.value=n,t.state=1,$S(e,t,!1))}catch(n){ZS(e,{done:!1},n,t)}}};WS&&(NS=function(e){Ab(this,NS,"Promise"),Qv(e),_S.call(this);var t=CS(this);try{e(QS(eT,this,t),QS(ZS,this,t))}catch(e){ZS(this,t,e)}},(_S=function(e){RS(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=kb(NS.prototype,{then:function(e,t){var n=LS(this),r=BS(cw(this,NS));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=HS?DS.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&$S(this,n,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),ES=function(){var e=new _S,t=CS(e);this.promise=e,this.resolve=QS(eT,e,t),this.reject=QS(ZS,e,t)},AS.f=BS=function(e){return e===NS||e===kS?new ES(e):qS(e)},"function"==typeof Hk&&(SS=Hk.prototype.then,Zg(Hk.prototype,"then",(function(e,t){var n=this;return new NS((function(e,t){SS.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof FS&&Pv({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return OS(NS,FS.apply(tg,arguments))}}))),Pv({global:!0,wrap:!0,forced:WS},{Promise:NS}),iy(NS,"Promise",!1),Wk("Promise"),kS=nv("Promise"),Pv({target:"Promise",stat:!0,forced:WS},{reject:function(e){var t=BS(this);return t.reject.call(void 0,e),t.promise}}),Pv({target:"Promise",stat:!0,forced:WS},{resolve:function(e){return OS(this,e)}}),Pv({target:"Promise",stat:!0,forced:zS},{all:function(e){var t=this,n=BS(t),r=n.resolve,i=n.reject,o=PS((function(){var n=Qv(t.resolve),o=[],a=0,s=1;xb(e,(function(e){var c=a++,u=!1;o.push(void 0),s++,n.call(t,e).then((function(e){u||(u=!0,o[c]=e,--s||r(o))}),i)})),--s||r(o)}));return o.error&&i(o.value),n.promise},race:function(e){var t=this,n=BS(t),r=n.reject,i=PS((function(){var i=Qv(t.resolve);xb(e,(function(e){i.call(t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var tT,nT=kg.f,rT="".startsWith,iT=Math.min,oT=cb("startsWith"),aT=!(oT||(tT=nT(String.prototype,"startsWith"),!tT||tT.writable));Pv({target:"String",proto:!0,forced:!aT&&!oT},{startsWith:function(e){var t=String(hg(this));ab(e);var n=sv(iT(arguments.length>1?arguments[1]:void 0,t.length)),r=String(e);return rT?rT.call(t,r,n):t.slice(n,n+r.length)===r}});var sT,cT,uT,lT=function(e){return null!=e?e.constructor:null},fT=function(e,t){return Boolean(e&&t&&e instanceof t)},hT=function(e){return null==e},pT=function(e){return lT(e)===Object},dT=function(e){return lT(e)===String},gT=function(e){return lT(e)===Function},vT=function(e){return Array.isArray(e)},mT=function(e){return fT(e,NodeList)},yT=function(e){return hT(e)||(dT(e)||vT(e)||mT(e))&&!e.length||pT(e)&&!Object.keys(e).length},bT=hT,wT=pT,_T=function(e){return lT(e)===Number&&!Number.isNaN(e)},ET=dT,kT=function(e){return lT(e)===Boolean},ST=gT,TT=vT,xT=mT,AT=function(e){return fT(e,Element)},OT=function(e){return fT(e,Event)},PT=function(e){return fT(e,KeyboardEvent)},IT=function(e){return fT(e,TextTrack)||!hT(e)&&dT(e.kind)},jT=function(e){return fT(e,Promise)&&gT(e.then)},CT=function(e){if(fT(e,window.URL))return!0;if(!dT(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!yT(new URL(t).hostname)}catch(e){return!1}},RT=yT,LT=(sT=document.createElement("span"),cT={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},uT=Object.keys(cT).find((function(e){return void 0!==sT.style[e]})),!!ET(uT)&&cT[uT]);function NT(e,t){setTimeout((function(){try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var MT={isIE: /* @cc_on!@ */ -!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},KS=function(e){return function(t,n,r,i){up(n);var o=Vd(t),a=Eh(o),s=bd(o.length),c=e?s-1:0,l=e?-1:1;if(r<2)for(;;){if(c in a){i=a[c],c+=l;break}if(c+=l,e?c<0:s<=c)throw TypeError("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=l)c in a&&(i=n(i,a[c],c,o));return i}},YS={left:KS(!1),right:KS(!0)}.left,GS=Pg("reduce"),XS=yp("reduce",{1:0});function JS(e,t){return t.split(".").reduce((function(e,t){return e&&e[t]}),e)}function QS(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;var i=n.shift();return IS(i)?(Object.keys(i).forEach((function(t){IS(i[t])?(Object.keys(e).includes(t)||Object.assign(e,Go({},t,{})),QS(e[t],i[t])):Object.assign(e,Go({},t,i[t]))})),QS.apply(void 0,[e].concat(n))):e}function ZS(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var r=n>0?t.cloneNode(!0):t,i=e.parentNode,o=e.nextSibling;r.appendChild(e),o?i.insertBefore(r,o):i.appendChild(r)}))}function eE(e,t){FS(e)&&!VS(t)&&Object.entries(t).filter((function(e){var t=Qo(e,2)[1];return!CS(t)})).forEach((function(t){var n=Qo(t,2),r=n[0],i=n[1];return e.setAttribute(r,i)}))}function tE(e,t,n){var r=document.createElement(e);return IS(t)&&eE(r,t),RS(n)&&(r.innerText=n),r}function nE(e,t,n,r){FS(t)&&t.appendChild(tE(e,n,r))}function rE(e){US(e)||MS(e)?Array.from(e).forEach(rE):FS(e)&&FS(e.parentNode)&&e.parentNode.removeChild(e)}function iE(e){if(FS(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function oE(e,t){return FS(t)&&FS(t.parentNode)&&FS(e)?(t.parentNode.replaceChild(e,t),e):null}function aE(e,t){if(!RS(e)||VS(e))return{};var n={},r=QS({},t);return e.split(",").forEach((function(e){var t=e.trim(),i=t.replace(".",""),o=t.replace(/[[\]]/g,"").split("="),a=Qo(o,1)[0],s=o.length>1?o[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":RS(r.class)?n.class="".concat(r.class," ").concat(i):n.class=i;break;case"#":n.id=t.replace("#","");break;case"[":n[a]=s}})),QS(r,n)}function sE(e,t){if(FS(e)){var n=t;LS(n)||(n=!e.hidden),e.hidden=n}}function cE(e,t,n){if(US(e))return Array.from(e).map((function(e){return cE(e,t,n)}));if(FS(e)){var r="toggle";return void 0!==n&&(r=n?"add":"remove"),e.classList[r](t),e.classList.contains(t)}return!1}function lE(e,t){return FS(e)&&e.classList.contains(t)}function uE(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function fE(e){return this.elements.container.querySelectorAll(e)}function hE(e){return this.elements.container.querySelector(e)}function dE(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];FS(e)&&(e.focus({preventScroll:!0}),t&&cE(e,this.config.classNames.tabFocus))}qd({target:"Array",proto:!0,forced:!GS||!XS},{reduce:function(e){return YS(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var pE,gE={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},mE={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var r=$S.isIPhone&&n&&mE.playsinline,i=mE[e]||"html5"!==t;return{api:i,ui:i&&mE.rangeInput&&("video"!==e||!$S.isIPhone||r)}},pip:!($S.isIPhone||!NS(tE("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||tE("video").disablePictureInPicture)),airplay:NS(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(VS(e))return!1;var t=Qo(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(gE).includes(n)&&(n+='; codecs="'.concat(gE[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(pE=document.createElement("input"),pE.type="range","range"===pE.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==zS,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},vE=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function yE(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!VS(t)&&NS(n)){var s=t.split(" "),c=a;vE&&(c={passive:o,capture:a}),s.forEach((function(t){r&&r.eventListeners&&i&&r.eventListeners.push({element:e,type:t,callback:n,options:c}),e[i?"addEventListener":"removeEventListener"](t,n,c)}))}}function bE(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];yE.call(this,e,t,n,!0,r,i)}function wE(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];yE.call(this,e,t,n,!1,r,i)}function kE(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=function a(){wE(e,n,a,i,o);for(var s=arguments.length,c=new Array(s),l=0;l<s;l++)c[l]=arguments[l];r.apply(t,c)};yE.call(this,e,n,a,!0,i,o)}function SE(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(FS(e)&&!VS(t)){var i=new CustomEvent(t,{bubbles:n,detail:Jo({},r,{plyr:this})});e.dispatchEvent(i)}}function EE(){this&&this.eventListeners&&(this.eventListeners.forEach((function(e){var t=e.element,n=e.type,r=e.callback,i=e.options;t.removeEventListener(n,r,i)})),this.eventListeners=[])}function _E(){var e=this;return new Promise((function(t){return e.ready?setTimeout(t,0):bE.call(e,e.elements.container,"ready",t)})).then((function(){}))}function TE(e){return!!(MS(e)||RS(e)&&e.includes(":"))&&(MS(e)?e:e.split(":")).map(Number).every(jS)}function xE(e){if(!MS(e)||!e.every(jS))return null;var t=Qo(e,2),n=t[0],r=t[1],i=function e(t,n){return 0===n?t:e(n,t%n)}(n,r);return[n/i,r/i]}function AE(e){var t=function(e){return TE(e)?e.split(":").map(Number):null},n=t(e);if(null===n&&(n=t(this.config.ratio)),null===n&&!VS(this.embed)&&MS(this.embed.ratio)&&(n=this.embed.ratio),null===n&&this.isHTML5){var r=this.media;n=xE([r.videoWidth,r.videoHeight])}return n}function OE(e){if(!this.isVideo)return{};var t=this.elements.wrapper,n=AE.call(this,e),r=Qo(MS(n)?n:[0,0],2),i=100/r[0]*r[1];if(t.style.paddingBottom="".concat(i,"%"),this.isVimeo&&this.supported.ui){var o=(240-i)/4.8;this.media.style.transform="translateY(-".concat(o,"%)")}else this.isHTML5&&t.classList.toggle(this.config.classNames.videoFixedRatio,null!==n);return{padding:i,ratio:n}}var PE={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter((function(t){var n=t.getAttribute("type");return!!VS(n)||mE.mime.call(e,n)})):[]},getQualityOptions:function(){return this.config.quality.forced?this.config.quality.options:PE.getSources.call(this).map((function(e){return Number(e.getAttribute("size"))})).filter(Boolean)},setup:function(){if(this.isHTML5){var e=this;e.options.speed=e.config.speed.options,VS(this.config.ratio)||OE.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=PE.getSources.call(e).find((function(t){return t.getAttribute("src")===e.source}));return t&&Number(t.getAttribute("size"))},set:function(t){if(e.quality!==t){if(e.config.quality.forced&&NS(e.config.quality.onChange))e.config.quality.onChange(t);else{var n=PE.getSources.call(e).find((function(e){return Number(e.getAttribute("size"))===t}));if(!n)return;var r=e.media,i=r.currentTime,o=r.paused,a=r.preload,s=r.readyState,c=r.playbackRate;e.media.src=n.getAttribute("src"),("none"!==a||s)&&(e.once("loadedmetadata",(function(){e.speed=c,e.currentTime=i,o||e.play()})),e.media.load())}SE.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(rE(PE.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function CE(e){return MS(e)?e.filter((function(t,n){return e.indexOf(t)===n})):e}var IE=op("slice"),jE=yp("slice",{ACCESSORS:!0,0:0,1:2}),RE=Xd("species"),LE=[].slice,NE=Math.max;qd({target:"Array",proto:!0,forced:!IE||!jE},{slice:function(e,t){var n,r,i,o=Th(this),a=bd(o.length),s=Sd(e,a),c=Sd(void 0===t?a:t,a);if(Hd(o)&&("function"!=typeof(n=o.constructor)||n!==Array&&!Hd(n.prototype)?xh(n)&&null===(n=n[RE])&&(n=void 0):n=void 0,n===Array||void 0===n))return LE.call(o,s,c);for(r=new(void 0===n?Array:n)(NE(c-s,0)),i=0;s<c;s++,i++)s in o&&zd(r,i,o[s]);return r.length=i,r}});var ME=Fh.f,UE=Pd.f,FE=ud.set,DE=Xd("match"),BE=dh.RegExp,qE=BE.prototype,HE=/a/g,VE=/a/g,zE=new BE(HE)!==HE,WE=im.UNSUPPORTED_Y;if(gh&&Dd("RegExp",!zE||WE||ph((function(){return VE[DE]=!1,BE(HE)!=HE||BE(VE)==VE||"/a/i"!=BE(HE,"i")})))){for(var $E=function(e,t){var n,r=this instanceof $E,i=vm(e),o=void 0===t;if(!r&&i&&e.constructor===$E&&o)return e;zE?i&&!o&&(e=e.source):e instanceof $E&&(o&&(t=nm.call(e)),e=e.source),WE&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var a=Mg(zE?new BE(e,t):BE(e,t),r?this:qE,$E);return WE&&n&&FE(a,{sticky:n}),a},KE=function(e){e in $E||ME($E,e,{configurable:!0,get:function(){return BE[e]},set:function(t){BE[e]=t}})},YE=UE(BE),GE=0;YE.length>GE;)KE(YE[GE++]);qE.constructor=$E,$E.prototype=qE,fd(dh,"RegExp",$E)}function XE(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return VS(e)?e:e.toString().replace(/{(\d+)}/g,(function(e,t){return n[t].toString()}))}function JE(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),n.toString())}function QE(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.toString().replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))}function ZE(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return t=JE(t,"-"," "),t=JE(t,"_"," "),JE(t=QE(t)," ","")}function e_(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}nk("RegExp");var t_={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},n_=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(VS(e)||VS(t))return"";var n=JS(t.i18n,e);if(VS(n))return Object.keys(t_).includes(e)?t_[e]:"";var r={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(r).forEach((function(e){var t=Qo(e,2),r=t[0],i=t[1];n=JE(n,r,i)})),n},r_=function(){function e(t){$o(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return Yo(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(VS(n))return null;var r=JSON.parse(n);return RS(t)&&t.length?r[t]:r}},{key:"set",value:function(t){if(e.supported&&this.enabled&&IS(t)){var n=this.get();VS(n)&&(n={}),QS(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function i_(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise((function(n,r){try{var i=new XMLHttpRequest;if(!("withCredentials"in i))return;i.addEventListener("load",(function(){if("text"===t)try{n(JSON.parse(i.responseText))}catch(e){n(i.responseText)}else n(i.response)})),i.addEventListener("error",(function(){throw new Error(i.status)})),i.open("GET",e,!0),i.responseType=t,i.send()}catch(e){r(e)}}))}function o_(e,t){if(RS(e)){var n=RS(t),r=function(){return null!==document.getElementById(t)},i=function(e,t){e.innerHTML=t,n&&r()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!r()){var o=r_.supported,a=document.createElement("div");if(a.setAttribute("hidden",""),n&&a.setAttribute("id",t),o){var s=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==s){var c=JSON.parse(s);i(a,c.content)}}i_(e).then((function(e){VS(e)||(o&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),i(a,e))})).catch((function(){}))}}}var a_=Math.ceil,s_=Math.floor;qd({target:"Math",stat:!0},{trunc:function(e){return(e>0?s_:a_)(e)}});var c_=function(e){return Math.trunc(e/60/60%60,10)},l_=function(e){return Math.trunc(e/60%60,10)},u_=function(e){return Math.trunc(e%60,10)};function f_(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!jS(e))return f_(void 0,t,n);var r=function(e){return"0".concat(e).slice(-2)},i=c_(e),o=l_(e),a=u_(e);return i=t||i>0?"".concat(i,":"):"","".concat(n&&e>0?"-":"").concat(i).concat(r(o),":").concat(r(a))}var h_={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||$S.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=hE.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:fE.call(this,this.config.selectors.buttons.play),pause:hE.call(this,this.config.selectors.buttons.pause),restart:hE.call(this,this.config.selectors.buttons.restart),rewind:hE.call(this,this.config.selectors.buttons.rewind),fastForward:hE.call(this,this.config.selectors.buttons.fastForward),mute:hE.call(this,this.config.selectors.buttons.mute),pip:hE.call(this,this.config.selectors.buttons.pip),airplay:hE.call(this,this.config.selectors.buttons.airplay),settings:hE.call(this,this.config.selectors.buttons.settings),captions:hE.call(this,this.config.selectors.buttons.captions),fullscreen:hE.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=hE.call(this,this.config.selectors.progress),this.elements.inputs={seek:hE.call(this,this.config.selectors.inputs.seek),volume:hE.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:hE.call(this,this.config.selectors.display.buffer),currentTime:hE.call(this,this.config.selectors.display.currentTime),duration:hE.call(this,this.config.selectors.display.duration)},FS(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=h_.getIconUrl.call(this),r="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),i=document.createElementNS("http://www.w3.org/2000/svg","svg");eE(i,QS(t,{"aria-hidden":"true",focusable:"false"}));var o=document.createElementNS("http://www.w3.org/2000/svg","use"),a="".concat(r,"-").concat(e);return"href"in o&&o.setAttributeNS("http://www.w3.org/1999/xlink","href",a),o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),i.appendChild(o),i},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=n_(e,this.config),r=Jo({},t,{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")});return tE("span",r,n)},createBadge:function(e){if(VS(e))return null;var t=tE("span",{class:this.config.classNames.menu.value});return t.appendChild(tE("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=this,r=QS({},t),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return(t=ZE(t)).charAt(0).toLowerCase()+t.slice(1)}(e),o={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((function(e){Object.keys(r).includes(e)&&(o[e]=r[e],delete r[e])})),"button"!==o.element||Object.keys(r).includes("type")||(r.type="button"),Object.keys(r).includes("class")?r.class.split(" ").some((function(e){return e===n.config.classNames.control}))||QS(r,{class:"".concat(r.class," ").concat(this.config.classNames.control)}):r.class=this.config.classNames.control,e){case"play":o.toggle=!0,o.label="play",o.labelPressed="pause",o.icon="play",o.iconPressed="pause";break;case"mute":o.toggle=!0,o.label="mute",o.labelPressed="unmute",o.icon="volume",o.iconPressed="muted";break;case"captions":o.toggle=!0,o.label="enableCaptions",o.labelPressed="disableCaptions",o.icon="captions-off",o.iconPressed="captions-on";break;case"fullscreen":o.toggle=!0,o.label="enterFullscreen",o.labelPressed="exitFullscreen",o.icon="enter-fullscreen",o.iconPressed="exit-fullscreen";break;case"play-large":r.class+=" ".concat(this.config.classNames.control,"--overlaid"),i="play",o.label="play",o.icon="play";break;default:VS(o.label)&&(o.label=i),VS(o.icon)&&(o.icon=e)}var a=tE(o.element);return o.toggle?(a.appendChild(h_.createIcon.call(this,o.iconPressed,{class:"icon--pressed"})),a.appendChild(h_.createIcon.call(this,o.icon,{class:"icon--not-pressed"})),a.appendChild(h_.createLabel.call(this,o.labelPressed,{class:"label--pressed"})),a.appendChild(h_.createLabel.call(this,o.label,{class:"label--not-pressed"}))):(a.appendChild(h_.createIcon.call(this,o.icon)),a.appendChild(h_.createLabel.call(this,o.label))),QS(r,aE(this.config.selectors.buttons[i],r)),eE(a,r),"play"===i?(MS(this.elements.buttons[i])||(this.elements.buttons[i]=[]),this.elements.buttons[i].push(a)):this.elements.buttons[i]=a,a},createRange:function(e,t){var n=tE("input",QS(aE(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":n_(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,h_.updateRangeFill.call(this,n),Zw.setup(n),n},createProgress:function(e,t){var n=tE("progress",QS(aE(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(tE("span",null,"0"));var r={played:"played",buffer:"buffered"}[e],i=r?n_(r,this.config):"";n.innerText="% ".concat(i.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e,t){var n=aE(this.config.selectors.display[e],t),r=tE("div",QS(n,{class:"".concat(n.class?n.class:""," ").concat(this.config.classNames.display.time," ").trim(),"aria-label":n_(e,this.config)}),"00:00");return this.elements.display[e]=r,r},bindMenuItemShortcuts:function(e,t){var n=this;bE.call(this,e,"keydown keyup",(function(r){if([32,38,39,40].includes(r.which)&&(r.preventDefault(),r.stopPropagation(),"keydown"!==r.type)){var i,o=uE(e,'[role="menuitemradio"]');if(!o&&[32,39].includes(r.which))h_.showMenuPanel.call(n,t,!0);else 32!==r.which&&(40===r.which||o&&39===r.which?(i=e.nextElementSibling,FS(i)||(i=e.parentNode.firstElementChild)):(i=e.previousElementSibling,FS(i)||(i=e.parentNode.lastElementChild)),dE.call(n,i,!0))}}),!1),bE.call(this,e,"keyup",(function(e){13===e.which&&h_.focusFirstMenuItem.call(n,null,!0)}))},createMenuItem:function(e){var t=this,n=e.value,r=e.list,i=e.type,o=e.title,a=e.badge,s=void 0===a?null:a,c=e.checked,l=void 0!==c&&c,u=aE(this.config.selectors.inputs[i]),f=tE("button",QS(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":l,value:n})),h=tE("span");h.innerHTML=o,FS(s)&&h.appendChild(s),f.appendChild(h),Object.defineProperty(f,"checked",{enumerable:!0,get:function(){return"true"===f.getAttribute("aria-checked")},set:function(e){e&&Array.from(f.parentNode.children).filter((function(e){return uE(e,'[role="menuitemradio"]')})).forEach((function(e){return e.setAttribute("aria-checked","false")})),f.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(f,"click keyup",(function(e){if(!BS(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),f.checked=!0,i){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}h_.showMenuPanel.call(t,"home",BS(e))}}),i,!1),h_.bindMenuItemShortcuts.call(this,f,i),r.appendChild(f)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!jS(e))return e;var n=c_(this.duration)>0;return f_(e,n,t)},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];FS(e)&&jS(t)&&(e.innerText=h_.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(FS(this.elements.inputs.volume)&&h_.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),FS(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;FS(e)&&(e.value=t,h_.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&DS(e)){var n=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=function(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}(this.currentTime,this.duration),"timeupdate"===e.type&&h_.setRange.call(this,this.elements.inputs.seek,n);break;case"playing":case"progress":!function(e,n){var r=jS(n)?n:0,i=FS(e)?e:t.elements.display.buffer;if(FS(i)){i.value=r;var o=i.getElementsByTagName("span")[0];FS(o)&&(o.childNodes[0].nodeValue=r)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=DS(e)?e.target:e;if(FS(t)&&"range"===t.getAttribute("type")){if(uE(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=h_.formatTime(this.currentTime),r=h_.formatTime(this.duration),i=n_("seekLabel",this.config);t.setAttribute("aria-valuetext",i.replace("{currentTime}",n).replace("{duration}",r))}else if(uE(t,this.config.selectors.inputs.volume)){var o=100*t.value;t.setAttribute("aria-valuenow",o),t.setAttribute("aria-valuetext","".concat(o.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);$S.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&FS(this.elements.inputs.seek)&&FS(this.elements.display.seekTooltip)&&0!==this.duration){var n="".concat(this.config.classNames.tooltip,"--visible"),r=function(e){return cE(t.elements.display.seekTooltip,n,e)};if(this.touch)r(!1);else{var i=0,o=this.elements.progress.getBoundingClientRect();if(DS(e))i=100/o.width*(e.pageX-o.left);else{if(!lE(this.elements.display.seekTooltip,n))return;i=parseFloat(this.elements.display.seekTooltip.style.left,10)}i<0?i=0:i>100&&(i=100),h_.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*i),this.elements.display.seekTooltip.style.left="".concat(i,"%"),DS(e)&&["mouseenter","mouseleave"].includes(e.type)&&r("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!FS(this.elements.display.duration)&&this.config.invertTime;h_.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||h_.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return sE(this.elements.display.currentTime,!0),void sE(this.elements.progress,!0);FS(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=FS(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&h_.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&h_.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),h_.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){sE(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var r=this.elements.settings.panels[e],i=null,o=t;if("captions"===e)i=this.currentTrack;else{if(i=VS(n)?this[e]:n,VS(i)&&(i=this.config[e].default),!VS(this.options[e])&&!this.options[e].includes(i))return void this.debug.warn("Unsupported value of '".concat(i,"' for ").concat(e));if(!this.config[e].options.includes(i))return void this.debug.warn("Disabled value of '".concat(i,"' for ").concat(e))}if(FS(o)||(o=r&&r.querySelector('[role="menu"]')),FS(o)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=h_.getLabel.call(this,e,i);var a=o&&o.querySelector('[value="'.concat(i,'"]'));FS(a)&&(a.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?n_("normal",this.config):"".concat(t,"×");case"quality":if(jS(t)){var n=n_("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return QE(t);case"captions":return g_.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(FS(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');MS(e)&&(this.options.quality=CE(e).filter((function(e){return t.config.quality.options.includes(e)})));var r=!VS(this.options.quality)&&this.options.quality.length>1;if(h_.toggleMenuButton.call(this,"quality",r),iE(n),h_.checkMenu.call(this),r){var i=function(e){var n=n_("qualityBadge.".concat(e),t.config);return n.length?h_.createBadge.call(t,n):null};this.options.quality.sort((function(e,n){var r=t.config.quality.options;return r.indexOf(e)>r.indexOf(n)?1:-1})).forEach((function(e){h_.createMenuItem.call(t,{value:e,list:n,type:"quality",title:h_.getLabel.call(t,"quality",e),badge:i(e)})})),h_.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(FS(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=g_.getTracks.call(this),r=Boolean(n.length);if(h_.toggleMenuButton.call(this,"captions",r),iE(t),h_.checkMenu.call(this),r){var i=n.map((function(n,r){return{value:r,checked:e.captions.toggled&&e.currentTrack===r,title:g_.getLabel.call(e,n),badge:n.language&&h_.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}}));i.unshift({value:-1,checked:!this.captions.toggled,title:n_("disabled",this.config),list:t,type:"language"}),i.forEach(h_.createMenuItem.bind(this)),h_.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(){var e=this;if(FS(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((function(t){return t>=e.minimumSpeed&&t<=e.maximumSpeed}));var n=!VS(this.options.speed)&&this.options.speed.length>1;h_.toggleMenuButton.call(this,"speed",n),iE(t),h_.checkMenu.call(this),n&&(this.options.speed.forEach((function(n){h_.createMenuItem.call(e,{value:n,list:t,type:"speed",title:h_.getLabel.call(e,"speed",n)})})),h_.updateSetting.call(this,"speed",t))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!VS(e)&&Object.values(e).some((function(e){return!e.hidden}));sE(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;FS(n)||(n=Object.values(this.elements.settings.panels).find((function(e){return!e.hidden})));var r=n.querySelector('[role^="menuitem"]');dE.call(this,r,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(FS(t)&&FS(n)){var r=t.hidden,i=r;if(LS(e))i=e;else if(BS(e)&&27===e.which)i=!1;else if(DS(e)){var o=NS(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(o);if(a||!a&&e.target!==n&&i)return}n.setAttribute("aria-expanded",i),sE(t,!i),cE(this.elements.container,this.config.classNames.menu.open,i),i&&BS(e)?h_.focusFirstMenuItem.call(this,null,!0):i||r||dE.call(this,n,BS(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,r=t.scrollHeight;return rE(t),{width:n,height:r}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.elements.container.querySelector("#plyr-settings-".concat(this.id,"-").concat(t));if(FS(r)){var i=r.parentNode,o=Array.from(i.children).find((function(e){return!e.hidden}));if(mE.transitions&&!mE.reducedMotion){i.style.width="".concat(o.scrollWidth,"px"),i.style.height="".concat(o.scrollHeight,"px");var a=h_.getMenuSize.call(this,r),s=function t(n){n.target===i&&["width","height"].includes(n.propertyName)&&(i.style.width="",i.style.height="",wE.call(e,i,zS,t))};bE.call(this,i,zS,s),i.style.width="".concat(a.width,"px"),i.style.height="".concat(a.height,"px")}sE(o,!0),sE(r,!1),h_.focusFirstMenuItem.call(this,r,n)}},setDownloadUrl:function(){var e=this.elements.buttons.download;FS(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=h_.bindMenuItemShortcuts,r=h_.createButton,i=h_.createProgress,o=h_.createRange,a=h_.createTime,s=h_.setQualityMenu,c=h_.setSpeedMenu,l=h_.showMenuPanel;this.elements.controls=null,this.config.controls.includes("play-large")&&this.elements.container.appendChild(r.call(this,"play-large"));var u=tE("div",aE(this.config.selectors.controls.wrapper));this.elements.controls=u;var f={class:"plyr__controls__item"};return CE(this.config.controls).forEach((function(s){if("restart"===s&&u.appendChild(r.call(t,"restart",f)),"rewind"===s&&u.appendChild(r.call(t,"rewind",f)),"play"===s&&u.appendChild(r.call(t,"play",f)),"fast-forward"===s&&u.appendChild(r.call(t,"fast-forward",f)),"progress"===s){var c=tE("div",{class:"".concat(f.class," plyr__progress__container")}),h=tE("div",aE(t.config.selectors.progress));if(h.appendChild(o.call(t,"seek",{id:"plyr-seek-".concat(e.id)})),h.appendChild(i.call(t,"buffer")),t.config.tooltips.seek){var d=tE("span",{class:t.config.classNames.tooltip},"00:00");h.appendChild(d),t.elements.display.seekTooltip=d}t.elements.progress=h,c.appendChild(t.elements.progress),u.appendChild(c)}if("current-time"===s&&u.appendChild(a.call(t,"currentTime",f)),"duration"===s&&u.appendChild(a.call(t,"duration",f)),"mute"===s||"volume"===s){var p=t.elements.volume;if(FS(p)&&u.contains(p)||(p=tE("div",QS({},f,{class:"".concat(f.class," plyr__volume").trim()})),t.elements.volume=p,u.appendChild(p)),"mute"===s&&p.appendChild(r.call(t,"mute")),"volume"===s&&!$S.isIos){var g={max:1,step:.05,value:t.config.volume};p.appendChild(o.call(t,"volume",QS(g,{id:"plyr-volume-".concat(e.id)})))}}if("captions"===s&&u.appendChild(r.call(t,"captions",f)),"settings"===s&&!VS(t.config.settings)){var m=tE("div",QS({},f,{class:"".concat(f.class," plyr__menu").trim(),hidden:""}));m.appendChild(r.call(t,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var v=tE("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),y=tE("div"),b=tE("div",{id:"plyr-settings-".concat(e.id,"-home")}),w=tE("div",{role:"menu"});b.appendChild(w),y.appendChild(b),t.elements.settings.panels.home=b,t.config.settings.forEach((function(r){var i=tE("button",QS(aE(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));n.call(t,i,r),bE.call(t,i,"click",(function(){l.call(t,r,!1)}));var o=tE("span",null,n_(r,t.config)),a=tE("span",{class:t.config.classNames.menu.value});a.innerHTML=e[r],o.appendChild(a),i.appendChild(o),w.appendChild(i);var s=tE("div",{id:"plyr-settings-".concat(e.id,"-").concat(r),hidden:""}),c=tE("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});c.appendChild(tE("span",{"aria-hidden":!0},n_(r,t.config))),c.appendChild(tE("span",{class:t.config.classNames.hidden},n_("menuBack",t.config))),bE.call(t,s,"keydown",(function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),l.call(t,"home",!0))}),!1),bE.call(t,c,"click",(function(){l.call(t,"home",!1)})),s.appendChild(c),s.appendChild(tE("div",{role:"menu"})),y.appendChild(s),t.elements.settings.buttons[r]=i,t.elements.settings.panels[r]=s})),v.appendChild(y),m.appendChild(v),u.appendChild(m),t.elements.settings.popup=v,t.elements.settings.menu=m}if("pip"===s&&mE.pip&&u.appendChild(r.call(t,"pip",f)),"airplay"===s&&mE.airplay&&u.appendChild(r.call(t,"airplay",f)),"download"===s){var k=QS({},f,{element:"a",href:t.download,target:"_blank"});t.isHTML5&&(k.download="");var S=t.config.urls.download;!HS(S)&&t.isEmbed&&QS(k,{icon:"logo-".concat(t.provider),label:t.provider}),u.appendChild(r.call(t,"download",k))}"fullscreen"===s&&u.appendChild(r.call(t,"fullscreen",f))})),this.isHTML5&&s.call(this,PE.getQualityOptions.call(this)),c.call(this),u},inject:function(){var e=this;if(this.config.loadSprite){var t=h_.getIconUrl.call(this);t.cors&&o_(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var r={id:this.id,seektime:this.config.seekTime,title:this.config.title},i=!0;NS(this.config.controls)&&(this.config.controls=this.config.controls.call(this,r)),this.config.controls||(this.config.controls=[]),FS(this.config.controls)||RS(this.config.controls)?n=this.config.controls:(n=h_.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:g_.getLabel.call(this)}),i=!1);var o,a=function(e){var t=e;return Object.entries(r).forEach((function(e){var n=Qo(e,2),r=n[0],i=n[1];t=JE(t,"{".concat(r,"}"),i)})),t};if(i&&(RS(this.config.controls)?n=a(n):FS(n)&&(n.innerHTML=a(n.innerHTML))),RS(this.config.selectors.controls.container)&&(o=document.querySelector(this.config.selectors.controls.container)),FS(o)||(o=this.elements.container),o[FS(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),FS(this.elements.controls)||h_.findElements.call(this),!VS(this.elements.buttons)){var s=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return lE(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];cE(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((function(e){MS(e)||US(e)?Array.from(e).filter(Boolean).forEach(s):s(e)}))}if($S.isEdge&&WS(o),this.config.tooltips.controls){var c=this.config,l=c.classNames,u=c.selectors,f="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(l.hidden),h=fE.call(this,f);Array.from(h).forEach((function(t){cE(t,e.config.classNames.hidden,!1),cE(t,e.config.classNames.tooltip,!0)}))}}};function d_(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e;if(t){var r=document.createElement("a");r.href=n,n=r.href}try{return new URL(n)}catch(e){return null}}function p_(e){var t=new URLSearchParams;return IS(e)&&Object.entries(e).forEach((function(e){var n=Qo(e,2),r=n[0],i=n[1];t.set(r,i)})),t}var g_={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!mE.textTracks)MS(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&h_.setCaptionsMenu.call(this);else{if(FS(this.elements.captions)||(this.elements.captions=tE("div",aE(this.config.selectors.captions)),function(e,t){FS(e)&&FS(t)&&t.parentNode.insertBefore(e,t.nextSibling)}(this.elements.captions,this.elements.wrapper)),$S.isIE&&window.URL){var e=this.media.querySelectorAll("track");Array.from(e).forEach((function(e){var t=e.getAttribute("src"),n=d_(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&i_(t,"blob").then((function(t){e.setAttribute("src",window.URL.createObjectURL(t))})).catch((function(){rE(e)}))}))}var t=CE((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((function(e){return e.split("-")[0]}))),n=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===n)n=Qo(t,1)[0];var r=this.storage.get("captions");if(LS(r)||(r=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:r,language:n,languages:t}),this.isHTML5){var i=this.config.captions.update?"addtrack removetrack":"removetrack";bE.call(this,this.media.textTracks,i,g_.update.bind(this))}setTimeout(g_.update.bind(this),0)}},update:function(){var e=this,t=g_.getTracks.call(this,!0),n=this.captions,r=n.active,i=n.language,o=n.meta,a=n.currentTrackNode,s=Boolean(t.find((function(e){return e.language===i})));this.isHTML5&&this.isVideo&&t.filter((function(e){return!o.get(e)})).forEach((function(t){e.debug.log("Track added",t),o.set(t,{default:"showing"===t.mode}),t.mode="hidden",bE.call(e,t,"cuechange",(function(){return g_.updateCues.call(e)}))})),(s&&this.language!==i||!t.includes(a))&&(g_.setLanguage.call(this,i),g_.toggle.call(this,r&&s)),cE(this.elements.container,this.config.classNames.captions.enabled,!VS(t)),MS(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&h_.setCaptionsMenu.call(this)},toggle:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var n=this.captions.toggled,r=this.config.classNames.captions.active,i=CS(e)?!n:e;if(i!==n){if(t||(this.captions.active=i,this.storage.set({captions:i})),!this.language&&i&&!t){var o=g_.getTracks.call(this),a=g_.findTrack.call(this,[this.captions.language].concat(Zo(this.captions.languages)),!0);return this.captions.language=a.language,void g_.set.call(this,o.indexOf(a))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=i),cE(this.elements.container,r,i),this.captions.toggled=i,h_.updateSetting.call(this,"captions"),SE.call(this,this.media,i?"captionsenabled":"captionsdisabled")}}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=g_.getTracks.call(this);if(-1!==e)if(jS(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var r=n[e],i=r||{},o=i.language;this.captions.currentTrackNode=r,h_.updateSetting.call(this,"captions"),t||(this.captions.language=o,this.storage.set({language:o})),this.isVimeo&&this.embed.enableTextTrack(o),SE.call(this,this.media,"languagechange")}g_.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&g_.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else g_.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(RS(e)){var n=e.toLowerCase();this.captions.language=n;var r=g_.getTracks.call(this),i=g_.findTrack.call(this,[n]);g_.set.call(this,r.indexOf(i),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=Array.from((this.media||{}).textTracks||[]);return n.filter((function(n){return!e.isHTML5||t||e.captions.meta.has(n)})).filter((function(e){return["captions","subtitles"].includes(e.kind)}))},findTrack:function(e){var t,n=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=g_.getTracks.call(this),o=function(e){return Number((n.captions.meta.get(e)||{}).default)},a=Array.from(i).sort((function(e,t){return o(t)-o(e)}));return e.every((function(e){return!(t=a.find((function(t){return t.language===e})))})),t||(r?a[0]:void 0)},getCurrentTrack:function(){return g_.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!qS(t)&&mE.textTracks&&this.captions.toggled&&(t=g_.getCurrentTrack.call(this)),qS(t)?VS(t.label)?VS(t.language)?n_("enabled",this.config):e.language.toUpperCase():t.label:n_("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(FS(this.elements.captions))if(CS(e)||Array.isArray(e)){var t=e;if(!t){var n=g_.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map((function(e){return e.getCueAsHTML()})).map(e_)}var r=t.map((function(e){return e.trim()})).join("\n");if(r!==this.elements.captions.innerHTML){iE(this.elements.captions);var i=tE("span",aE(this.config.selectors.caption));i.innerHTML=r,this.elements.captions.appendChild(i),SE.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},m_={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.5.10/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,sidedock:!1,controls:!1,referrerPolicy:null},youtube:{noCookie:!1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},v_="picture-in-picture",y_="inline",b_={html5:"html5",youtube:"youtube",vimeo:"vimeo"},w_="audio",k_="video";var S_=function(){},E_=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];$o(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return Yo(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):S_}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):S_}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):S_}}]),e}(),__=function(){function e(t){var n=this;$o(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,bE.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),(function(){n.onChange()})),bE.call(this.player,this.player.elements.container,"dblclick",(function(e){FS(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()})),bE.call(this,this.player.elements.container,"keydown",(function(e){return n.trapFocus(e)})),this.update()}return Yo(e,[{key:"onChange",value:function(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;FS(e)&&(e.pressed=this.active),SE.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0)}}},{key:"toggleFallback",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",cE(this.target,this.player.config.classNames.fullscreen.fallback,e),$S.isIos){var t=document.head.querySelector('meta[name="viewport"]'),n="viewport-fit=cover";t||(t=document.createElement("meta")).setAttribute("name","viewport");var r=RS(t.content)&&t.content.includes(n);e?(this.cleanupViewport=!r,r||(t.content+=",".concat(n))):this.cleanupViewport&&(t.content=t.content.split(",").filter((function(e){return e.trim()!==n})).join(","))}this.onChange()}},{key:"trapFocus",value:function(e){if(!$S.isIos&&this.active&&"Tab"===e.key&&9===e.keyCode){var t=document.activeElement,n=fE.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),r=Qo(n,1)[0],i=n[n.length-1];t!==i||e.shiftKey?t===r&&e.shiftKey&&(i.focus(),e.preventDefault()):(r.focus(),e.preventDefault())}}},{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");cE(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&($S.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?this.toggleFallback(!0):this.prefix?VS(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen({navigationUI:"hide"}))}},{key:"exit",value:function(){if(this.enabled)if($S.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),this.player.play();else if(!e.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!VS(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){return!!this.enabled&&(!e.native||this.forceFallback?lE(this.target,this.player.config.classNames.fullscreen.fallback):(this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement)===this.target)}},{key:"target",get:function(){return $S.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(NS(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some((function(t){return!(!NS(document["".concat(t,"ExitFullscreen")])&&!NS(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)})),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}(),T_=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1};function x_(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise((function(n,r){var i=new Image,o=function(){delete i.onload,delete i.onerror,(i.naturalWidth>=t?n:r)(i)};Object.assign(i,{onload:o,onerror:o,src:e})}))}qd({target:"Math",stat:!0},{sign:T_});var A_={addStyleHook:function(){cE(this.elements.container,this.config.selectors.container.replace(".",""),!0),cE(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void A_.toggleNativeControls.call(this,!0);FS(this.elements.controls)||(h_.inject.call(this),this.listeners.controls()),A_.toggleNativeControls.call(this),this.isHTML5&&g_.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,h_.updateVolume.call(this),h_.timeUpdate.call(this),A_.checkPlaying.call(this),cE(this.elements.container,this.config.classNames.pip.supported,mE.pip&&this.isHTML5&&this.isVideo),cE(this.elements.container,this.config.classNames.airplay.supported,mE.airplay&&this.isHTML5),cE(this.elements.container,this.config.classNames.isIos,$S.isIos),cE(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((function(){SE.call(e,e.media,"ready")}),0),A_.setTitle.call(this),this.poster&&A_.setPoster.call(this,this.poster,!1).catch((function(){})),this.config.duration&&h_.durationUpdate.call(this)},setTitle:function(){var e=n_("play",this.config);if(RS(this.config.title)&&!VS(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach((function(t){t.setAttribute("aria-label",e)})),this.isEmbed){var t=hE.call(this,"iframe");if(!FS(t))return;var n=VS(this.config.title)?"video":this.config.title,r=n_("frameTitle",this.config);t.setAttribute("title",r.replace("{title}",n))}},togglePoster:function(e){cE(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("poster",e),this.isHTML5?Promise.resolve(e):_E.call(this).then((function(){return x_(e)})).catch((function(n){throw e===t.poster&&A_.togglePoster.call(t,!1),n})).then((function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),A_.togglePoster.call(t,!0),e})))},checkPlaying:function(e){var t=this;cE(this.elements.container,this.config.classNames.playing,this.playing),cE(this.elements.container,this.config.classNames.paused,this.paused),cE(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((function(e){Object.assign(e,{pressed:t.playing}),e.setAttribute("aria-label",n_(t.playing?"pause":"play",t.config))})),DS(e)&&"timeupdate"===e.type||A_.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((function(){cE(t.elements.container,t.config.classNames.loading,t.loading),A_.toggleControls.call(t)}),this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}}},O_=function(){function e(t){$o(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return Yo(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,r=e.keyCode?e.keyCode:e.which,i="keydown"===e.type,o=i&&r===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&jS(r)){if(i){var a=document.activeElement;if(FS(a)){var s=t.config.selectors.editable;if(a!==n.inputs.seek&&uE(a,s))return;if(32===e.which&&uE(a,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(r)&&(e.preventDefault(),e.stopPropagation()),r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:o||(t.currentTime=t.duration/10*(r-48));break;case 32:case 75:o||t.togglePlay();break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:o||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:o||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===r&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=r}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){h_.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,cE(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var r,i=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||i)r=t.config.classNames.tabFocus,cE(fE.call(t,".".concat(r)),r,!1),this.focusTimer=setTimeout((function(){var e=document.activeElement;n.container.contains(e)&&cE(document.activeElement,t.config.classNames.tabFocus,!0)}),10)}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&yE.call(t,window,"keydown keyup",this.handleKey,e,!1),yE.call(t,document.body,"click",this.toggleMenu,e),kE.call(t,document.body,"touchstart",this.firstTouch),yE.call(t,document.body,"keydown focus blur",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,r=e.timers;!t.keyboard.global&&t.keyboard.focused&&bE.call(e,n.container,"keydown keyup",this.handleKey,!1),bE.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(function(t){var i=n.controls;i&&"enterfullscreen"===t.type&&(i.pressed=!1,i.hover=!1);var o=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(A_.toggleControls.call(e,!0),o=e.touch?3e3:2e3),clearTimeout(r.controls),r.controls=setTimeout((function(){return A_.toggleControls.call(e,!1)}),o)}));var i=function(t){if(!t)return OE.call(e);var r=n.container.getBoundingClientRect(),i=r.width,o=r.height;return OE.call(e,"".concat(i,":").concat(o))},o=function(){clearTimeout(r.resized),r.resized=setTimeout(i,50)};bE.call(e,n.container,"enterfullscreen exitfullscreen",(function(t){var r=e.fullscreen,a=r.target,s=r.usingNative;if(a===n.container&&(e.isEmbed||!VS(e.config.ratio))){var c="enterfullscreen"===t.type,l=i(c);l.padding;!function(t,n,r){if(e.isVimeo){var i=e.elements.wrapper.firstChild,o=Qo(t,2)[1],a=Qo(AE.call(e),2),s=a[0],c=a[1];i.style.maxWidth=r?"".concat(o/c*s,"px"):null,i.style.margin=r?"0 auto":null}}(l.ratio,0,c),s||(c?bE.call(e,window,"resize",o):wE.call(e,window,"resize",o))}}))}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(bE.call(t,t.media,"timeupdate seeking seeked",(function(e){return h_.timeUpdate.call(t,e)})),bE.call(t,t.media,"durationchange loadeddata loadedmetadata",(function(e){return h_.durationUpdate.call(t,e)})),bE.call(t,t.media,"ended",(function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&(t.restart(),t.pause())})),bE.call(t,t.media,"progress playing seeking seeked",(function(e){return h_.updateProgress.call(t,e)})),bE.call(t,t.media,"volumechange",(function(e){return h_.updateVolume.call(t,e)})),bE.call(t,t.media,"playing play pause ended emptied timeupdate",(function(e){return A_.checkPlaying.call(t,e)})),bE.call(t,t.media,"waiting canplay seeked playing",(function(e){return A_.checkLoading.call(t,e)})),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var r=hE.call(t,".".concat(t.config.classNames.video));if(!FS(r))return;bE.call(t,n.container,"click",(function(i){([n.container,r].includes(i.target)||r.contains(i.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(i,t.restart,"restart"),e.proxy(i,t.play,"play")):e.proxy(i,t.togglePlay,"play")))}))}t.supported.ui&&t.config.disableContextMenu&&bE.call(t,n.wrapper,"contextmenu",(function(e){e.preventDefault()}),!1),bE.call(t,t.media,"volumechange",(function(){t.storage.set({volume:t.volume,muted:t.muted})})),bE.call(t,t.media,"ratechange",(function(){h_.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})})),bE.call(t,t.media,"qualitychange",(function(e){h_.updateSetting.call(t,"quality",null,e.detail.quality)})),bE.call(t,t.media,"ready qualitychange",(function(){h_.setDownloadUrl.call(t)}));var i=t.config.events.concat(["keyup","keydown"]).join(" ");bE.call(t,t.media,i,(function(e){var r=e.detail,i=void 0===r?{}:r;"error"===e.type&&(i=t.media.error),SE.call(t,n.container,e.type,!0,i)}))}},{key:"proxy",value:function(e,t,n){var r=this.player,i=r.config.listeners[n],o=!0;NS(i)&&(o=i.call(r,e)),!1!==o&&NS(t)&&t.call(r,e)}},{key:"bind",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=this.player,s=a.config.listeners[r],c=NS(s);bE.call(a,e,t,(function(e){return i.proxy(e,n,r)}),o&&!c)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,r=$S.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach((function(n){e.bind(n,"click",t.togglePlay,"play")})),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",(function(){t.muted=!t.muted}),"mute"),this.bind(n.buttons.captions,"click",(function(){return t.toggleCaptions()})),this.bind(n.buttons.download,"click",(function(){SE.call(t,t.media,"download")}),"download"),this.bind(n.buttons.fullscreen,"click",(function(){t.fullscreen.toggle()}),"fullscreen"),this.bind(n.buttons.pip,"click",(function(){t.pip="toggle"}),"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",(function(e){e.stopPropagation(),e.preventDefault(),h_.toggleMenu.call(t,e)}),null,!1),this.bind(n.buttons.settings,"keyup",(function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),h_.toggleMenu.call(t,e)):h_.focusFirstMenuItem.call(t,null,!0))}),null,!1),this.bind(n.settings.menu,"keydown",(function(e){27===e.which&&h_.toggleMenu.call(t,e)})),this.bind(n.inputs.seek,"mousedown mousemove",(function(e){var t=n.progress.getBoundingClientRect(),r=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",r)})),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(function(e){var n=e.currentTarget,r=e.keyCode?e.keyCode:e.which;if(!BS(e)||39===r||37===r){t.lastSeekTime=Date.now();var i=n.hasAttribute("play-on-seeked"),o=["mouseup","touchend","keyup"].includes(e.type);i&&o?(n.removeAttribute("play-on-seeked"),t.play()):!o&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}})),$S.isIos){var i=fE.call(t,'input[type="range"]');Array.from(i).forEach((function(t){return e.bind(t,r,(function(e){return WS(e.target)}))}))}this.bind(n.inputs.seek,r,(function(e){var n=e.currentTarget,r=n.getAttribute("seek-value");VS(r)&&(r=n.value),n.removeAttribute("seek-value"),t.currentTime=r/n.max*t.duration}),"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",(function(e){return h_.updateSeekTooltip.call(t,e)})),this.bind(n.progress,"mousemove touchmove",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)})),this.bind(n.progress,"mouseleave touchend click",(function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)})),this.bind(n.progress,"mousedown touchstart",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)})),this.bind(n.progress,"mouseup touchend",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)})),$S.isWebkit&&Array.from(fE.call(t,'input[type="range"]')).forEach((function(n){e.bind(n,"input",(function(e){return h_.updateRangeFill.call(t,e.target)}))})),t.config.toggleInvert&&!FS(n.display.duration)&&this.bind(n.display.currentTime,"click",(function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,h_.timeUpdate.call(t))})),this.bind(n.inputs.volume,r,(function(e){t.volume=e.target.value}),"volume"),this.bind(n.controls,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type})),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",(function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(n.controls,"focusin",(function(){var r=t.config,i=t.timers;cE(n.controls,r.classNames.noTransition,!0),A_.toggleControls.call(t,!0),setTimeout((function(){cE(n.controls,r.classNames.noTransition,!1)}),0);var o=e.touch?3e3:4e3;clearTimeout(i.controls),i.controls=setTimeout((function(){return A_.toggleControls.call(t,!1)}),o)})),this.bind(n.inputs.volume,"wheel",(function(e){var n=e.webkitDirectionInvertedFromDevice,r=Qo([e.deltaX,-e.deltaY].map((function(e){return n?-e:e})),2),i=r[0],o=r[1],a=Math.sign(Math.abs(i)>Math.abs(o)?i:o);t.increaseVolume(a/50);var s=t.media.volume;(1===a&&s<1||-1===a&&s>0)&&e.preventDefault()}),"volume",!1)}}]),e}(),P_=op("splice"),C_=yp("splice",{ACCESSORS:!0,0:0,1:2}),I_=Math.max,j_=Math.min;qd({target:"Array",proto:!0,forced:!P_||!C_},{splice:function(e,t){var n,r,i,o,a,s,c=Vd(this),l=bd(c.length),u=Sd(e,l),f=arguments.length;if(0===f?n=r=0:1===f?(n=0,r=l-u):(n=f-2,r=j_(I_(vd(t),0),l-u)),l+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(i=Qd(c,r),o=0;o<r;o++)(a=u+o)in c&&zd(i,o,c[a]);if(i.length=r,n<r){for(o=u;o<l-r;o++)s=o+n,(a=o+r)in c?c[s]=c[a]:delete c[s];for(o=l;o>l-r+n;o--)delete c[o-1]}else if(n>r)for(o=l-r;o>u;o--)s=o+n-1,(a=o+r-1)in c?c[s]=c[a]:delete c[s];for(o=0;o<n;o++)c[o+u]=arguments[o+2];return c.length=l-r+n,i}});var R_=t((function(e,t){e.exports=function(){var e=function(){},t={},n={},r={};function i(e,t){if(e){var i=r[e];if(n[e]=t,i)for(;i.length;)i[0](e,t),i.splice(0,1)}}function o(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function a(t,n,r,i){var o,s,c=document,l=r.async,u=(r.numRetries||0)+1,f=r.before||e,h=t.replace(/[\?|#].*$/,""),d=t.replace(/^(css|img)!/,"");i=i||0,/(^css!|\.css$)/.test(h)?((s=c.createElement("link")).rel="stylesheet",s.href=d,(o="hideFocus"in s)&&s.relList&&(o=0,s.rel="preload",s.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(h)?(s=c.createElement("img")).src=d:((s=c.createElement("script")).src=t,s.async=void 0===l||l),s.onload=s.onerror=s.onbeforeload=function(e){var c=e.type[0];if(o)try{s.sheet.cssText.length||(c="e")}catch(e){18!=e.code&&(c="e")}if("e"==c){if((i+=1)<u)return a(t,n,r,i)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,c,e.defaultPrevented)},!1!==f(t,s)&&c.head.appendChild(s)}function s(e,n,r){var s,c;if(n&&n.trim&&(s=n),c=(s?r:n)||{},s){if(s in t)throw"LoadJS";t[s]=!0}function l(t,n){!function(e,t,n){var r,i,o=(e=e.push?e:[e]).length,s=o,c=[];for(r=function(e,n,r){if("e"==n&&c.push(e),"b"==n){if(!r)return;c.push(e)}--o||t(c)},i=0;i<s;i++)a(e[i],r,n)}(e,(function(e){o(c,e),t&&o({success:t,error:n},e),i(s,e)}),c)}if(c.returnPromise)return new Promise(l);l()}return s.ready=function(e,t){return function(e,t){e=e.push?e:[e];var i,o,a,s=[],c=e.length,l=c;for(i=function(e,n){n.length&&s.push(e),--l||t(s)};c--;)o=e[c],(a=n[o])?i(o,a):(r[o]=r[o]||[]).push(i)}(e,(function(e){o(t,e)})),s},s.done=function(e){i(e,[])},s.reset=function(){t={},n={},r={}},s.isDefined=function(e){return e in t},s}()}));function L_(e){return new Promise((function(t,n){R_(e,{success:t,error:n})}))}function N_(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,SE.call(this,this.media,e?"play":"pause"))}var M_={setup:function(){var e=this;cE(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,OE.call(e),IS(window.Vimeo)?M_.ready.call(e):L_(e.config.urls.vimeo.sdk).then((function(){M_.ready.call(e)})).catch((function(t){e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready:function(){var e=this,t=this,n=t.config.vimeo,r=p_(QS({},{loop:t.config.loop.active,autoplay:t.autoplay,muted:t.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative},n)),i=t.media.getAttribute("src");VS(i)&&(i=t.media.getAttribute(t.config.attributes.embed.id));var o,a=VS(o=i)?null:jS(Number(o))?o:o.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:o,s=tE("iframe"),c=XE(t.config.urls.vimeo.iframe,a,r);s.setAttribute("src",c),s.setAttribute("allowfullscreen",""),s.setAttribute("allowtransparency",""),s.setAttribute("allow","autoplay"),VS(n.referrerPolicy)||s.setAttribute("referrerPolicy",n.referrerPolicy);var l=tE("div",{poster:t.poster,class:t.config.classNames.embedContainer});l.appendChild(s),t.media=oE(l,t.media),i_(XE(t.config.urls.vimeo.api,a),"json").then((function(e){if(!VS(e)){var n=new URL(e[0].thumbnail_large);n.pathname="".concat(n.pathname.split("_")[0],".jpg"),A_.setPoster.call(t,n.href).catch((function(){}))}})),t.embed=new window.Vimeo.Player(s,{autopause:t.config.autopause,muted:t.muted}),t.media.paused=!0,t.media.currentTime=0,t.supported.ui&&t.embed.disableTextTrack(),t.media.play=function(){return N_.call(t,!0),t.embed.play()},t.media.pause=function(){return N_.call(t,!1),t.embed.pause()},t.media.stop=function(){t.pause(),t.currentTime=0};var u=t.media.currentTime;Object.defineProperty(t.media,"currentTime",{get:function(){return u},set:function(e){var n=t.embed,r=t.media,i=t.paused,o=t.volume,a=i&&!n.hasPlayed;r.seeking=!0,SE.call(t,r,"seeking"),Promise.resolve(a&&n.setVolume(0)).then((function(){return n.setCurrentTime(e)})).then((function(){return a&&n.pause()})).then((function(){return a&&n.setVolume(o)})).catch((function(){}))}});var f=t.config.speed.selected;Object.defineProperty(t.media,"playbackRate",{get:function(){return f},set:function(e){t.embed.setPlaybackRate(e).then((function(){f=e,SE.call(t,t.media,"ratechange")}))}});var h=t.config.volume;Object.defineProperty(t.media,"volume",{get:function(){return h},set:function(e){t.embed.setVolume(e).then((function(){h=e,SE.call(t,t.media,"volumechange")}))}});var d=t.config.muted;Object.defineProperty(t.media,"muted",{get:function(){return d},set:function(e){var n=!!LS(e)&&e;t.embed.setVolume(n?0:t.config.volume).then((function(){d=n,SE.call(t,t.media,"volumechange")}))}});var p,g=t.config.loop;Object.defineProperty(t.media,"loop",{get:function(){return g},set:function(e){var n=LS(e)?e:t.config.loop.active;t.embed.setLoop(n).then((function(){g=n}))}}),t.embed.getVideoUrl().then((function(e){p=e,h_.setDownloadUrl.call(t)})).catch((function(t){e.debug.warn(t)})),Object.defineProperty(t.media,"currentSrc",{get:function(){return p}}),Object.defineProperty(t.media,"ended",{get:function(){return t.currentTime===t.duration}}),Promise.all([t.embed.getVideoWidth(),t.embed.getVideoHeight()]).then((function(n){var r=Qo(n,2),i=r[0],o=r[1];t.embed.ratio=[i,o],OE.call(e)})),t.embed.setAutopause(t.config.autopause).then((function(e){t.config.autopause=e})),t.embed.getVideoTitle().then((function(n){t.config.title=n,A_.setTitle.call(e)})),t.embed.getCurrentTime().then((function(e){u=e,SE.call(t,t.media,"timeupdate")})),t.embed.getDuration().then((function(e){t.media.duration=e,SE.call(t,t.media,"durationchange")})),t.embed.getTextTracks().then((function(e){t.media.textTracks=e,g_.setup.call(t)})),t.embed.on("cuechange",(function(e){var n=e.cues,r=(void 0===n?[]:n).map((function(e){return function(e){var t=document.createDocumentFragment(),n=document.createElement("div");return t.appendChild(n),n.innerHTML=e,t.firstChild.innerText}(e.text)}));g_.updateCues.call(t,r)})),t.embed.on("loaded",(function(){(t.embed.getPaused().then((function(e){N_.call(t,!e),e||SE.call(t,t.media,"playing")})),FS(t.embed.element)&&t.supported.ui)&&t.embed.element.setAttribute("tabindex",-1)})),t.embed.on("bufferstart",(function(){SE.call(t,t.media,"waiting")})),t.embed.on("bufferend",(function(){SE.call(t,t.media,"playing")})),t.embed.on("play",(function(){N_.call(t,!0),SE.call(t,t.media,"playing")})),t.embed.on("pause",(function(){N_.call(t,!1)})),t.embed.on("timeupdate",(function(e){t.media.seeking=!1,u=e.seconds,SE.call(t,t.media,"timeupdate")})),t.embed.on("progress",(function(e){t.media.buffered=e.percent,SE.call(t,t.media,"progress"),1===parseInt(e.percent,10)&&SE.call(t,t.media,"canplaythrough"),t.embed.getDuration().then((function(e){e!==t.media.duration&&(t.media.duration=e,SE.call(t,t.media,"durationchange"))}))})),t.embed.on("seeked",(function(){t.media.seeking=!1,SE.call(t,t.media,"seeked")})),t.embed.on("ended",(function(){t.media.paused=!0,SE.call(t,t.media,"ended")})),t.embed.on("error",(function(e){t.media.error=e,SE.call(t,t.media,"error")})),setTimeout((function(){return A_.build.call(t)}),0)}};function U_(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,SE.call(this,this.media,e?"play":"pause"))}function F_(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var D_={setup:function(){var e=this;if(cE(this.elements.wrapper,this.config.classNames.embed,!0),IS(window.YT)&&NS(window.YT.Player))D_.ready.call(this);else{var t=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){NS(t)&&t(),D_.ready.call(e)},L_(this.config.urls.youtube.sdk).catch((function(t){e.debug.warn("YouTube API failed to load",t)}))}},getTitle:function(e){var t=this;i_(XE(this.config.urls.youtube.api,e)).then((function(e){if(IS(e)){var n=e.title,r=e.height,i=e.width;t.config.title=n,A_.setTitle.call(t),t.embed.ratio=[i,r]}OE.call(t)})).catch((function(){OE.call(t)}))},ready:function(){var e=this,t=e.media&&e.media.getAttribute("id");if(VS(t)||!t.startsWith("youtube-")){var n=e.media.getAttribute("src");VS(n)&&(n=e.media.getAttribute(this.config.attributes.embed.id));var r,i,o=VS(r=n)?null:r.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:r,a=(i=e.provider,"".concat(i,"-").concat(Math.floor(1e4*Math.random()))),s=tE("div",{id:a,poster:e.poster});e.media=oE(s,e.media);var c=function(e){return"https://i.ytimg.com/vi/".concat(o,"/").concat(e,"default.jpg")};x_(c("maxres"),121).catch((function(){return x_(c("sd"),121)})).catch((function(){return x_(c("hq"))})).then((function(t){return A_.setPoster.call(e,t.src)})).then((function(t){t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((function(){}));var l=e.config.youtube;e.embed=new window.YT.Player(a,{videoId:o,host:F_(l),playerVars:QS({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},l),events:{onError:function(t){if(!e.media.error){var n=t.data,r={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[n]||"An unknown error occured";e.media.error={code:n,message:r},SE.call(e,e.media,"error")}},onPlaybackRateChange:function(t){var n=t.target;e.media.playbackRate=n.getPlaybackRate(),SE.call(e,e.media,"ratechange")},onReady:function(t){if(!NS(e.media.play)){var n=t.target;D_.getTitle.call(e,o),e.media.play=function(){U_.call(e,!0),n.playVideo()},e.media.pause=function(){U_.call(e,!1),n.pauseVideo()},e.media.stop=function(){n.stopVideo()},e.media.duration=n.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:function(){return Number(n.getCurrentTime())},set:function(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,SE.call(e,e.media,"seeking"),n.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:function(){return n.getPlaybackRate()},set:function(e){n.setPlaybackRate(e)}});var r=e.config.volume;Object.defineProperty(e.media,"volume",{get:function(){return r},set:function(t){r=t,n.setVolume(100*r),SE.call(e,e.media,"volumechange")}});var i=e.config.muted;Object.defineProperty(e.media,"muted",{get:function(){return i},set:function(t){var r=LS(t)?t:i;i=r,n[r?"mute":"unMute"](),SE.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:function(){return n.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get:function(){return e.currentTime===e.duration}});var a=n.getAvailablePlaybackRates();e.options.speed=a.filter((function(t){return e.config.speed.options.includes(t)})),e.supported.ui&&e.media.setAttribute("tabindex",-1),SE.call(e,e.media,"timeupdate"),SE.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((function(){e.media.buffered=n.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&SE.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),SE.call(e,e.media,"canplaythrough"))}),200),setTimeout((function(){return A_.build.call(e)}),50)}},onStateChange:function(t){var n=t.target;switch(clearInterval(e.timers.playing),e.media.seeking&&[1,2].includes(t.data)&&(e.media.seeking=!1,SE.call(e,e.media,"seeked")),t.data){case-1:SE.call(e,e.media,"timeupdate"),e.media.buffered=n.getVideoLoadedFraction(),SE.call(e,e.media,"progress");break;case 0:U_.call(e,!1),e.media.loop?(n.stopVideo(),n.playVideo()):SE.call(e,e.media,"ended");break;case 1:e.config.autoplay||!e.media.paused||e.embed.hasPlayed?(U_.call(e,!0),SE.call(e,e.media,"playing"),e.timers.playing=setInterval((function(){SE.call(e,e.media,"timeupdate")}),50),e.media.duration!==n.getDuration()&&(e.media.duration=n.getDuration(),SE.call(e,e.media,"durationchange"))):e.media.pause();break;case 2:e.muted||e.embed.unMute(),U_.call(e,!1);break;case 3:SE.call(e,e.media,"waiting")}SE.call(e,e.elements.container,"statechange",!1,{code:t.data})}}})}}},B_={setup:function(){this.media?(cE(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),cE(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&cE(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=tE("div",{class:this.config.classNames.video}),ZS(this.media,this.elements.wrapper),this.isEmbed&&(this.elements.poster=tE("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster))),this.isHTML5?PE.setup.call(this):this.isYouTube?D_.setup.call(this):this.isVimeo&&M_.setup.call(this)):this.debug.warn("No media element found!")}},q_=function(){function e(t){var n=this;$o(this,e),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((function(e,t){n.on("loaded",e),n.on("error",t)})),this.load()}return Yo(e,[{key:"load",value:function(){var e=this;this.enabled&&(IS(window.google)&&IS(window.google.ima)?this.ready():L_(this.player.config.urls.googleIMA.sdk).then((function(){e.ready()})).catch((function(){e.trigger("error",new Error("Google IMA SDK failed to load"))})))}},{key:"ready",value:function(){var e,t=this;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((function(){t.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()}},{key:"setupIMA",value:function(){this.elements.container=tE("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.requestAds()}},{key:"requestAds",value:function(){var e=this,t=this.player.elements.container;try{this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(function(t){return e.onAdsManagerLoaded(t)}),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(t){return e.onAdError(t)}),!1);var n=new google.ima.AdsRequest;n.adTagUrl=this.tagUrl,n.linearAdSlotWidth=t.offsetWidth,n.linearAdSlotHeight=t.offsetHeight,n.nonLinearAdSlotWidth=t.offsetWidth,n.nonLinearAdSlotHeight=t.offsetHeight,n.forceNonLinearFullSlot=!1,n.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(n)}catch(e){this.onAdError(e)}}},{key:"pollCountdown",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");var n=function(){var t=f_(Math.max(e.manager.getRemainingTime(),0)),n="".concat(n_("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)};this.countdownTimer=setInterval(n,100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(e){return t.onAdError(e)})),Object.keys(google.ima.AdEvent.Type).forEach((function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],(function(e){return t.onAdEvent(e)}))})),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;VS(this.cuePoints)||this.cuePoints.forEach((function(t){if(0!==t&&-1!==t&&t<e.player.duration){var n=e.player.elements.progress;if(FS(n)){var r=100/e.player.duration*t,i=tE("span",{class:e.player.config.classNames.cues});i.style.left="".concat(r.toString(),"%"),n.appendChild(i)}}}))}},{key:"onAdEvent",value:function(e){var t=this,n=this.player.elements.container,r=e.getAd(),i=e.getAdData();switch(function(e){SE.call(t.player,t.player.media,"ads".concat(e.replace(/_/g,"").toLowerCase()))}(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),r.isLinear()||(r.width=n.offsetWidth,r.height=n.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.loadAds();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:i.adError&&this.player.debug.warn("Non-fatal ad error: ".concat(i.adError.getMessage()))}}},{key:"onAdError",value:function(e){this.cancel(),this.player.debug.warn("Ads error",e)}},{key:"listeners",value:function(){var e,t=this,n=this.player.elements.container;this.player.on("canplay",(function(){t.addCuePoints()})),this.player.on("ended",(function(){t.loader.contentComplete()})),this.player.on("timeupdate",(function(){e=t.player.currentTime})),this.player.on("seeked",(function(){var n=t.player.currentTime;VS(t.cuePoints)||t.cuePoints.forEach((function(r,i){e<r&&r<n&&(t.manager.discardAdBreak(),t.cuePoints.splice(i,1))}))})),window.addEventListener("resize",(function(){t.manager&&t.manager.resize(n.offsetWidth,n.offsetHeight,google.ima.ViewMode.NORMAL)}))}},{key:"play",value:function(){var e=this,t=this.player.elements.container;this.managerPromise||this.resumeContent(),this.managerPromise.then((function(){e.manager.setVolume(e.player.volume),e.elements.displayContainer.initialize();try{e.initialized||(e.manager.init(t.offsetWidth,t.offsetHeight,google.ima.ViewMode.NORMAL),e.manager.start()),e.initialized=!0}catch(t){e.onAdError(t)}})).catch((function(){}))}},{key:"resumeContent",value:function(){this.elements.container.style.zIndex="",this.playing=!1,this.player.media.play()}},{key:"pauseContent",value:function(){this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}},{key:"cancel",value:function(){this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}},{key:"loadAds",value:function(){var e=this;this.managerPromise.then((function(){e.manager&&e.manager.destroy(),e.managerPromise=new Promise((function(t){e.on("loaded",t),e.player.debug.log(e.manager)})),e.requestAds()})).catch((function(){}))}},{key:"trigger",value:function(e){for(var t=this,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];var o=this.events[e];MS(o)&&o.forEach((function(e){NS(e)&&e.apply(t,r)}))}},{key:"on",value:function(e,t){return MS(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this}},{key:"startSafetyTimer",value:function(e,t){var n=this;this.player.debug.log("Safety timer invoked from: ".concat(t)),this.safetyTimer=setTimeout((function(){n.cancel(),n.clearSafetyTimer("startSafetyTimer()")}),e)}},{key:"clearSafetyTimer",value:function(e){CS(this.safetyTimer)||(this.player.debug.log("Safety timer cleared from: ".concat(e)),clearTimeout(this.safetyTimer),this.safetyTimer=null)}},{key:"enabled",get:function(){var e=this.config;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!VS(e.publisherId)||HS(e.tagUrl))}},{key:"tagUrl",get:function(){var e=this.config;if(HS(e.tagUrl))return e.tagUrl;var t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId};return"".concat("https://go.aniview.com/api/adserver6/vast/","?").concat(p_(t))}}]),e}(),H_=pp.findIndex,V_=!0,z_=yp("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){V_=!1})),qd({target:"Array",proto:!0,forced:V_||!z_},{findIndex:function(e){return H_(this,e,arguments.length>1?arguments[1]:void 0)}}),Rp("findIndex");var W_=Math.min,$_=[].lastIndexOf,K_=!!$_&&1/[1].lastIndexOf(1,-0)<0,Y_=Pg("lastIndexOf"),G_=yp("indexOf",{ACCESSORS:!0,1:0}),X_=K_||!Y_||!G_?function(e){if(K_)return $_.apply(this,arguments)||0;var t=Th(this),n=bd(t.length),r=n-1;for(arguments.length>1&&(r=W_(r,vd(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:$_;qd({target:"Array",proto:!0,forced:X_!==[].lastIndexOf},{lastIndexOf:X_});var J_=function(e,t){var n={};return e>t.width/t.height?(n.width=t.width,n.height=1/e*t.width):(n.height=t.height,n.width=e*t.height),n},Q_=function(){function e(t){$o(this,e),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}return Yo(e,[{key:"load",value:function(){var e=this;this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((function(){e.enabled&&(e.render(),e.determineContainerAutoSizing(),e.loaded=!0)}))}},{key:"getThumbnails",value:function(){var e=this;return new Promise((function(t){var n=e.player.config.previewThumbnails.src;if(VS(n))throw new Error("Missing previewThumbnails.src config attribute");var r=(RS(n)?[n]:n).map((function(t){return e.getThumbnail(t)}));Promise.all(r).then((function(){e.thumbnails.sort((function(e,t){return e.height-t.height})),e.player.debug.log("Preview thumbnails",e.thumbnails),t()}))}))}},{key:"getThumbnail",value:function(e){var t=this;return new Promise((function(n){i_(e).then((function(r){var i,o,a={frames:(i=r,o=[],i.split(/\r\n\r\n|\n\n|\r\r/).forEach((function(e){var t={};e.split(/\r\n|\n|\r/).forEach((function(e){if(jS(t.startTime)){if(!VS(e.trim())&&VS(t.text)){var n=e.trim().split("#xywh="),r=Qo(n,1);if(t.text=r[0],n[1]){var i=Qo(n[1].split(","),4);t.x=i[0],t.y=i[1],t.w=i[2],t.h=i[3]}}}else{var o=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);o&&(t.startTime=60*Number(o[1]||0)*60+60*Number(o[2])+Number(o[3])+Number("0.".concat(o[4])),t.endTime=60*Number(o[6]||0)*60+60*Number(o[7])+Number(o[8])+Number("0.".concat(o[9])))}})),t.text&&o.push(t)})),o),height:null,urlPrefix:""};a.frames[0].text.startsWith("/")||a.frames[0].text.startsWith("http://")||a.frames[0].text.startsWith("https://")||(a.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var s=new Image;s.onload=function(){a.height=s.naturalHeight,a.width=s.naturalWidth,t.thumbnails.push(a),n()},s.src=a.urlPrefix+a.frames[0].text}))}))}},{key:"startMove",value:function(e){if(this.loaded&&DS(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=f_(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){(CS(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):kE.call(this.player,this.player.media,"timeupdate",(function(){e.mouseDown||e.toggleScrubbingContainer(!1)}))}},{key:"listeners",value:function(){var e=this;this.player.on("play",(function(){e.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(function(){e.toggleThumbContainer(!1)})),this.player.on("timeupdate",(function(){e.lastTime=e.player.media.currentTime}))}},{key:"render",value:function(){this.elements.thumb.container=tE("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=tE("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=tE("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=tE("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),FS(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=tE("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"destroy",value:function(){this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex((function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime})),n=t>=0,r=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach((function(n,i){e.loadedImages.includes(n.frames[t].text)&&(r=i)})),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(r)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,r=this.thumbnails[t],i=r.urlPrefix,o=r.frames[n],a=r.frames[n].text,s=i+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,o,t,n,a,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var c=new Image;c.src=s,c.dataset.index=n,c.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log("Loading image: ".concat(s)),c.onload=function(){return e.showImage(c,o,t,n,a,!0)},this.loadingImage=c,this.removeOldImages(c)}}},{key:"showImage",value:function(e,t,n,r,i){var o=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(i,". num: ").concat(r,". qual: ").concat(n,". newimg: ").concat(o)),this.setImageSizeAndOffset(e,t),o&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(i)||this.loadedImages.push(i)),this.preloadNearby(r,!0).then(this.preloadNearby(r,!1)).then(this.getHigherQuality(n,e,t,i))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach((function(n){if("img"===n.tagName.toLowerCase()){var r=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var i=t.currentImageContainer;setTimeout((function(){i.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))}),r)}}}))}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise((function(r){setTimeout((function(){var i=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===i){var o;o=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var a=!1;o.forEach((function(e){var n=e.text;if(n!==i&&!t.loadedImages.includes(n)){a=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var o=t.thumbnails[0].urlPrefix+n,s=new Image;s.src=o,s.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),r()}}})),a||r()}}),300)}))}},{key:"getHigherQuality",value:function(e,t,n,r){var i=this;if(e<this.thumbnails.length-1){var o=t.naturalHeight;this.usingSprites&&(o=n.h),o<this.thumbContainerHeight&&setTimeout((function(){i.showingThumbFilename===r&&(i.player.debug.log("Showing higher quality thumb for: ".concat(r)),i.loadImage(e+1))}),300)}}},{key:"toggleThumbContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(this.sizeSpecifiedInCSS){if(this.elements.thumb.imageContainer.clientHeight>20&&this.elements.thumb.imageContainer.clientWidth<20){var e=Math.floor(this.elements.thumb.imageContainer.clientHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.width="".concat(e,"px")}else if(this.elements.thumb.imageContainer.clientHeight<20&&this.elements.thumb.imageContainer.clientWidth>20){var t=Math.floor(this.elements.thumb.imageContainer.clientWidth/this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(t,"px")}}else{var n=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(n,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,r=t.left-e.left+10,i=t.right-e.left-n.clientWidth-10,o=this.mousePosX-e.left-n.clientWidth/2;o<r&&(o=r),o>i&&(o=i),n.style.left="".concat(o,"px")}},{key:"setScrubbingContainerSize",value:function(){var e=J_(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}),t=e.width,n=e.height;this.elements.scrubbing.container.style.width="".concat(t,"px"),this.elements.scrubbing.container.style.height="".concat(n,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(e.naturalHeight*n,"px"),e.style.width="".concat(e.naturalWidth*n,"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?J_(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}).height:this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),Z_={insertElements:function(e,t){var n=this;RS(t)?nE(e,this.media,{src:t}):MS(t)&&t.forEach((function(t){nE(e,n.media,t)}))},change:function(e){var t=this;JS(e,"sources.length")?(PE.cancelRequests.call(this),this.destroy.call(this,(function(){t.options.quality=[],rE(t.media),t.media=null,FS(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,r=e.type,i=Qo(n,1)[0],o=i.provider,a=void 0===o?b_.html5:o,s=i.src,c="html5"===a?r:"div",l="html5"===a?{}:{src:s};Object.assign(t,{provider:a,type:r,supported:mE.check(r,a,t.config.playsinline),media:tE(c,l)}),t.elements.container.appendChild(t.media),LS(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),VS(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),A_.addStyleHook.call(t),t.isHTML5&&Z_.insertElements.call(t,"source",n),t.config.title=e.title,B_.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&Z_.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&A_.build.call(t),t.isHTML5&&t.media.load(),VS(e.previewThumbnails)||(Object.assign(t.config.previewThumbnails,e.previewThumbnails),t.previewThumbnails&&t.previewThumbnails.loaded&&(t.previewThumbnails.destroy(),t.previewThumbnails=null),t.config.previewThumbnails.enabled&&(t.previewThumbnails=new Q_(t))),t.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};var eT,tT=function(){function e(t,n){var r=this;if($o(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=mE.touch,this.media=t,RS(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||US(this.media)||MS(this.media))&&(this.media=this.media[0]),this.config=QS({},m_,e.defaults,n||{},function(){try{return JSON.parse(r.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new E_(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",mE),!CS(this.media)&&FS(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(mE.check().api){var i=this.media.cloneNode(!0);i.autoplay=!1,this.elements.original=i;var o=this.media.tagName.toLowerCase(),a=null,s=null;switch(o){case"div":if(a=this.media.querySelector("iframe"),FS(a)){if(s=d_(a.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?b_.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?b_.vimeo:null}(s.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className="",s.search.length){var c=["1","true"];c.includes(s.searchParams.get("autoplay"))&&(this.config.autoplay=!0),c.includes(s.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=c.includes(s.searchParams.get("playsinline")),this.config.youtube.hl=s.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(VS(this.provider)||!Object.keys(b_).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=k_;break;case"video":case"audio":this.type=o,this.provider=b_.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=mE.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new O_(this),this.storage=new r_(this),this.media.plyr=this,FS(this.elements.container)||(this.elements.container=tE("div",{tabindex:0}),ZS(this.media,this.elements.container)),A_.addStyleHook.call(this),B_.setup.call(this),this.config.debug&&bE.call(this,this.elements.container,this.config.events.join(" "),(function(e){r.debug.log("event: ".concat(e.type))})),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&A_.build.call(this),this.listeners.container(),this.listeners.global(),this.fullscreen=new __(this),this.config.ads.enabled&&(this.ads=new q_(this)),this.isHTML5&&this.config.autoplay&&setTimeout((function(){return r.play()}),10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Q_(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return Yo(e,[{key:"play",value:function(){var e=this;return NS(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((function(){return e.ads.play()})).catch((function(){return e.media.play()})),this.media.play()):null}},{key:"pause",value:function(){return this.playing&&NS(this.media.pause)?this.media.pause():null}},{key:"togglePlay",value:function(e){return(LS(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):NS(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime-=jS(e)?e:this.config.seekTime}},{key:"forward",value:function(e){this.currentTime+=jS(e)?e:this.config.seekTime}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(jS(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){g_.toggle.call(this,e,!1)}},{key:"airplay",value:function(){mE.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=lE(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,r=cE(this.elements.container,this.config.classNames.hideControls,n);if(r&&this.config.controls.includes("settings")&&!VS(this.config.settings)&&h_.toggleMenu.call(this,!1),r!==t){var i=r?"controlshidden":"controlsshown";SE.call(this,this.media,i)}return!r}return!1}},{key:"on",value:function(e,t){bE.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){kE.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){wE(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var r=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(rE(t.elements.buttons.play),rE(t.elements.captions),rE(t.elements.controls),rE(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),NS(e)&&e()):(EE.call(t),oE(t.elements.original,t.elements.container),SE.call(t,t.elements.original,"destroyed",!0),NS(e)&&e.call(t.elements.original),t.ready=!1,setTimeout((function(){t.elements=null,t.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(A_.toggleNativeControls.call(this,!0),r()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&NS(this.embed.destroy)&&this.embed.destroy(),r()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(r),setTimeout(r,200))}}},{key:"supports",value:function(e){return mE.mime.call(this,e)}},{key:"isHTML5",get:function(){return this.provider===b_.html5}},{key:"isEmbed",get:function(){return this.isYouTube||this.isVimeo}},{key:"isYouTube",get:function(){return this.provider===b_.youtube}},{key:"isVimeo",get:function(){return this.provider===b_.vimeo}},{key:"isVideo",get:function(){return this.type===k_}},{key:"isAudio",get:function(){return this.type===w_}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=jS(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return jS(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=jS(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;RS(t)&&(t=Number(t)),jS(t)||(t=this.storage.get("volume")),jS(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!VS(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;LS(t)||(t=this.storage.get("muted")),LS(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=this,n=null;jS(e)&&(n=e),jS(n)||(n=this.storage.get("speed")),jS(n)||(n=this.config.speed.selected);var r=this.minimumSpeed,i=this.maximumSpeed;n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:255;return Math.min(Math.max(e,t),n)}(n,r,i),this.config.speed.selected=n,setTimeout((function(){t.media.playbackRate=n}),0)},get:function(){return Number(this.media.playbackRate)}},{key:"minimumSpeed",get:function(){return this.isYouTube?Math.min.apply(Math,Zo(this.options.speed)):this.isVimeo?.5:.0625}},{key:"maximumSpeed",get:function(){return this.isYouTube?Math.max.apply(Math,Zo(this.options.speed)):this.isVimeo?2:16}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var r=[!VS(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(jS),i=!0;if(!n.includes(r)){var o=function(e,t){return MS(e)&&e.length?e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})):null}(n,r);this.debug.warn("Unsupported quality option: ".concat(r,", using ").concat(o," instead")),r=o,i=!1}t.selected=r,this.media.quality=r,i&&this.storage.set({quality:r})}},get:function(){return this.media.quality}},{key:"loop",set:function(e){var t=LS(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t},get:function(){return Boolean(this.media.loop)}},{key:"source",set:function(e){Z_.change.call(this,e)},get:function(){return this.media.currentSrc}},{key:"download",get:function(){var e=this.config.urls.download;return HS(e)?e:this.source},set:function(e){HS(e)&&(this.config.urls.download=e,h_.setDownloadUrl.call(this))}},{key:"poster",set:function(e){this.isVideo?A_.setPoster.call(this,e,!1).catch((function(){})):this.debug.warn("Poster can only be set for video")},get:function(){return this.isVideo?this.media.getAttribute("poster"):null}},{key:"ratio",get:function(){if(!this.isVideo)return null;var e=xE(AE.call(this));return MS(e)?e.join(":"):e},set:function(e){this.isVideo?RS(e)&&TE(e)?(this.config.ratio=e,OE.call(this)):this.debug.error("Invalid aspect ratio specified (".concat(e,")")):this.debug.warn("Aspect ratio can only be set for video")}},{key:"autoplay",set:function(e){var t=LS(e)?e:this.config.autoplay;this.config.autoplay=t},get:function(){return Boolean(this.config.autoplay)}},{key:"currentTrack",set:function(e){g_.set.call(this,e,!1)},get:function(){var e=this.captions,t=e.toggled,n=e.currentTrack;return t?n:-1}},{key:"language",set:function(e){g_.setLanguage.call(this,e,!1)},get:function(){return(g_.getCurrentTrack.call(this)||{}).language}},{key:"pip",set:function(e){if(mE.pip){var t=LS(e)?e:!this.pip;NS(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?v_:y_),NS(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}},get:function(){return mE.pip?VS(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===v_:null}}],[{key:"supported",value:function(e,t,n){return mE.check(e,t,n)}},{key:"loadSprite",value:function(e,t){return o_(e,t)}},{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null;return RS(t)?r=Array.from(document.querySelectorAll(t)):US(t)?r=Array.from(t):MS(t)&&(r=t.filter(FS)),VS(r)?null:r.map((function(t){return new e(t,n)}))}}]),e}();tT.defaults=(eT=m_,JSON.parse(JSON.stringify(eT)));var nT,rT,iT={video:{type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4",type:"video/mp4",size:576},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4",type:"video/mp4",size:720},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4",type:"video/mp4",size:1080},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4",type:"video/mp4",size:1440}],poster:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0},{kind:"captions",label:"French",srclang:"fr",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt"}]},audio:{type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]},youtube:{type:"video",sources:[{src:"https://youtube.com/watch?v=bTqVqk7FSmY",provider:"youtube"}]},vimeo:{type:"video",sources:[{src:"https://vimeo.com/40648169",provider:"vimeo"}]}},oT=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e&&e.classList[n?"add":"remove"](t)};nT=window.location.host,rT={prod:"plyr.io"===nT,dev:"dev.plyr.io"===nT},document.addEventListener("DOMContentLoaded",(function(){hf.context((function(){fh.setup(".js-shr",{count:{className:"button__count"},wrapper:{className:"button--with-count"}});var e=new tT("#player",{debug:!0,title:"View From A Blue Moon",iconUrl:"dist/demo.svg",keyboard:{global:!0},tooltips:{controls:!0},captions:{active:!0},ads:{enabled:rT.prod||rT.dev,publisherId:"918848828995742"},previewThumbnails:{enabled:!0,src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]},vimeo:{referrerPolicy:"no-referrer"}});window.player=e;var t=document.querySelectorAll("[data-source]"),n=Object.keys(iT),r=Boolean(window.history&&window.history.pushState),i=window.location.hash.substring(1),o=!i.length;function a(e){Array.from(t).forEach((function(e){return oT(e.parentElement,"active",!1)})),oT(document.querySelector('[data-source="'.concat(e,'"]')),"active",!0),Array.from(document.querySelectorAll(".plyr__cite")).forEach((function(e){e.hidden=!0})),document.querySelector(".plyr__cite--".concat(e)).hidden=!1}function s(t,r){!n.includes(t)||!r&&t===i||!i.length&&"video"===t||(e.source=iT[t],i=t,a(t))}Array.from(t).forEach((function(e){e.addEventListener("click",(function(){var t=e.getAttribute("data-source");s(t),r&&window.history.pushState({type:t},"","#".concat(t))}))})),window.addEventListener("popstate",(function(e){e.state&&Object.keys(e.state).includes("type")&&s(e.state.type)})),o&&(i="video"),r&&n.includes(i)&&window.history.replaceState({type:i},"",o?"":"#".concat(i)),"video"!==i&&s(i,!0),a(i)}))})),rT.prod&&hf.config("https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555").install()}(); +!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},UT=function(e){return function(t,n,r,i){Qv(n);var o=jv(t),a=fg(o),s=sv(o.length),c=e?s-1:0,u=e?-1:1;if(r<2)for(;;){if(c in a){i=a[c],c+=u;break}if(c+=u,e?c<0:s<=c)throw TypeError("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=u)c in a&&(i=n(i,a[c],c,o));return i}},DT={left:UT(!1),right:UT(!0)}.left,FT=my("reduce"),BT=am("reduce",{1:0});function qT(e,t){return t.split(".").reduce((function(e,t){return e&&e[t]}),e)}function HT(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;var i=n.shift();return wT(i)?(Object.keys(i).forEach((function(t){wT(i[t])?(Object.keys(e).includes(t)||Object.assign(e,Za({},t,{})),HT(e[t],i[t])):Object.assign(e,Za({},t,i[t]))})),HT.apply(void 0,[e].concat(n))):e}function VT(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var r=n>0?t.cloneNode(!0):t,i=e.parentNode,o=e.nextSibling;r.appendChild(e),o?i.insertBefore(r,o):i.appendChild(r)}))}function WT(e,t){AT(e)&&!RT(t)&&Object.entries(t).filter((function(e){var t=rs(e,2)[1];return!bT(t)})).forEach((function(t){var n=rs(t,2),r=n[0],i=n[1];return e.setAttribute(r,i)}))}function zT(e,t,n){var r=document.createElement(e);return wT(t)&&WT(r,t),ET(n)&&(r.innerText=n),r}function YT(e,t,n,r){AT(t)&&t.appendChild(zT(e,n,r))}function $T(e){xT(e)||TT(e)?Array.from(e).forEach($T):AT(e)&&AT(e.parentNode)&&e.parentNode.removeChild(e)}function GT(e){if(AT(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function KT(e,t){return AT(t)&&AT(t.parentNode)&&AT(e)?(t.parentNode.replaceChild(e,t),e):null}function XT(e,t){if(!ET(e)||RT(e))return{};var n={},r=HT({},t);return e.split(",").forEach((function(e){var t=e.trim(),i=t.replace(".",""),o=t.replace(/[[\]]/g,"").split("="),a=rs(o,1)[0],s=o.length>1?o[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":ET(r.class)?n.class="".concat(r.class," ").concat(i):n.class=i;break;case"#":n.id=t.replace("#","");break;case"[":n[a]=s}})),HT(r,n)}function JT(e,t){if(AT(e)){var n=t;kT(n)||(n=!e.hidden),e.hidden=n}}function QT(e,t,n){if(xT(e))return Array.from(e).map((function(e){return QT(e,t,n)}));if(AT(e)){var r="toggle";return void 0!==n&&(r=n?"add":"remove"),e.classList[r](t),e.classList.contains(t)}return!1}function ZT(e,t){return AT(e)&&e.classList.contains(t)}function ex(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function tx(e){return this.elements.container.querySelectorAll(e)}function nx(e){return this.elements.container.querySelector(e)}function rx(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];AT(e)&&(e.focus({preventScroll:!0}),t&&QT(e,this.config.classNames.tabFocus))}Pv({target:"Array",proto:!0,forced:!FT||!BT},{reduce:function(e){return DT(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var ix,ox={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},ax={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var r=MT.isIPhone&&n&&ax.playsinline,i=ax[e]||"html5"!==t;return{api:i,ui:i&&ax.rangeInput&&("video"!==e||!MT.isIPhone||r)}},pip:!(MT.isIPhone||!ST(zT("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||zT("video").disablePictureInPicture)),airplay:ST(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(RT(e))return!1;var t=rs(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(ox).includes(n)&&(n+='; codecs="'.concat(ox[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(ix=document.createElement("input"),ix.type="range","range"===ix.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==LT,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},sx=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function cx(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!RT(t)&&ST(n)){var s=t.split(" "),c=a;sx&&(c={passive:o,capture:a}),s.forEach((function(t){r&&r.eventListeners&&i&&r.eventListeners.push({element:e,type:t,callback:n,options:c}),e[i?"addEventListener":"removeEventListener"](t,n,c)}))}}function ux(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];cx.call(this,e,t,n,!0,r,i)}function lx(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];cx.call(this,e,t,n,!1,r,i)}function fx(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=function a(){lx(e,n,a,i,o);for(var s=arguments.length,c=new Array(s),u=0;u<s;u++)c[u]=arguments[u];r.apply(t,c)};cx.call(this,e,n,a,!0,i,o)}function hx(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(AT(e)&&!RT(t)){var i=new CustomEvent(t,{bubbles:n,detail:ts({},r,{plyr:this})});e.dispatchEvent(i)}}function px(){this&&this.eventListeners&&(this.eventListeners.forEach((function(e){var t=e.element,n=e.type,r=e.callback,i=e.options;t.removeEventListener(n,r,i)})),this.eventListeners=[])}function dx(){var e=this;return new Promise((function(t){return e.ready?setTimeout(t,0):ux.call(e,e.elements.container,"ready",t)})).then((function(){}))}function gx(e){jT(e)&&e.then(null,(function(){}))}function vx(e){return!!(TT(e)||ET(e)&&e.includes(":"))&&(TT(e)?e:e.split(":")).map(Number).every(_T)}function mx(e){if(!TT(e)||!e.every(_T))return null;var t=rs(e,2),n=t[0],r=t[1],i=function e(t,n){return 0===n?t:e(n,t%n)}(n,r);return[n/i,r/i]}function yx(e){var t=function(e){return vx(e)?e.split(":").map(Number):null},n=t(e);if(null===n&&(n=t(this.config.ratio)),null===n&&!RT(this.embed)&&TT(this.embed.ratio)&&(n=this.embed.ratio),null===n&&this.isHTML5){var r=this.media;n=mx([r.videoWidth,r.videoHeight])}return n}function bx(e){if(!this.isVideo)return{};var t=this.elements.wrapper,n=yx.call(this,e),r=rs(TT(n)?n:[0,0],2),i=100/r[0]*r[1];if(t.style.paddingBottom="".concat(i,"%"),this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){var o=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),a=(o-i)/(o/50);this.media.style.transform="translateY(-".concat(a,"%)")}else this.isHTML5&&t.classList.toggle(this.config.classNames.videoFixedRatio,null!==n);return{padding:i,ratio:n}}var wx={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter((function(t){var n=t.getAttribute("type");return!!RT(n)||ax.mime.call(e,n)})):[]},getQualityOptions:function(){return this.config.quality.forced?this.config.quality.options:wx.getSources.call(this).map((function(e){return Number(e.getAttribute("size"))})).filter(Boolean)},setup:function(){if(this.isHTML5){var e=this;e.options.speed=e.config.speed.options,RT(this.config.ratio)||bx.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=wx.getSources.call(e).find((function(t){return t.getAttribute("src")===e.source}));return t&&Number(t.getAttribute("size"))},set:function(t){if(e.quality!==t){if(e.config.quality.forced&&ST(e.config.quality.onChange))e.config.quality.onChange(t);else{var n=wx.getSources.call(e).find((function(e){return Number(e.getAttribute("size"))===t}));if(!n)return;var r=e.media,i=r.currentTime,o=r.paused,a=r.preload,s=r.readyState,c=r.playbackRate;e.media.src=n.getAttribute("src"),("none"!==a||s)&&(e.once("loadedmetadata",(function(){e.speed=c,e.currentTime=i,o||gx(e.play())})),e.media.load())}hx.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&($T(wx.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function _x(e){return TT(e)?e.filter((function(t,n){return e.indexOf(t)===n})):e}var Ex=$v("slice"),kx=am("slice",{ACCESSORS:!0,0:0,1:2}),Sx=Dv("species"),Tx=[].slice,xx=Math.max;Pv({target:"Array",proto:!0,forced:!Ex||!kx},{slice:function(e,t){var n,r,i,o=pg(this),a=sv(o.length),s=lv(e,a),c=lv(void 0===t?a:t,a);if(Iv(o)&&("function"!=typeof(n=o.constructor)||n!==Array&&!Iv(n.prototype)?dg(n)&&null===(n=n[Sx])&&(n=void 0):n=void 0,n===Array||void 0===n))return Tx.call(o,s,c);for(r=new(void 0===n?Array:n)(xx(c-s,0)),i=0;s<c;s++,i++)s in o&&Cv(r,i,o[s]);return r.length=i,r}});var Ax=xg.f,Ox=mv.f,Px=Qg.set,Ix=Dv("match"),jx=tg.RegExp,Cx=jx.prototype,Rx=/a/g,Lx=/a/g,Nx=new jx(Rx)!==Rx,Mx=Yy.UNSUPPORTED_Y;if(rg&&Av("RegExp",!Nx||Mx||ng((function(){return Lx[Ix]=!1,jx(Rx)!=Rx||jx(Lx)==Lx||"/a/i"!=jx(Rx,"i")})))){for(var Ux=function(e,t){var n,r=this instanceof Ux,i=ob(e),o=void 0===t;if(!r&&i&&e.constructor===Ux&&o)return e;Nx?i&&!o&&(e=e.source):e instanceof Ux&&(o&&(t=Wy.call(e)),e=e.source),Mx&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var a=Sy(Nx?new jx(e,t):jx(e,t),r?this:Cx,Ux);return Mx&&n&&Px(a,{sticky:n}),a},Dx=function(e){e in Ux||Ax(Ux,e,{configurable:!0,get:function(){return jx[e]},set:function(t){jx[e]=t}})},Fx=Ox(jx),Bx=0;Fx.length>Bx;)Dx(Fx[Bx++]);Cx.constructor=Ux,Ux.prototype=Cx,Zg(tg,"RegExp",Ux)}function qx(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return RT(e)?e:e.toString().replace(/{(\d+)}/g,(function(e,t){return n[t].toString()}))}Wk("RegExp");var Hx=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),n.toString())},Vx=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.toString().replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))};function Wx(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return t=Hx(t,"-"," "),t=Hx(t,"_"," "),t=Vx(t),Hx(t," ","")}function zx(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var Yx={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},$x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(RT(e)||RT(t))return"";var n=qT(t.i18n,e);if(RT(n))return Object.keys(Yx).includes(e)?Yx[e]:"";var r={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(r).forEach((function(e){var t=rs(e,2),r=t[0],i=t[1];n=Hx(n,r,i)})),n},Gx=function(){function e(t){Xa(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return Qa(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(RT(n))return null;var r=JSON.parse(n);return ET(t)&&t.length?r[t]:r}},{key:"set",value:function(t){if(e.supported&&this.enabled&&wT(t)){var n=this.get();RT(n)&&(n={}),HT(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Kx(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise((function(n,r){try{var i=new XMLHttpRequest;if(!("withCredentials"in i))return;i.addEventListener("load",(function(){if("text"===t)try{n(JSON.parse(i.responseText))}catch(e){n(i.responseText)}else n(i.response)})),i.addEventListener("error",(function(){throw new Error(i.status)})),i.open("GET",e,!0),i.responseType=t,i.send()}catch(e){r(e)}}))}function Xx(e,t){if(ET(e)){var n=ET(t),r=function(){return null!==document.getElementById(t)},i=function(e,t){e.innerHTML=t,n&&r()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!r()){var o=Gx.supported,a=document.createElement("div");if(a.setAttribute("hidden",""),n&&a.setAttribute("id",t),o){var s=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==s){var c=JSON.parse(s);i(a,c.content)}}Kx(e).then((function(e){RT(e)||(o&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),i(a,e))})).catch((function(){}))}}}var Jx=Math.ceil,Qx=Math.floor;Pv({target:"Math",stat:!0},{trunc:function(e){return(e>0?Qx:Jx)(e)}});var Zx=function(e){return Math.trunc(e/60/60%60,10)},eA=function(e){return Math.trunc(e/60%60,10)},tA=function(e){return Math.trunc(e%60,10)};function nA(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!_T(e))return nA(void 0,t,n);var r=function(e){return"0".concat(e).slice(-2)},i=Zx(e),o=eA(e),a=tA(e);return i=t||i>0?"".concat(i,":"):"","".concat(n&&e>0?"-":"").concat(i).concat(r(o),":").concat(r(a))}var rA={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||MT.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=nx.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:tx.call(this,this.config.selectors.buttons.play),pause:nx.call(this,this.config.selectors.buttons.pause),restart:nx.call(this,this.config.selectors.buttons.restart),rewind:nx.call(this,this.config.selectors.buttons.rewind),fastForward:nx.call(this,this.config.selectors.buttons.fastForward),mute:nx.call(this,this.config.selectors.buttons.mute),pip:nx.call(this,this.config.selectors.buttons.pip),airplay:nx.call(this,this.config.selectors.buttons.airplay),settings:nx.call(this,this.config.selectors.buttons.settings),captions:nx.call(this,this.config.selectors.buttons.captions),fullscreen:nx.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=nx.call(this,this.config.selectors.progress),this.elements.inputs={seek:nx.call(this,this.config.selectors.inputs.seek),volume:nx.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:nx.call(this,this.config.selectors.display.buffer),currentTime:nx.call(this,this.config.selectors.display.currentTime),duration:nx.call(this,this.config.selectors.display.duration)},AT(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=rA.getIconUrl.call(this),r="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),i=document.createElementNS("http://www.w3.org/2000/svg","svg");WT(i,HT(t,{"aria-hidden":"true",focusable:"false"}));var o=document.createElementNS("http://www.w3.org/2000/svg","use"),a="".concat(r,"-").concat(e);return"href"in o&&o.setAttributeNS("http://www.w3.org/1999/xlink","href",a),o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),i.appendChild(o),i},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=$x(e,this.config),r=ts({},t,{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")});return zT("span",r,n)},createBadge:function(e){if(RT(e))return null;var t=zT("span",{class:this.config.classNames.menu.value});return t.appendChild(zT("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=this,r=HT({},t),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return(t=Wx(t)).charAt(0).toLowerCase()+t.slice(1)}(e),o={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((function(e){Object.keys(r).includes(e)&&(o[e]=r[e],delete r[e])})),"button"!==o.element||Object.keys(r).includes("type")||(r.type="button"),Object.keys(r).includes("class")?r.class.split(" ").some((function(e){return e===n.config.classNames.control}))||HT(r,{class:"".concat(r.class," ").concat(this.config.classNames.control)}):r.class=this.config.classNames.control,e){case"play":o.toggle=!0,o.label="play",o.labelPressed="pause",o.icon="play",o.iconPressed="pause";break;case"mute":o.toggle=!0,o.label="mute",o.labelPressed="unmute",o.icon="volume",o.iconPressed="muted";break;case"captions":o.toggle=!0,o.label="enableCaptions",o.labelPressed="disableCaptions",o.icon="captions-off",o.iconPressed="captions-on";break;case"fullscreen":o.toggle=!0,o.label="enterFullscreen",o.labelPressed="exitFullscreen",o.icon="enter-fullscreen",o.iconPressed="exit-fullscreen";break;case"play-large":r.class+=" ".concat(this.config.classNames.control,"--overlaid"),i="play",o.label="play",o.icon="play";break;default:RT(o.label)&&(o.label=i),RT(o.icon)&&(o.icon=e)}var a=zT(o.element);return o.toggle?(a.appendChild(rA.createIcon.call(this,o.iconPressed,{class:"icon--pressed"})),a.appendChild(rA.createIcon.call(this,o.icon,{class:"icon--not-pressed"})),a.appendChild(rA.createLabel.call(this,o.labelPressed,{class:"label--pressed"})),a.appendChild(rA.createLabel.call(this,o.label,{class:"label--not-pressed"}))):(a.appendChild(rA.createIcon.call(this,o.icon)),a.appendChild(rA.createLabel.call(this,o.label))),HT(r,XT(this.config.selectors.buttons[i],r)),WT(a,r),"play"===i?(TT(this.elements.buttons[i])||(this.elements.buttons[i]=[]),this.elements.buttons[i].push(a)):this.elements.buttons[i]=a,a},createRange:function(e,t){var n=zT("input",HT(XT(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":$x(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,rA.updateRangeFill.call(this,n),qk.setup(n),n},createProgress:function(e,t){var n=zT("progress",HT(XT(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(zT("span",null,"0"));var r={played:"played",buffer:"buffered"}[e],i=r?$x(r,this.config):"";n.innerText="% ".concat(i.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e,t){var n=XT(this.config.selectors.display[e],t),r=zT("div",HT(n,{class:"".concat(n.class?n.class:""," ").concat(this.config.classNames.display.time," ").trim(),"aria-label":$x(e,this.config)}),"00:00");return this.elements.display[e]=r,r},bindMenuItemShortcuts:function(e,t){var n=this;ux.call(this,e,"keydown keyup",(function(r){if([32,38,39,40].includes(r.which)&&(r.preventDefault(),r.stopPropagation(),"keydown"!==r.type)){var i,o=ex(e,'[role="menuitemradio"]');if(!o&&[32,39].includes(r.which))rA.showMenuPanel.call(n,t,!0);else 32!==r.which&&(40===r.which||o&&39===r.which?(i=e.nextElementSibling,AT(i)||(i=e.parentNode.firstElementChild)):(i=e.previousElementSibling,AT(i)||(i=e.parentNode.lastElementChild)),rx.call(n,i,!0))}}),!1),ux.call(this,e,"keyup",(function(e){13===e.which&&rA.focusFirstMenuItem.call(n,null,!0)}))},createMenuItem:function(e){var t=this,n=e.value,r=e.list,i=e.type,o=e.title,a=e.badge,s=void 0===a?null:a,c=e.checked,u=void 0!==c&&c,l=XT(this.config.selectors.inputs[i]),f=zT("button",HT(l,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(l.class?l.class:"").trim(),"aria-checked":u,value:n})),h=zT("span");h.innerHTML=o,AT(s)&&h.appendChild(s),f.appendChild(h),Object.defineProperty(f,"checked",{enumerable:!0,get:function(){return"true"===f.getAttribute("aria-checked")},set:function(e){e&&Array.from(f.parentNode.children).filter((function(e){return ex(e,'[role="menuitemradio"]')})).forEach((function(e){return e.setAttribute("aria-checked","false")})),f.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(f,"click keyup",(function(e){if(!PT(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),f.checked=!0,i){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}rA.showMenuPanel.call(t,"home",PT(e))}}),i,!1),rA.bindMenuItemShortcuts.call(this,f,i),r.appendChild(f)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!_T(e))return e;var n=Zx(this.duration)>0;return nA(e,n,t)},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];AT(e)&&_T(t)&&(e.innerText=rA.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(AT(this.elements.inputs.volume)&&rA.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),AT(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;AT(e)&&(e.value=t,rA.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&OT(e)){var n=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=function(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}(this.currentTime,this.duration),"timeupdate"===e.type&&rA.setRange.call(this,this.elements.inputs.seek,n);break;case"playing":case"progress":!function(e,n){var r=_T(n)?n:0,i=AT(e)?e:t.elements.display.buffer;if(AT(i)){i.value=r;var o=i.getElementsByTagName("span")[0];AT(o)&&(o.childNodes[0].nodeValue=r)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=OT(e)?e.target:e;if(AT(t)&&"range"===t.getAttribute("type")){if(ex(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=rA.formatTime(this.currentTime),r=rA.formatTime(this.duration),i=$x("seekLabel",this.config);t.setAttribute("aria-valuetext",i.replace("{currentTime}",n).replace("{duration}",r))}else if(ex(t,this.config.selectors.inputs.volume)){var o=100*t.value;t.setAttribute("aria-valuenow",o),t.setAttribute("aria-valuetext","".concat(o.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);MT.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&AT(this.elements.inputs.seek)&&AT(this.elements.display.seekTooltip)&&0!==this.duration){var n="".concat(this.config.classNames.tooltip,"--visible"),r=function(e){return QT(t.elements.display.seekTooltip,n,e)};if(this.touch)r(!1);else{var i=0,o=this.elements.progress.getBoundingClientRect();if(OT(e))i=100/o.width*(e.pageX-o.left);else{if(!ZT(this.elements.display.seekTooltip,n))return;i=parseFloat(this.elements.display.seekTooltip.style.left,10)}i<0?i=0:i>100&&(i=100),rA.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*i),this.elements.display.seekTooltip.style.left="".concat(i,"%"),OT(e)&&["mouseenter","mouseleave"].includes(e.type)&&r("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!AT(this.elements.display.duration)&&this.config.invertTime;rA.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||rA.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return JT(this.elements.display.currentTime,!0),void JT(this.elements.progress,!0);AT(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=AT(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&rA.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&rA.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),rA.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){JT(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var r=this.elements.settings.panels[e],i=null,o=t;if("captions"===e)i=this.currentTrack;else{if(i=RT(n)?this[e]:n,RT(i)&&(i=this.config[e].default),!RT(this.options[e])&&!this.options[e].includes(i))return void this.debug.warn("Unsupported value of '".concat(i,"' for ").concat(e));if(!this.config[e].options.includes(i))return void this.debug.warn("Disabled value of '".concat(i,"' for ").concat(e))}if(AT(o)||(o=r&&r.querySelector('[role="menu"]')),AT(o)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=rA.getLabel.call(this,e,i);var a=o&&o.querySelector('[value="'.concat(i,'"]'));AT(a)&&(a.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?$x("normal",this.config):"".concat(t,"×");case"quality":if(_T(t)){var n=$x("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return Vx(t);case"captions":return aA.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(AT(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');TT(e)&&(this.options.quality=_x(e).filter((function(e){return t.config.quality.options.includes(e)})));var r=!RT(this.options.quality)&&this.options.quality.length>1;if(rA.toggleMenuButton.call(this,"quality",r),GT(n),rA.checkMenu.call(this),r){var i=function(e){var n=$x("qualityBadge.".concat(e),t.config);return n.length?rA.createBadge.call(t,n):null};this.options.quality.sort((function(e,n){var r=t.config.quality.options;return r.indexOf(e)>r.indexOf(n)?1:-1})).forEach((function(e){rA.createMenuItem.call(t,{value:e,list:n,type:"quality",title:rA.getLabel.call(t,"quality",e),badge:i(e)})})),rA.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(AT(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=aA.getTracks.call(this),r=Boolean(n.length);if(rA.toggleMenuButton.call(this,"captions",r),GT(t),rA.checkMenu.call(this),r){var i=n.map((function(n,r){return{value:r,checked:e.captions.toggled&&e.currentTrack===r,title:aA.getLabel.call(e,n),badge:n.language&&rA.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}}));i.unshift({value:-1,checked:!this.captions.toggled,title:$x("disabled",this.config),list:t,type:"language"}),i.forEach(rA.createMenuItem.bind(this)),rA.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(){var e=this;if(AT(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((function(t){return t>=e.minimumSpeed&&t<=e.maximumSpeed}));var n=!RT(this.options.speed)&&this.options.speed.length>1;rA.toggleMenuButton.call(this,"speed",n),GT(t),rA.checkMenu.call(this),n&&(this.options.speed.forEach((function(n){rA.createMenuItem.call(e,{value:n,list:t,type:"speed",title:rA.getLabel.call(e,"speed",n)})})),rA.updateSetting.call(this,"speed",t))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!RT(e)&&Object.values(e).some((function(e){return!e.hidden}));JT(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;AT(n)||(n=Object.values(this.elements.settings.panels).find((function(e){return!e.hidden})));var r=n.querySelector('[role^="menuitem"]');rx.call(this,r,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(AT(t)&&AT(n)){var r=t.hidden,i=r;if(kT(e))i=e;else if(PT(e)&&27===e.which)i=!1;else if(OT(e)){var o=ST(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(o);if(a||!a&&e.target!==n&&i)return}n.setAttribute("aria-expanded",i),JT(t,!i),QT(this.elements.container,this.config.classNames.menu.open,i),i&&PT(e)?rA.focusFirstMenuItem.call(this,null,!0):i||r||rx.call(this,n,PT(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,r=t.scrollHeight;return $T(t),{width:n,height:r}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.elements.container.querySelector("#plyr-settings-".concat(this.id,"-").concat(t));if(AT(r)){var i=r.parentNode,o=Array.from(i.children).find((function(e){return!e.hidden}));if(ax.transitions&&!ax.reducedMotion){i.style.width="".concat(o.scrollWidth,"px"),i.style.height="".concat(o.scrollHeight,"px");var a=rA.getMenuSize.call(this,r),s=function t(n){n.target===i&&["width","height"].includes(n.propertyName)&&(i.style.width="",i.style.height="",lx.call(e,i,LT,t))};ux.call(this,i,LT,s),i.style.width="".concat(a.width,"px"),i.style.height="".concat(a.height,"px")}JT(o,!0),JT(r,!1),rA.focusFirstMenuItem.call(this,r,n)}},setDownloadUrl:function(){var e=this.elements.buttons.download;AT(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=rA.bindMenuItemShortcuts,r=rA.createButton,i=rA.createProgress,o=rA.createRange,a=rA.createTime,s=rA.setQualityMenu,c=rA.setSpeedMenu,u=rA.showMenuPanel;this.elements.controls=null,this.config.controls.includes("play-large")&&this.elements.container.appendChild(r.call(this,"play-large"));var l=zT("div",XT(this.config.selectors.controls.wrapper));this.elements.controls=l;var f={class:"plyr__controls__item"};return _x(this.config.controls).forEach((function(s){if("restart"===s&&l.appendChild(r.call(t,"restart",f)),"rewind"===s&&l.appendChild(r.call(t,"rewind",f)),"play"===s&&l.appendChild(r.call(t,"play",f)),"fast-forward"===s&&l.appendChild(r.call(t,"fast-forward",f)),"progress"===s){var c=zT("div",{class:"".concat(f.class," plyr__progress__container")}),h=zT("div",XT(t.config.selectors.progress));if(h.appendChild(o.call(t,"seek",{id:"plyr-seek-".concat(e.id)})),h.appendChild(i.call(t,"buffer")),t.config.tooltips.seek){var p=zT("span",{class:t.config.classNames.tooltip},"00:00");h.appendChild(p),t.elements.display.seekTooltip=p}t.elements.progress=h,c.appendChild(t.elements.progress),l.appendChild(c)}if("current-time"===s&&l.appendChild(a.call(t,"currentTime",f)),"duration"===s&&l.appendChild(a.call(t,"duration",f)),"mute"===s||"volume"===s){var d=t.elements.volume;if(AT(d)&&l.contains(d)||(d=zT("div",HT({},f,{class:"".concat(f.class," plyr__volume").trim()})),t.elements.volume=d,l.appendChild(d)),"mute"===s&&d.appendChild(r.call(t,"mute")),"volume"===s&&!MT.isIos){var g={max:1,step:.05,value:t.config.volume};d.appendChild(o.call(t,"volume",HT(g,{id:"plyr-volume-".concat(e.id)})))}}if("captions"===s&&l.appendChild(r.call(t,"captions",f)),"settings"===s&&!RT(t.config.settings)){var v=zT("div",HT({},f,{class:"".concat(f.class," plyr__menu").trim(),hidden:""}));v.appendChild(r.call(t,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var m=zT("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),y=zT("div"),b=zT("div",{id:"plyr-settings-".concat(e.id,"-home")}),w=zT("div",{role:"menu"});b.appendChild(w),y.appendChild(b),t.elements.settings.panels.home=b,t.config.settings.forEach((function(r){var i=zT("button",HT(XT(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));n.call(t,i,r),ux.call(t,i,"click",(function(){u.call(t,r,!1)}));var o=zT("span",null,$x(r,t.config)),a=zT("span",{class:t.config.classNames.menu.value});a.innerHTML=e[r],o.appendChild(a),i.appendChild(o),w.appendChild(i);var s=zT("div",{id:"plyr-settings-".concat(e.id,"-").concat(r),hidden:""}),c=zT("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});c.appendChild(zT("span",{"aria-hidden":!0},$x(r,t.config))),c.appendChild(zT("span",{class:t.config.classNames.hidden},$x("menuBack",t.config))),ux.call(t,s,"keydown",(function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),u.call(t,"home",!0))}),!1),ux.call(t,c,"click",(function(){u.call(t,"home",!1)})),s.appendChild(c),s.appendChild(zT("div",{role:"menu"})),y.appendChild(s),t.elements.settings.buttons[r]=i,t.elements.settings.panels[r]=s})),m.appendChild(y),v.appendChild(m),l.appendChild(v),t.elements.settings.popup=m,t.elements.settings.menu=v}if("pip"===s&&ax.pip&&l.appendChild(r.call(t,"pip",f)),"airplay"===s&&ax.airplay&&l.appendChild(r.call(t,"airplay",f)),"download"===s){var _=HT({},f,{element:"a",href:t.download,target:"_blank"});t.isHTML5&&(_.download="");var E=t.config.urls.download;!CT(E)&&t.isEmbed&&HT(_,{icon:"logo-".concat(t.provider),label:t.provider}),l.appendChild(r.call(t,"download",_))}"fullscreen"===s&&l.appendChild(r.call(t,"fullscreen",f))})),this.isHTML5&&s.call(this,wx.getQualityOptions.call(this)),c.call(this),l},inject:function(){var e=this;if(this.config.loadSprite){var t=rA.getIconUrl.call(this);t.cors&&Xx(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var r={id:this.id,seektime:this.config.seekTime,title:this.config.title},i=!0;ST(this.config.controls)&&(this.config.controls=this.config.controls.call(this,r)),this.config.controls||(this.config.controls=[]),AT(this.config.controls)||ET(this.config.controls)?n=this.config.controls:(n=rA.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:aA.getLabel.call(this)}),i=!1);var o,a=function(e){var t=e;return Object.entries(r).forEach((function(e){var n=rs(e,2),r=n[0],i=n[1];t=Hx(t,"{".concat(r,"}"),i)})),t};if(i&&(ET(this.config.controls)?n=a(n):AT(n)&&(n.innerHTML=a(n.innerHTML))),ET(this.config.selectors.controls.container)&&(o=document.querySelector(this.config.selectors.controls.container)),AT(o)||(o=this.elements.container),o[AT(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),AT(this.elements.controls)||rA.findElements.call(this),!RT(this.elements.buttons)){var s=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return ZT(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];QT(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((function(e){TT(e)||xT(e)?Array.from(e).filter(Boolean).forEach(s):s(e)}))}if(MT.isEdge&&NT(o),this.config.tooltips.controls){var c=this.config,u=c.classNames,l=c.selectors,f="".concat(l.controls.wrapper," ").concat(l.labels," .").concat(u.hidden),h=tx.call(this,f);Array.from(h).forEach((function(t){QT(t,e.config.classNames.hidden,!1),QT(t,e.config.classNames.tooltip,!0)}))}}};function iA(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e;if(t){var r=document.createElement("a");r.href=n,n=r.href}try{return new URL(n)}catch(e){return null}}function oA(e){var t=new URLSearchParams;return wT(e)&&Object.entries(e).forEach((function(e){var n=rs(e,2),r=n[0],i=n[1];t.set(r,i)})),t}var aA={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!ax.textTracks)TT(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&rA.setCaptionsMenu.call(this);else{if(AT(this.elements.captions)||(this.elements.captions=zT("div",XT(this.config.selectors.captions)),function(e,t){AT(e)&&AT(t)&&t.parentNode.insertBefore(e,t.nextSibling)}(this.elements.captions,this.elements.wrapper)),MT.isIE&&window.URL){var e=this.media.querySelectorAll("track");Array.from(e).forEach((function(e){var t=e.getAttribute("src"),n=iA(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Kx(t,"blob").then((function(t){e.setAttribute("src",window.URL.createObjectURL(t))})).catch((function(){$T(e)}))}))}var t=_x((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((function(e){return e.split("-")[0]}))),n=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===n)n=rs(t,1)[0];var r=this.storage.get("captions");if(kT(r)||(r=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:r,language:n,languages:t}),this.isHTML5){var i=this.config.captions.update?"addtrack removetrack":"removetrack";ux.call(this,this.media.textTracks,i,aA.update.bind(this))}setTimeout(aA.update.bind(this),0)}},update:function(){var e=this,t=aA.getTracks.call(this,!0),n=this.captions,r=n.active,i=n.language,o=n.meta,a=n.currentTrackNode,s=Boolean(t.find((function(e){return e.language===i})));this.isHTML5&&this.isVideo&&t.filter((function(e){return!o.get(e)})).forEach((function(t){e.debug.log("Track added",t),o.set(t,{default:"showing"===t.mode}),"showing"===t.mode&&(t.mode="hidden"),ux.call(e,t,"cuechange",(function(){return aA.updateCues.call(e)}))})),(s&&this.language!==i||!t.includes(a))&&(aA.setLanguage.call(this,i),aA.toggle.call(this,r&&s)),QT(this.elements.container,this.config.classNames.captions.enabled,!RT(t)),TT(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&rA.setCaptionsMenu.call(this)},toggle:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var r=this.captions.toggled,i=this.config.classNames.captions.active,o=bT(e)?!r:e;if(o!==r){if(n||(this.captions.active=o,this.storage.set({captions:o})),!this.language&&o&&!n){var a=aA.getTracks.call(this),s=aA.findTrack.call(this,[this.captions.language].concat(is(this.captions.languages)),!0);return this.captions.language=s.language,void aA.set.call(this,a.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=o),QT(this.elements.container,i,o),this.captions.toggled=o,rA.updateSetting.call(this,"captions"),hx.call(this,this.media,o?"captionsenabled":"captionsdisabled")}setTimeout((function(){o&&t.captions.toggled&&(t.captions.currentTrackNode.mode="hidden")}))}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=aA.getTracks.call(this);if(-1!==e)if(_T(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var r=n[e],i=r||{},o=i.language;this.captions.currentTrackNode=r,rA.updateSetting.call(this,"captions"),t||(this.captions.language=o,this.storage.set({language:o})),this.isVimeo&&this.embed.enableTextTrack(o),hx.call(this,this.media,"languagechange")}aA.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&aA.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else aA.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(ET(e)){var n=e.toLowerCase();this.captions.language=n;var r=aA.getTracks.call(this),i=aA.findTrack.call(this,[n]);aA.set.call(this,r.indexOf(i),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=Array.from((this.media||{}).textTracks||[]);return n.filter((function(n){return!e.isHTML5||t||e.captions.meta.has(n)})).filter((function(e){return["captions","subtitles"].includes(e.kind)}))},findTrack:function(e){var t,n=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=aA.getTracks.call(this),o=function(e){return Number((n.captions.meta.get(e)||{}).default)},a=Array.from(i).sort((function(e,t){return o(t)-o(e)}));return e.every((function(e){return!(t=a.find((function(t){return t.language===e})))})),t||(r?a[0]:void 0)},getCurrentTrack:function(){return aA.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!IT(t)&&ax.textTracks&&this.captions.toggled&&(t=aA.getCurrentTrack.call(this)),IT(t)?RT(t.label)?RT(t.language)?$x("enabled",this.config):e.language.toUpperCase():t.label:$x("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(AT(this.elements.captions))if(bT(e)||Array.isArray(e)){var t=e;if(!t){var n=aA.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map((function(e){return e.getCueAsHTML()})).map(zx)}var r=t.map((function(e){return e.trim()})).join("\n");if(r!==this.elements.captions.innerHTML){GT(this.elements.captions);var i=zT("span",XT(this.config.selectors.caption));i.innerHTML=r,this.elements.captions.appendChild(i),hx.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},sA={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.6.1/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,premium:!1,referrerPolicy:null},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},cA="picture-in-picture",uA="inline",lA={html5:"html5",youtube:"youtube",vimeo:"vimeo"},fA="audio",hA="video";var pA=function(){},dA=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Xa(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return Qa(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):pA}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):pA}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):pA}}]),e}(),gA=function(){function e(t){var n=this;Xa(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){return(Element.prototype.closest||function(){var e=this;do{if(ex.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),ux.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),(function(){n.onChange()})),ux.call(this.player,this.player.elements.container,"dblclick",(function(e){AT(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()})),ux.call(this,this.player.elements.container,"keydown",(function(e){return n.trapFocus(e)})),this.update()}return Qa(e,[{key:"onChange",value:function(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;AT(e)&&(e.pressed=this.active),hx.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0)}}},{key:"toggleFallback",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",QT(this.target,this.player.config.classNames.fullscreen.fallback,e),MT.isIos){var t=document.head.querySelector('meta[name="viewport"]'),n="viewport-fit=cover";t||(t=document.createElement("meta")).setAttribute("name","viewport");var r=ET(t.content)&&t.content.includes(n);e?(this.cleanupViewport=!r,r||(t.content+=",".concat(n))):this.cleanupViewport&&(t.content=t.content.split(",").filter((function(e){return e.trim()!==n})).join(","))}this.onChange()}},{key:"trapFocus",value:function(e){if(!MT.isIos&&this.active&&"Tab"===e.key&&9===e.keyCode){var t=document.activeElement,n=tx.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),r=rs(n,1)[0],i=n[n.length-1];t!==i||e.shiftKey?t===r&&e.shiftKey&&(i.focus(),e.preventDefault()):(r.focus(),e.preventDefault())}}},{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");QT(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(MT.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?this.toggleFallback(!0):this.prefix?RT(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen({navigationUI:"hide"}))}},{key:"exit",value:function(){if(this.enabled)if(MT.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),gx(this.player.play());else if(!e.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!RT(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){if(!this.enabled)return!1;if(!e.native||this.forceFallback)return ZT(this.target,this.player.config.classNames.fullscreen.fallback);var t=this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement;return t&&t.shadowRoot?t===this.target.getRootNode().host:t===this.target}},{key:"target",get:function(){return MT.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ST(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some((function(t){return!(!ST(document["".concat(t,"ExitFullscreen")])&&!ST(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)})),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}(),vA=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1};function mA(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise((function(n,r){var i=new Image,o=function(){delete i.onload,delete i.onerror,(i.naturalWidth>=t?n:r)(i)};Object.assign(i,{onload:o,onerror:o,src:e})}))}Pv({target:"Math",stat:!0},{sign:vA});var yA={addStyleHook:function(){QT(this.elements.container,this.config.selectors.container.replace(".",""),!0),QT(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void yA.toggleNativeControls.call(this,!0);AT(this.elements.controls)||(rA.inject.call(this),this.listeners.controls()),yA.toggleNativeControls.call(this),this.isHTML5&&aA.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,rA.updateVolume.call(this),rA.timeUpdate.call(this),yA.checkPlaying.call(this),QT(this.elements.container,this.config.classNames.pip.supported,ax.pip&&this.isHTML5&&this.isVideo),QT(this.elements.container,this.config.classNames.airplay.supported,ax.airplay&&this.isHTML5),QT(this.elements.container,this.config.classNames.isIos,MT.isIos),QT(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((function(){hx.call(e,e.media,"ready")}),0),yA.setTitle.call(this),this.poster&&yA.setPoster.call(this,this.poster,!1).catch((function(){})),this.config.duration&&rA.durationUpdate.call(this)},setTitle:function(){var e=$x("play",this.config);if(ET(this.config.title)&&!RT(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach((function(t){t.setAttribute("aria-label",e)})),this.isEmbed){var t=nx.call(this,"iframe");if(!AT(t))return;var n=RT(this.config.title)?"video":this.config.title,r=$x("frameTitle",this.config);t.setAttribute("title",r.replace("{title}",n))}},togglePoster:function(e){QT(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),dx.call(this).then((function(){return mA(e)})).catch((function(n){throw e===t.poster&&yA.togglePoster.call(t,!1),n})).then((function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),yA.togglePoster.call(t,!0),e})))},checkPlaying:function(e){var t=this;QT(this.elements.container,this.config.classNames.playing,this.playing),QT(this.elements.container,this.config.classNames.paused,this.paused),QT(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((function(e){Object.assign(e,{pressed:t.playing}),e.setAttribute("aria-label",$x(t.playing?"pause":"play",t.config))})),OT(e)&&"timeupdate"===e.type||yA.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((function(){QT(t.elements.container,t.config.classNames.loading,t.loading),yA.toggleControls.call(t)}),this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}},migrateStyles:function(){var e=this;Object.values(ts({},this.media.style)).filter((function(e){return!RT(e)&&e.startsWith("--plyr")})).forEach((function(t){e.elements.container.style.setProperty(t,e.media.style.getPropertyValue(t)),e.media.style.removeProperty(t)})),RT(this.media.style)&&this.media.removeAttribute("style")}},bA=function(){function e(t){Xa(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return Qa(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,r=e.keyCode?e.keyCode:e.which,i="keydown"===e.type,o=i&&r===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&_T(r)){if(i){var a=document.activeElement;if(AT(a)){var s=t.config.selectors.editable;if(a!==n.inputs.seek&&ex(a,s))return;if(32===e.which&&ex(a,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(r)&&(e.preventDefault(),e.stopPropagation()),r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:o||(t.currentTime=t.duration/10*(r-48));break;case 32:case 75:o||gx(t.togglePlay());break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:o||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:o||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===r&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=r}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){rA.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,QT(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var r,i=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||i)r=t.config.classNames.tabFocus,QT(tx.call(t,".".concat(r)),r,!1),"focusout"!==e.type&&(this.focusTimer=setTimeout((function(){var e=document.activeElement;n.container.contains(e)&&QT(document.activeElement,t.config.classNames.tabFocus,!0)}),10))}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&cx.call(t,window,"keydown keyup",this.handleKey,e,!1),cx.call(t,document.body,"click",this.toggleMenu,e),fx.call(t,document.body,"touchstart",this.firstTouch),cx.call(t,document.body,"keydown focus blur focusout",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,r=e.timers;!t.keyboard.global&&t.keyboard.focused&&ux.call(e,n.container,"keydown keyup",this.handleKey,!1),ux.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(function(t){var i=n.controls;i&&"enterfullscreen"===t.type&&(i.pressed=!1,i.hover=!1);var o=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(yA.toggleControls.call(e,!0),o=e.touch?3e3:2e3),clearTimeout(r.controls),r.controls=setTimeout((function(){return yA.toggleControls.call(e,!1)}),o)}));var i=function(t){if(!t)return bx.call(e);var r=n.container.getBoundingClientRect(),i=r.width,o=r.height;return bx.call(e,"".concat(i,":").concat(o))},o=function(){clearTimeout(r.resized),r.resized=setTimeout(i,50)};ux.call(e,n.container,"enterfullscreen exitfullscreen",(function(t){var r=e.fullscreen,a=r.target,s=r.usingNative;if(a===n.container&&(e.isEmbed||!RT(e.config.ratio))){var c="enterfullscreen"===t.type,u=i(c);u.padding;!function(t,n,r){if(e.isVimeo&&!e.config.vimeo.premium){var i=e.elements.wrapper.firstChild,o=rs(t,2)[1],a=rs(yx.call(e),2),s=a[0],c=a[1];i.style.maxWidth=r?"".concat(o/c*s,"px"):null,i.style.margin=r?"0 auto":null}}(u.ratio,0,c),s||(c?ux.call(e,window,"resize",o):lx.call(e,window,"resize",o))}}))}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(ux.call(t,t.media,"timeupdate seeking seeked",(function(e){return rA.timeUpdate.call(t,e)})),ux.call(t,t.media,"durationchange loadeddata loadedmetadata",(function(e){return rA.durationUpdate.call(t,e)})),ux.call(t,t.media,"ended",(function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&(t.restart(),t.pause())})),ux.call(t,t.media,"progress playing seeking seeked",(function(e){return rA.updateProgress.call(t,e)})),ux.call(t,t.media,"volumechange",(function(e){return rA.updateVolume.call(t,e)})),ux.call(t,t.media,"playing play pause ended emptied timeupdate",(function(e){return yA.checkPlaying.call(t,e)})),ux.call(t,t.media,"waiting canplay seeked playing",(function(e){return yA.checkLoading.call(t,e)})),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var r=nx.call(t,".".concat(t.config.classNames.video));if(!AT(r))return;ux.call(t,n.container,"click",(function(i){([n.container,r].includes(i.target)||r.contains(i.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(i,t.restart,"restart"),e.proxy(i,(function(){gx(t.play())}),"play")):e.proxy(i,(function(){gx(t.togglePlay())}),"play")))}))}t.supported.ui&&t.config.disableContextMenu&&ux.call(t,n.wrapper,"contextmenu",(function(e){e.preventDefault()}),!1),ux.call(t,t.media,"volumechange",(function(){t.storage.set({volume:t.volume,muted:t.muted})})),ux.call(t,t.media,"ratechange",(function(){rA.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})})),ux.call(t,t.media,"qualitychange",(function(e){rA.updateSetting.call(t,"quality",null,e.detail.quality)})),ux.call(t,t.media,"ready qualitychange",(function(){rA.setDownloadUrl.call(t)}));var i=t.config.events.concat(["keyup","keydown"]).join(" ");ux.call(t,t.media,i,(function(e){var r=e.detail,i=void 0===r?{}:r;"error"===e.type&&(i=t.media.error),hx.call(t,n.container,e.type,!0,i)}))}},{key:"proxy",value:function(e,t,n){var r=this.player,i=r.config.listeners[n],o=!0;ST(i)&&(o=i.call(r,e)),!1!==o&&ST(t)&&t.call(r,e)}},{key:"bind",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=this.player,s=a.config.listeners[r],c=ST(s);ux.call(a,e,t,(function(e){return i.proxy(e,n,r)}),o&&!c)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,r=MT.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach((function(n){e.bind(n,"click",(function(){gx(t.togglePlay())}),"play")})),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",(function(){t.muted=!t.muted}),"mute"),this.bind(n.buttons.captions,"click",(function(){return t.toggleCaptions()})),this.bind(n.buttons.download,"click",(function(){hx.call(t,t.media,"download")}),"download"),this.bind(n.buttons.fullscreen,"click",(function(){t.fullscreen.toggle()}),"fullscreen"),this.bind(n.buttons.pip,"click",(function(){t.pip="toggle"}),"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",(function(e){e.stopPropagation(),e.preventDefault(),rA.toggleMenu.call(t,e)}),null,!1),this.bind(n.buttons.settings,"keyup",(function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),rA.toggleMenu.call(t,e)):rA.focusFirstMenuItem.call(t,null,!0))}),null,!1),this.bind(n.settings.menu,"keydown",(function(e){27===e.which&&rA.toggleMenu.call(t,e)})),this.bind(n.inputs.seek,"mousedown mousemove",(function(e){var t=n.progress.getBoundingClientRect(),r=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",r)})),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(function(e){var n=e.currentTarget,r=e.keyCode?e.keyCode:e.which;if(!PT(e)||39===r||37===r){t.lastSeekTime=Date.now();var i=n.hasAttribute("play-on-seeked"),o=["mouseup","touchend","keyup"].includes(e.type);i&&o?(n.removeAttribute("play-on-seeked"),gx(t.play())):!o&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}})),MT.isIos){var i=tx.call(t,'input[type="range"]');Array.from(i).forEach((function(t){return e.bind(t,r,(function(e){return NT(e.target)}))}))}this.bind(n.inputs.seek,r,(function(e){var n=e.currentTarget,r=n.getAttribute("seek-value");RT(r)&&(r=n.value),n.removeAttribute("seek-value"),t.currentTime=r/n.max*t.duration}),"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",(function(e){return rA.updateSeekTooltip.call(t,e)})),this.bind(n.progress,"mousemove touchmove",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)})),this.bind(n.progress,"mouseleave touchend click",(function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)})),this.bind(n.progress,"mousedown touchstart",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)})),this.bind(n.progress,"mouseup touchend",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)})),MT.isWebkit&&Array.from(tx.call(t,'input[type="range"]')).forEach((function(n){e.bind(n,"input",(function(e){return rA.updateRangeFill.call(t,e.target)}))})),t.config.toggleInvert&&!AT(n.display.duration)&&this.bind(n.display.currentTime,"click",(function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,rA.timeUpdate.call(t))})),this.bind(n.inputs.volume,r,(function(e){t.volume=e.target.value}),"volume"),this.bind(n.controls,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type})),n.fullscreen&&Array.from(n.fullscreen.children).filter((function(e){return!e.contains(n.container)})).forEach((function(r){e.bind(r,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}))})),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",(function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(n.controls,"focusin",(function(){var r=t.config,i=t.timers;QT(n.controls,r.classNames.noTransition,!0),yA.toggleControls.call(t,!0),setTimeout((function(){QT(n.controls,r.classNames.noTransition,!1)}),0);var o=e.touch?3e3:4e3;clearTimeout(i.controls),i.controls=setTimeout((function(){return yA.toggleControls.call(t,!1)}),o)})),this.bind(n.inputs.volume,"wheel",(function(e){var n=e.webkitDirectionInvertedFromDevice,r=rs([e.deltaX,-e.deltaY].map((function(e){return n?-e:e})),2),i=r[0],o=r[1],a=Math.sign(Math.abs(i)>Math.abs(o)?i:o);t.increaseVolume(a/50);var s=t.media.volume;(1===a&&s<1||-1===a&&s>0)&&e.preventDefault()}),"volume",!1)}}]),e}(),wA=$v("splice"),_A=am("splice",{ACCESSORS:!0,0:0,1:2}),EA=Math.max,kA=Math.min;Pv({target:"Array",proto:!0,forced:!wA||!_A},{splice:function(e,t){var n,r,i,o,a,s,c=jv(this),u=sv(c.length),l=lv(e,u),f=arguments.length;if(0===f?n=r=0:1===f?(n=0,r=u-l):(n=f-2,r=kA(EA(ov(t),0),u-l)),u+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(i=Bv(c,r),o=0;o<r;o++)(a=l+o)in c&&Cv(i,o,c[a]);if(i.length=r,n<r){for(o=l;o<u-r;o++)s=o+n,(a=o+r)in c?c[s]=c[a]:delete c[s];for(o=u;o>u-r+n;o--)delete c[o-1]}else if(n>r)for(o=u-r;o>l;o--)s=o+n-1,(a=o+r-1)in c?c[s]=c[a]:delete c[s];for(o=0;o<n;o++)c[o+l]=arguments[o+2];return c.length=u-r+n,i}});var SA=t((function(e,t){e.exports=function(){var e=function(){},t={},n={},r={};function i(e,t){if(e){var i=r[e];if(n[e]=t,i)for(;i.length;)i[0](e,t),i.splice(0,1)}}function o(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function a(t,n,r,i){var o,s,c=document,u=r.async,l=(r.numRetries||0)+1,f=r.before||e,h=t.replace(/[\?|#].*$/,""),p=t.replace(/^(css|img)!/,"");i=i||0,/(^css!|\.css$)/.test(h)?((s=c.createElement("link")).rel="stylesheet",s.href=p,(o="hideFocus"in s)&&s.relList&&(o=0,s.rel="preload",s.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(h)?(s=c.createElement("img")).src=p:((s=c.createElement("script")).src=t,s.async=void 0===u||u),s.onload=s.onerror=s.onbeforeload=function(e){var c=e.type[0];if(o)try{s.sheet.cssText.length||(c="e")}catch(e){18!=e.code&&(c="e")}if("e"==c){if((i+=1)<l)return a(t,n,r,i)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,c,e.defaultPrevented)},!1!==f(t,s)&&c.head.appendChild(s)}function s(e,n,r){var s,c;if(n&&n.trim&&(s=n),c=(s?r:n)||{},s){if(s in t)throw"LoadJS";t[s]=!0}function u(t,n){!function(e,t,n){var r,i,o=(e=e.push?e:[e]).length,s=o,c=[];for(r=function(e,n,r){if("e"==n&&c.push(e),"b"==n){if(!r)return;c.push(e)}--o||t(c)},i=0;i<s;i++)a(e[i],r,n)}(e,(function(e){o(c,e),t&&o({success:t,error:n},e),i(s,e)}),c)}if(c.returnPromise)return new Promise(u);u()}return s.ready=function(e,t){return function(e,t){e=e.push?e:[e];var i,o,a,s=[],c=e.length,u=c;for(i=function(e,n){n.length&&s.push(e),--u||t(s)};c--;)o=e[c],(a=n[o])?i(o,a):(r[o]=r[o]||[]).push(i)}(e,(function(e){o(t,e)})),s},s.done=function(e){i(e,[])},s.reset=function(){t={},n={},r={}},s.isDefined=function(e){return e in t},s}()}));function TA(e){return new Promise((function(t,n){SA(e,{success:t,error:n})}))}function xA(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,hx.call(this,this.media,e?"play":"pause"))}var AA={setup:function(){var e=this;QT(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,bx.call(e),wT(window.Vimeo)?AA.ready.call(e):TA(e.config.urls.vimeo.sdk).then((function(){AA.ready.call(e)})).catch((function(t){e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready:function(){var e=this,t=this,n=t.config.vimeo,r=n.premium,i=n.referrerPolicy,o=ns(n,["premium","referrerPolicy"]);r&&Object.assign(o,{controls:!1,sidedock:!1});var a=oA(ts({loop:t.config.loop.active,autoplay:t.autoplay,muted:t.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative},o)),s=t.media.getAttribute("src");RT(s)&&(s=t.media.getAttribute(t.config.attributes.embed.id));var c,u=RT(c=s)?null:_T(Number(c))?c:c.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:c,l=zT("iframe"),f=qx(t.config.urls.vimeo.iframe,u,a);l.setAttribute("src",f),l.setAttribute("allowfullscreen",""),l.setAttribute("allow","autoplay,fullscreen,picture-in-picture"),RT(i)||l.setAttribute("referrerPolicy",i);var h=t.poster;if(r)l.setAttribute("data-poster",h),t.media=KT(l,t.media);else{var p=zT("div",{class:t.config.classNames.embedContainer,"data-poster":h});p.appendChild(l),t.media=KT(p,t.media)}Kx(qx(t.config.urls.vimeo.api,u),"json").then((function(e){if(!RT(e)){var n=new URL(e[0].thumbnail_large);n.pathname="".concat(n.pathname.split("_")[0],".jpg"),yA.setPoster.call(t,n.href).catch((function(){}))}})),t.embed=new window.Vimeo.Player(l,{autopause:t.config.autopause,muted:t.muted}),t.media.paused=!0,t.media.currentTime=0,t.supported.ui&&t.embed.disableTextTrack(),t.media.play=function(){return xA.call(t,!0),t.embed.play()},t.media.pause=function(){return xA.call(t,!1),t.embed.pause()},t.media.stop=function(){t.pause(),t.currentTime=0};var d=t.media.currentTime;Object.defineProperty(t.media,"currentTime",{get:function(){return d},set:function(e){var n=t.embed,r=t.media,i=t.paused,o=t.volume,a=i&&!n.hasPlayed;r.seeking=!0,hx.call(t,r,"seeking"),Promise.resolve(a&&n.setVolume(0)).then((function(){return n.setCurrentTime(e)})).then((function(){return a&&n.pause()})).then((function(){return a&&n.setVolume(o)})).catch((function(){}))}});var g=t.config.speed.selected;Object.defineProperty(t.media,"playbackRate",{get:function(){return g},set:function(e){t.embed.setPlaybackRate(e).then((function(){g=e,hx.call(t,t.media,"ratechange")})).catch((function(){t.options.speed=[1]}))}});var v=t.config.volume;Object.defineProperty(t.media,"volume",{get:function(){return v},set:function(e){t.embed.setVolume(e).then((function(){v=e,hx.call(t,t.media,"volumechange")}))}});var m=t.config.muted;Object.defineProperty(t.media,"muted",{get:function(){return m},set:function(e){var n=!!kT(e)&&e;t.embed.setVolume(n?0:t.config.volume).then((function(){m=n,hx.call(t,t.media,"volumechange")}))}});var y,b=t.config.loop;Object.defineProperty(t.media,"loop",{get:function(){return b},set:function(e){var n=kT(e)?e:t.config.loop.active;t.embed.setLoop(n).then((function(){b=n}))}}),t.embed.getVideoUrl().then((function(e){y=e,rA.setDownloadUrl.call(t)})).catch((function(t){e.debug.warn(t)})),Object.defineProperty(t.media,"currentSrc",{get:function(){return y}}),Object.defineProperty(t.media,"ended",{get:function(){return t.currentTime===t.duration}}),Promise.all([t.embed.getVideoWidth(),t.embed.getVideoHeight()]).then((function(n){var r=rs(n,2),i=r[0],o=r[1];t.embed.ratio=[i,o],bx.call(e)})),t.embed.setAutopause(t.config.autopause).then((function(e){t.config.autopause=e})),t.embed.getVideoTitle().then((function(n){t.config.title=n,yA.setTitle.call(e)})),t.embed.getCurrentTime().then((function(e){d=e,hx.call(t,t.media,"timeupdate")})),t.embed.getDuration().then((function(e){t.media.duration=e,hx.call(t,t.media,"durationchange")})),t.embed.getTextTracks().then((function(e){t.media.textTracks=e,aA.setup.call(t)})),t.embed.on("cuechange",(function(e){var n=e.cues,r=(void 0===n?[]:n).map((function(e){return function(e){var t=document.createDocumentFragment(),n=document.createElement("div");return t.appendChild(n),n.innerHTML=e,t.firstChild.innerText}(e.text)}));aA.updateCues.call(t,r)})),t.embed.on("loaded",(function(){(t.embed.getPaused().then((function(e){xA.call(t,!e),e||hx.call(t,t.media,"playing")})),AT(t.embed.element)&&t.supported.ui)&&t.embed.element.setAttribute("tabindex",-1)})),t.embed.on("bufferstart",(function(){hx.call(t,t.media,"waiting")})),t.embed.on("bufferend",(function(){hx.call(t,t.media,"playing")})),t.embed.on("play",(function(){xA.call(t,!0),hx.call(t,t.media,"playing")})),t.embed.on("pause",(function(){xA.call(t,!1)})),t.embed.on("timeupdate",(function(e){t.media.seeking=!1,d=e.seconds,hx.call(t,t.media,"timeupdate")})),t.embed.on("progress",(function(e){t.media.buffered=e.percent,hx.call(t,t.media,"progress"),1===parseInt(e.percent,10)&&hx.call(t,t.media,"canplaythrough"),t.embed.getDuration().then((function(e){e!==t.media.duration&&(t.media.duration=e,hx.call(t,t.media,"durationchange"))}))})),t.embed.on("seeked",(function(){t.media.seeking=!1,hx.call(t,t.media,"seeked")})),t.embed.on("ended",(function(){t.media.paused=!0,hx.call(t,t.media,"ended")})),t.embed.on("error",(function(e){t.media.error=e,hx.call(t,t.media,"error")})),setTimeout((function(){return yA.build.call(t)}),0)}};function OA(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,hx.call(this,this.media,e?"play":"pause"))}function PA(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var IA={setup:function(){var e=this;if(QT(this.elements.wrapper,this.config.classNames.embed,!0),wT(window.YT)&&ST(window.YT.Player))IA.ready.call(this);else{var t=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){ST(t)&&t(),IA.ready.call(e)},TA(this.config.urls.youtube.sdk).catch((function(t){e.debug.warn("YouTube API failed to load",t)}))}},getTitle:function(e){var t=this;Kx(qx(this.config.urls.youtube.api,e)).then((function(e){if(wT(e)){var n=e.title,r=e.height,i=e.width;t.config.title=n,yA.setTitle.call(t),t.embed.ratio=[i,r]}bx.call(t)})).catch((function(){bx.call(t)}))},ready:function(){var e=this,t=e.media&&e.media.getAttribute("id");if(RT(t)||!t.startsWith("youtube-")){var n=e.media.getAttribute("src");RT(n)&&(n=e.media.getAttribute(this.config.attributes.embed.id));var r,i,o=RT(r=n)?null:r.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:r,a=(i=e.provider,"".concat(i,"-").concat(Math.floor(1e4*Math.random()))),s=zT("div",{id:a,"data-poster":e.poster});e.media=KT(s,e.media);var c=function(e){return"https://i.ytimg.com/vi/".concat(o,"/").concat(e,"default.jpg")};mA(c("maxres"),121).catch((function(){return mA(c("sd"),121)})).catch((function(){return mA(c("hq"))})).then((function(t){return yA.setPoster.call(e,t.src)})).then((function(t){t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((function(){}));var u=e.config.youtube;e.embed=new window.YT.Player(a,{videoId:o,host:PA(u),playerVars:HT({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},u),events:{onError:function(t){if(!e.media.error){var n=t.data,r={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[n]||"An unknown error occured";e.media.error={code:n,message:r},hx.call(e,e.media,"error")}},onPlaybackRateChange:function(t){var n=t.target;e.media.playbackRate=n.getPlaybackRate(),hx.call(e,e.media,"ratechange")},onReady:function(t){if(!ST(e.media.play)){var n=t.target;IA.getTitle.call(e,o),e.media.play=function(){OA.call(e,!0),n.playVideo()},e.media.pause=function(){OA.call(e,!1),n.pauseVideo()},e.media.stop=function(){n.stopVideo()},e.media.duration=n.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:function(){return Number(n.getCurrentTime())},set:function(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,hx.call(e,e.media,"seeking"),n.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:function(){return n.getPlaybackRate()},set:function(e){n.setPlaybackRate(e)}});var r=e.config.volume;Object.defineProperty(e.media,"volume",{get:function(){return r},set:function(t){r=t,n.setVolume(100*r),hx.call(e,e.media,"volumechange")}});var i=e.config.muted;Object.defineProperty(e.media,"muted",{get:function(){return i},set:function(t){var r=kT(t)?t:i;i=r,n[r?"mute":"unMute"](),hx.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:function(){return n.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get:function(){return e.currentTime===e.duration}});var a=n.getAvailablePlaybackRates();e.options.speed=a.filter((function(t){return e.config.speed.options.includes(t)})),e.supported.ui&&e.media.setAttribute("tabindex",-1),hx.call(e,e.media,"timeupdate"),hx.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((function(){e.media.buffered=n.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&hx.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),hx.call(e,e.media,"canplaythrough"))}),200),setTimeout((function(){return yA.build.call(e)}),50)}},onStateChange:function(t){var n=t.target;switch(clearInterval(e.timers.playing),e.media.seeking&&[1,2].includes(t.data)&&(e.media.seeking=!1,hx.call(e,e.media,"seeked")),t.data){case-1:hx.call(e,e.media,"timeupdate"),e.media.buffered=n.getVideoLoadedFraction(),hx.call(e,e.media,"progress");break;case 0:OA.call(e,!1),e.media.loop?(n.stopVideo(),n.playVideo()):hx.call(e,e.media,"ended");break;case 1:e.config.autoplay||!e.media.paused||e.embed.hasPlayed?(OA.call(e,!0),hx.call(e,e.media,"playing"),e.timers.playing=setInterval((function(){hx.call(e,e.media,"timeupdate")}),50),e.media.duration!==n.getDuration()&&(e.media.duration=n.getDuration(),hx.call(e,e.media,"durationchange"))):e.media.pause();break;case 2:e.muted||e.embed.unMute(),OA.call(e,!1);break;case 3:hx.call(e,e.media,"waiting")}hx.call(e,e.elements.container,"statechange",!1,{code:t.data})}}})}}},jA={setup:function(){this.media?(QT(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),QT(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&QT(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=zT("div",{class:this.config.classNames.video}),VT(this.media,this.elements.wrapper),this.elements.poster=zT("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?wx.setup.call(this):this.isYouTube?IA.setup.call(this):this.isVimeo&&AA.setup.call(this)):this.debug.warn("No media element found!")}},CA=function(){function e(t){var n=this;Xa(this,e),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((function(e,t){n.on("loaded",e),n.on("error",t)})),this.load()}return Qa(e,[{key:"load",value:function(){var e=this;this.enabled&&(wT(window.google)&&wT(window.google.ima)?this.ready():TA(this.player.config.urls.googleIMA.sdk).then((function(){e.ready()})).catch((function(){e.trigger("error",new Error("Google IMA SDK failed to load"))})))}},{key:"ready",value:function(){var e,t=this;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((function(){t.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()}},{key:"setupIMA",value:function(){var e=this;this.elements.container=zT("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(function(t){return e.onAdsManagerLoaded(t)}),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(t){return e.onAdError(t)}),!1),this.requestAds()}},{key:"requestAds",value:function(){var e=this.player.elements.container;try{var t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}}},{key:"pollCountdown",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");var n=function(){var t=nA(Math.max(e.manager.getRemainingTime(),0)),n="".concat($x("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)};this.countdownTimer=setInterval(n,100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(e){return t.onAdError(e)})),Object.keys(google.ima.AdEvent.Type).forEach((function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],(function(e){return t.onAdEvent(e)}))})),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;RT(this.cuePoints)||this.cuePoints.forEach((function(t){if(0!==t&&-1!==t&&t<e.player.duration){var n=e.player.elements.progress;if(AT(n)){var r=100/e.player.duration*t,i=zT("span",{class:e.player.config.classNames.cues});i.style.left="".concat(r.toString(),"%"),n.appendChild(i)}}}))}},{key:"onAdEvent",value:function(e){var t=this,n=this.player.elements.container,r=e.getAd(),i=e.getAdData();switch(function(e){hx.call(t.player,t.player.media,"ads".concat(e.replace(/_/g,"").toLowerCase()))}(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),r.isLinear()||(r.width=n.offsetWidth,r.height=n.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:i.adError&&this.player.debug.warn("Non-fatal ad error: ".concat(i.adError.getMessage()))}}},{key:"onAdError",value:function(e){this.cancel(),this.player.debug.warn("Ads error",e)}},{key:"listeners",value:function(){var e,t=this,n=this.player.elements.container;this.player.on("canplay",(function(){t.addCuePoints()})),this.player.on("ended",(function(){t.loader.contentComplete()})),this.player.on("timeupdate",(function(){e=t.player.currentTime})),this.player.on("seeked",(function(){var n=t.player.currentTime;RT(t.cuePoints)||t.cuePoints.forEach((function(r,i){e<r&&r<n&&(t.manager.discardAdBreak(),t.cuePoints.splice(i,1))}))})),window.addEventListener("resize",(function(){t.manager&&t.manager.resize(n.offsetWidth,n.offsetHeight,google.ima.ViewMode.NORMAL)}))}},{key:"play",value:function(){var e=this,t=this.player.elements.container;this.managerPromise||this.resumeContent(),this.managerPromise.then((function(){e.manager.setVolume(e.player.volume),e.elements.displayContainer.initialize();try{e.initialized||(e.manager.init(t.offsetWidth,t.offsetHeight,google.ima.ViewMode.NORMAL),e.manager.start()),e.initialized=!0}catch(t){e.onAdError(t)}})).catch((function(){}))}},{key:"resumeContent",value:function(){this.elements.container.style.zIndex="",this.playing=!1,gx(this.player.media.play())}},{key:"pauseContent",value:function(){this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}},{key:"cancel",value:function(){this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}},{key:"loadAds",value:function(){var e=this;this.managerPromise.then((function(){e.manager&&e.manager.destroy(),e.managerPromise=new Promise((function(t){e.on("loaded",t),e.player.debug.log(e.manager)})),e.initialized=!1,e.requestAds()})).catch((function(){}))}},{key:"trigger",value:function(e){for(var t=this,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];var o=this.events[e];TT(o)&&o.forEach((function(e){ST(e)&&e.apply(t,r)}))}},{key:"on",value:function(e,t){return TT(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this}},{key:"startSafetyTimer",value:function(e,t){var n=this;this.player.debug.log("Safety timer invoked from: ".concat(t)),this.safetyTimer=setTimeout((function(){n.cancel(),n.clearSafetyTimer("startSafetyTimer()")}),e)}},{key:"clearSafetyTimer",value:function(e){bT(this.safetyTimer)||(this.player.debug.log("Safety timer cleared from: ".concat(e)),clearTimeout(this.safetyTimer),this.safetyTimer=null)}},{key:"enabled",get:function(){var e=this.config;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!RT(e.publisherId)||CT(e.tagUrl))}},{key:"tagUrl",get:function(){var e=this.config;if(CT(e.tagUrl))return e.tagUrl;var t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId};return"".concat("https://go.aniview.com/api/adserver6/vast/","?").concat(oA(t))}}]),e}(),RA=nm.findIndex,LA=!0,NA=am("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){LA=!1})),Pv({target:"Array",proto:!0,forced:LA||!NA},{findIndex:function(e){return RA(this,e,arguments.length>1?arguments[1]:void 0)}}),_m("findIndex");var MA=Math.min,UA=[].lastIndexOf,DA=!!UA&&1/[1].lastIndexOf(1,-0)<0,FA=my("lastIndexOf"),BA=am("indexOf",{ACCESSORS:!0,1:0}),qA=DA||!FA||!BA?function(e){if(DA)return UA.apply(this,arguments)||0;var t=pg(this),n=sv(t.length),r=n-1;for(arguments.length>1&&(r=MA(r,ov(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:UA;Pv({target:"Array",proto:!0,forced:qA!==[].lastIndexOf},{lastIndexOf:qA});var HA=function(e,t){var n={};return e>t.width/t.height?(n.width=t.width,n.height=1/e*t.width):(n.height=t.height,n.width=e*t.height),n},VA=function(){function e(t){Xa(this,e),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}return Qa(e,[{key:"load",value:function(){var e=this;this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((function(){e.enabled&&(e.render(),e.determineContainerAutoSizing(),e.loaded=!0)}))}},{key:"getThumbnails",value:function(){var e=this;return new Promise((function(t){var n=e.player.config.previewThumbnails.src;if(RT(n))throw new Error("Missing previewThumbnails.src config attribute");var r=function(){e.thumbnails.sort((function(e,t){return e.height-t.height})),e.player.debug.log("Preview thumbnails",e.thumbnails),t()};if(ST(n))n((function(t){e.thumbnails=t,r()}));else{var i=(ET(n)?[n]:n).map((function(t){return e.getThumbnail(t)}));Promise.all(i).then(r)}}))}},{key:"getThumbnail",value:function(e){var t=this;return new Promise((function(n){Kx(e).then((function(r){var i,o,a={frames:(i=r,o=[],i.split(/\r\n\r\n|\n\n|\r\r/).forEach((function(e){var t={};e.split(/\r\n|\n|\r/).forEach((function(e){if(_T(t.startTime)){if(!RT(e.trim())&&RT(t.text)){var n=e.trim().split("#xywh="),r=rs(n,1);if(t.text=r[0],n[1]){var i=rs(n[1].split(","),4);t.x=i[0],t.y=i[1],t.w=i[2],t.h=i[3]}}}else{var o=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);o&&(t.startTime=60*Number(o[1]||0)*60+60*Number(o[2])+Number(o[3])+Number("0.".concat(o[4])),t.endTime=60*Number(o[6]||0)*60+60*Number(o[7])+Number(o[8])+Number("0.".concat(o[9])))}})),t.text&&o.push(t)})),o),height:null,urlPrefix:""};a.frames[0].text.startsWith("/")||a.frames[0].text.startsWith("http://")||a.frames[0].text.startsWith("https://")||(a.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var s=new Image;s.onload=function(){a.height=s.naturalHeight,a.width=s.naturalWidth,t.thumbnails.push(a),n()},s.src=a.urlPrefix+a.frames[0].text}))}))}},{key:"startMove",value:function(e){if(this.loaded&&OT(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=nA(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){(bT(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):fx.call(this.player,this.player.media,"timeupdate",(function(){e.mouseDown||e.toggleScrubbingContainer(!1)}))}},{key:"listeners",value:function(){var e=this;this.player.on("play",(function(){e.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(function(){e.toggleThumbContainer(!1)})),this.player.on("timeupdate",(function(){e.lastTime=e.player.media.currentTime}))}},{key:"render",value:function(){this.elements.thumb.container=zT("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=zT("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=zT("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=zT("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),AT(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=zT("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"destroy",value:function(){this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex((function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime})),n=t>=0,r=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach((function(n,i){e.loadedImages.includes(n.frames[t].text)&&(r=i)})),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(r)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,r=this.thumbnails[t],i=r.urlPrefix,o=r.frames[n],a=r.frames[n].text,s=i+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,o,t,n,a,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var c=new Image;c.src=s,c.dataset.index=n,c.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log("Loading image: ".concat(s)),c.onload=function(){return e.showImage(c,o,t,n,a,!0)},this.loadingImage=c,this.removeOldImages(c)}}},{key:"showImage",value:function(e,t,n,r,i){var o=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(i,". num: ").concat(r,". qual: ").concat(n,". newimg: ").concat(o)),this.setImageSizeAndOffset(e,t),o&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(i)||this.loadedImages.push(i)),this.preloadNearby(r,!0).then(this.preloadNearby(r,!1)).then(this.getHigherQuality(n,e,t,i))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach((function(n){if("img"===n.tagName.toLowerCase()){var r=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var i=t.currentImageContainer;setTimeout((function(){i.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))}),r)}}}))}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise((function(r){setTimeout((function(){var i=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===i){var o;o=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var a=!1;o.forEach((function(e){var n=e.text;if(n!==i&&!t.loadedImages.includes(n)){a=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var o=t.thumbnails[0].urlPrefix+n,s=new Image;s.src=o,s.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),r()}}})),a||r()}}),300)}))}},{key:"getHigherQuality",value:function(e,t,n,r){var i=this;if(e<this.thumbnails.length-1){var o=t.naturalHeight;this.usingSprites&&(o=n.h),o<this.thumbContainerHeight&&setTimeout((function(){i.showingThumbFilename===r&&(i.player.debug.log("Showing higher quality thumb for: ".concat(r)),i.loadImage(e+1))}),300)}}},{key:"toggleThumbContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(this.sizeSpecifiedInCSS){if(this.elements.thumb.imageContainer.clientHeight>20&&this.elements.thumb.imageContainer.clientWidth<20){var e=Math.floor(this.elements.thumb.imageContainer.clientHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.width="".concat(e,"px")}else if(this.elements.thumb.imageContainer.clientHeight<20&&this.elements.thumb.imageContainer.clientWidth>20){var t=Math.floor(this.elements.thumb.imageContainer.clientWidth/this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(t,"px")}}else{var n=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(n,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,r=t.left-e.left+10,i=t.right-e.left-n.clientWidth-10,o=this.mousePosX-e.left-n.clientWidth/2;o<r&&(o=r),o>i&&(o=i),n.style.left="".concat(o,"px")}},{key:"setScrubbingContainerSize",value:function(){var e=HA(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}),t=e.width,n=e.height;this.elements.scrubbing.container.style.width="".concat(t,"px"),this.elements.scrubbing.container.style.height="".concat(n,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(e.naturalHeight*n,"px"),e.style.width="".concat(e.naturalWidth*n,"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?HA(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}).height:this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),WA={insertElements:function(e,t){var n=this;ET(t)?YT(e,this.media,{src:t}):TT(t)&&t.forEach((function(t){YT(e,n.media,t)}))},change:function(e){var t=this;qT(e,"sources.length")?(wx.cancelRequests.call(this),this.destroy.call(this,(function(){t.options.quality=[],$T(t.media),t.media=null,AT(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,r=e.type,i=rs(n,1)[0],o=i.provider,a=void 0===o?lA.html5:o,s=i.src,c="html5"===a?r:"div",u="html5"===a?{}:{src:s};Object.assign(t,{provider:a,type:r,supported:ax.check(r,a,t.config.playsinline),media:zT(c,u)}),t.elements.container.appendChild(t.media),kT(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),RT(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),yA.addStyleHook.call(t),t.isHTML5&&WA.insertElements.call(t,"source",n),t.config.title=e.title,jA.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&WA.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&yA.build.call(t),t.isHTML5&&t.media.load(),RT(e.previewThumbnails)||(Object.assign(t.config.previewThumbnails,e.previewThumbnails),t.previewThumbnails&&t.previewThumbnails.loaded&&(t.previewThumbnails.destroy(),t.previewThumbnails=null),t.config.previewThumbnails.enabled&&(t.previewThumbnails=new VA(t))),t.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};var zA,YA=function(){function e(t,n){var r=this;if(Xa(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=ax.touch,this.media=t,ET(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||xT(this.media)||TT(this.media))&&(this.media=this.media[0]),this.config=HT({},sA,e.defaults,n||{},function(){try{return JSON.parse(r.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new dA(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",ax),!bT(this.media)&&AT(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(ax.check().api){var i=this.media.cloneNode(!0);i.autoplay=!1,this.elements.original=i;var o=this.media.tagName.toLowerCase(),a=null,s=null;switch(o){case"div":if(a=this.media.querySelector("iframe"),AT(a)){if(s=iA(a.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?lA.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?lA.vimeo:null}(s.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className="",s.search.length){var c=["1","true"];c.includes(s.searchParams.get("autoplay"))&&(this.config.autoplay=!0),c.includes(s.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=c.includes(s.searchParams.get("playsinline")),this.config.youtube.hl=s.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(RT(this.provider)||!Object.keys(lA).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=hA;break;case"video":case"audio":this.type=o,this.provider=lA.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=ax.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new bA(this),this.storage=new Gx(this),this.media.plyr=this,AT(this.elements.container)||(this.elements.container=zT("div",{tabindex:0}),VT(this.media,this.elements.container)),yA.migrateStyles.call(this),yA.addStyleHook.call(this),jA.setup.call(this),this.config.debug&&ux.call(this,this.elements.container,this.config.events.join(" "),(function(e){r.debug.log("event: ".concat(e.type))})),this.fullscreen=new gA(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&yA.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new CA(this)),this.isHTML5&&this.config.autoplay&&setTimeout((function(){return gx(r.play())}),10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new VA(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return Qa(e,[{key:"play",value:function(){var e=this;return ST(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((function(){return e.ads.play()})).catch((function(){return gx(e.media.play())})),this.media.play()):null}},{key:"pause",value:function(){return this.playing&&ST(this.media.pause)?this.media.pause():null}},{key:"togglePlay",value:function(e){return(kT(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ST(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime-=_T(e)?e:this.config.seekTime}},{key:"forward",value:function(e){this.currentTime+=_T(e)?e:this.config.seekTime}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(_T(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){aA.toggle.call(this,e,!1)}},{key:"airplay",value:function(){ax.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=ZT(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,r=QT(this.elements.container,this.config.classNames.hideControls,n);if(r&&this.config.controls.includes("settings")&&!RT(this.config.settings)&&rA.toggleMenu.call(this,!1),r!==t){var i=r?"controlshidden":"controlsshown";hx.call(this,this.media,i)}return!r}return!1}},{key:"on",value:function(e,t){ux.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){fx.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){lx(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var r=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&($T(t.elements.buttons.play),$T(t.elements.captions),$T(t.elements.controls),$T(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ST(e)&&e()):(px.call(t),KT(t.elements.original,t.elements.container),hx.call(t,t.elements.original,"destroyed",!0),ST(e)&&e.call(t.elements.original),t.ready=!1,setTimeout((function(){t.elements=null,t.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(yA.toggleNativeControls.call(this,!0),r()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ST(this.embed.destroy)&&this.embed.destroy(),r()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(r),setTimeout(r,200))}}},{key:"supports",value:function(e){return ax.mime.call(this,e)}},{key:"isHTML5",get:function(){return this.provider===lA.html5}},{key:"isEmbed",get:function(){return this.isYouTube||this.isVimeo}},{key:"isYouTube",get:function(){return this.provider===lA.youtube}},{key:"isVimeo",get:function(){return this.provider===lA.vimeo}},{key:"isVideo",get:function(){return this.type===hA}},{key:"isAudio",get:function(){return this.type===fA}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=_T(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return _T(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=_T(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;ET(t)&&(t=Number(t)),_T(t)||(t=this.storage.get("volume")),_T(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!RT(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;kT(t)||(t=this.storage.get("muted")),kT(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=this,n=null;_T(e)&&(n=e),_T(n)||(n=this.storage.get("speed")),_T(n)||(n=this.config.speed.selected);var r=this.minimumSpeed,i=this.maximumSpeed;n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:255;return Math.min(Math.max(e,t),n)}(n,r,i),this.config.speed.selected=n,setTimeout((function(){t.media.playbackRate=n}),0)},get:function(){return Number(this.media.playbackRate)}},{key:"minimumSpeed",get:function(){return this.isYouTube?Math.min.apply(Math,is(this.options.speed)):this.isVimeo?.5:.0625}},{key:"maximumSpeed",get:function(){return this.isYouTube?Math.max.apply(Math,is(this.options.speed)):this.isVimeo?2:16}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var r=[!RT(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(_T),i=!0;if(!n.includes(r)){var o=function(e,t){return TT(e)&&e.length?e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})):null}(n,r);this.debug.warn("Unsupported quality option: ".concat(r,", using ").concat(o," instead")),r=o,i=!1}t.selected=r,this.media.quality=r,i&&this.storage.set({quality:r})}},get:function(){return this.media.quality}},{key:"loop",set:function(e){var t=kT(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t},get:function(){return Boolean(this.media.loop)}},{key:"source",set:function(e){WA.change.call(this,e)},get:function(){return this.media.currentSrc}},{key:"download",get:function(){var e=this.config.urls.download;return CT(e)?e:this.source},set:function(e){CT(e)&&(this.config.urls.download=e,rA.setDownloadUrl.call(this))}},{key:"poster",set:function(e){this.isVideo?yA.setPoster.call(this,e,!1).catch((function(){})):this.debug.warn("Poster can only be set for video")},get:function(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}},{key:"ratio",get:function(){if(!this.isVideo)return null;var e=mx(yx.call(this));return TT(e)?e.join(":"):e},set:function(e){this.isVideo?ET(e)&&vx(e)?(this.config.ratio=e,bx.call(this)):this.debug.error("Invalid aspect ratio specified (".concat(e,")")):this.debug.warn("Aspect ratio can only be set for video")}},{key:"autoplay",set:function(e){var t=kT(e)?e:this.config.autoplay;this.config.autoplay=t},get:function(){return Boolean(this.config.autoplay)}},{key:"currentTrack",set:function(e){aA.set.call(this,e,!1)},get:function(){var e=this.captions,t=e.toggled,n=e.currentTrack;return t?n:-1}},{key:"language",set:function(e){aA.setLanguage.call(this,e,!1)},get:function(){return(aA.getCurrentTrack.call(this)||{}).language}},{key:"pip",set:function(e){if(ax.pip){var t=kT(e)?e:!this.pip;ST(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?cA:uA),ST(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}},get:function(){return ax.pip?RT(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===cA:null}}],[{key:"supported",value:function(e,t,n){return ax.check(e,t,n)}},{key:"loadSprite",value:function(e,t){return Xx(e,t)}},{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null;return ET(t)?r=Array.from(document.querySelectorAll(t)):xT(t)?r=Array.from(t):TT(t)&&(r=t.filter(AT)),RT(r)?null:r.map((function(t){return new e(t,n)}))}}]),e}();YA.defaults=(zA=sA,JSON.parse(JSON.stringify(zA)));var $A,GA={video:{type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4",type:"video/mp4",size:576},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4",type:"video/mp4",size:720},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4",type:"video/mp4",size:1080},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4",type:"video/mp4",size:1440}],poster:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0},{kind:"captions",label:"French",srclang:"fr",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt"}],previewThumbnails:{src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]}},audio:{type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]},youtube:{type:"video",sources:[{src:"https://youtube.com/watch?v=bTqVqk7FSmY",provider:"youtube"}]},vimeo:{type:"video",sources:[{src:"https://vimeo.com/40648169",provider:"vimeo"}]}},KA=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e&&e.classList[n?"add":"remove"](t)};$A="plyr.io",window.location.host===$A&&Xp({dsn:"https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555",whitelistUrls:[$A].map((function(e){return new RegExp("https://(([a-z0-9])+(.))*".concat(e))}))}),document.addEventListener("DOMContentLoaded",(function(){Zd.setup(".js-shr",{count:{className:"button__count"},wrapper:{className:"button--with-count"}});var e=new YA("#player",{debug:!0,title:"View From A Blue Moon",iconUrl:"dist/demo.svg",keyboard:{global:!0},tooltips:{controls:!0},captions:{active:!0},ads:{enabled:window.location.host.includes($A),publisherId:"918848828995742"},previewThumbnails:{enabled:!0,src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]},vimeo:{referrerPolicy:"no-referrer"}});window.player=e;var t=document.querySelectorAll("[data-source]"),n=Object.keys(GA),r=Boolean(window.history&&window.history.pushState),i=window.location.hash.substring(1),o=i.length;function a(e){Array.from(t).forEach((function(e){return KA(e.parentElement,"active",!1)})),KA(document.querySelector('[data-source="'.concat(e,'"]')),"active",!0),Array.from(document.querySelectorAll(".plyr__cite")).forEach((function(e){e.hidden=!0})),document.querySelector(".plyr__cite--".concat(e)).hidden=!1}function s(t,r){!n.includes(t)||!r&&t===i||!i.length&&"video"===t||(e.source=GA[t],i=t,a(t))}Array.from(t).forEach((function(e){e.addEventListener("click",(function(){var t=e.getAttribute("data-source");s(t),r&&window.history.pushState({type:t},"","#".concat(t))}))})),window.addEventListener("popstate",(function(e){e.state&&Object.keys(e.state).includes("type")&&s(e.state.type)})),o||(i="video"),r&&n.includes(i)&&window.history.replaceState({type:i},"",o?"#".concat(i):""),"video"!==i&&s(i,!0),a(i)}))}(); //# sourceMappingURL=demo.min.js.map diff --git a/demo/dist/demo.min.js.map b/demo/dist/demo.min.js.map index ae98c2f5..0d84800c 100644 --- a/demo/dist/demo.min.js.map +++ b/demo/dist/demo.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["demo.js","demo/node_modules/core-js/internals/global.js","demo/node_modules/core-js/internals/internal-state.js","demo/node_modules/core-js/internals/fails.js","demo/node_modules/core-js/internals/descriptors.js","demo/node_modules/core-js/internals/object-property-is-enumerable.js","demo/node_modules/core-js/internals/create-property-descriptor.js","demo/node_modules/core-js/internals/classof-raw.js","demo/node_modules/core-js/internals/indexed-object.js","demo/node_modules/core-js/internals/require-object-coercible.js","demo/node_modules/core-js/internals/to-indexed-object.js","demo/node_modules/core-js/internals/is-object.js","demo/node_modules/core-js/internals/to-primitive.js","demo/node_modules/core-js/internals/has.js","demo/node_modules/core-js/internals/document-create-element.js","demo/node_modules/core-js/internals/ie8-dom-define.js","demo/node_modules/core-js/internals/object-get-own-property-descriptor.js","demo/node_modules/core-js/internals/an-object.js","demo/node_modules/core-js/internals/object-define-property.js","demo/node_modules/core-js/internals/hide.js","demo/node_modules/core-js/internals/set-global.js","demo/node_modules/core-js/internals/shared.js","demo/node_modules/core-js/internals/function-to-string.js","demo/node_modules/core-js/internals/native-weak-map.js","demo/node_modules/core-js/internals/uid.js","demo/node_modules/core-js/internals/shared-key.js","demo/node_modules/core-js/internals/hidden-keys.js","demo/node_modules/core-js/internals/redefine.js","demo/node_modules/core-js/internals/to-integer.js","demo/node_modules/core-js/internals/to-length.js","demo/node_modules/core-js/internals/to-absolute-index.js","demo/node_modules/core-js/internals/array-includes.js","demo/node_modules/core-js/internals/object-keys-internal.js","demo/node_modules/core-js/internals/enum-bug-keys.js","demo/node_modules/core-js/internals/object-get-own-property-names.js","demo/node_modules/core-js/internals/object-get-own-property-symbols.js","demo/node_modules/core-js/internals/own-keys.js","demo/node_modules/core-js/internals/copy-constructor-properties.js","demo/node_modules/core-js/internals/is-forced.js","demo/node_modules/core-js/internals/export.js","demo/node_modules/core-js/internals/a-function.js","demo/node_modules/core-js/internals/bind-context.js","demo/node_modules/core-js/internals/to-object.js","demo/node_modules/core-js/internals/is-array.js","demo/node_modules/core-js/internals/native-symbol.js","demo/node_modules/core-js/internals/well-known-symbol.js","demo/node_modules/core-js/internals/array-species-create.js","demo/node_modules/core-js/internals/array-methods.js","demo/node_modules/core-js/internals/sloppy-array-method.js","demo/node_modules/core-js/internals/array-for-each.js","demo/node_modules/core-js/modules/es.array.for-each.js","demo/node_modules/core-js/internals/call-with-safe-iteration-closing.js","demo/node_modules/core-js/internals/iterators.js","demo/node_modules/core-js/internals/is-array-iterator-method.js","demo/node_modules/core-js/internals/create-property.js","demo/node_modules/core-js/internals/classof.js","demo/node_modules/core-js/internals/get-iterator-method.js","demo/node_modules/core-js/internals/array-from.js","demo/node_modules/core-js/internals/check-correctness-of-iteration.js","demo/node_modules/core-js/modules/es.array.from.js","demo/node_modules/core-js/internals/object-keys.js","demo/node_modules/core-js/internals/object-define-properties.js","demo/node_modules/core-js/internals/html.js","demo/node_modules/core-js/internals/object-create.js","demo/node_modules/core-js/internals/add-to-unscopables.js","demo/node_modules/core-js/modules/es.array.includes.js","demo/node_modules/core-js/modules/es.object.keys.js","demo/node_modules/core-js/internals/is-regexp.js","demo/node_modules/core-js/internals/validate-string-method-arguments.js","demo/node_modules/core-js/internals/correct-is-regexp-logic.js","demo/node_modules/core-js/modules/es.string.includes.js","demo/node_modules/core-js/internals/string-at.js","demo/node_modules/core-js/internals/iterators-core.js","demo/node_modules/core-js/internals/correct-prototype-getter.js","demo/node_modules/core-js/internals/object-get-prototype-of.js","demo/node_modules/core-js/internals/set-to-string-tag.js","demo/node_modules/core-js/internals/create-iterator-constructor.js","demo/node_modules/core-js/internals/object-set-prototype-of.js","demo/node_modules/core-js/internals/validate-set-prototype-of-arguments.js","demo/node_modules/core-js/internals/define-iterator.js","demo/node_modules/core-js/modules/es.string.iterator.js","demo/node_modules/core-js/internals/dom-iterables.js","demo/node_modules/core-js/modules/web.dom-collections.for-each.js","demo/src/js/tab-focus.js","demo/node_modules/custom-event-polyfill/polyfill.js","demo/node_modules/core-js/internals/wrapped-well-known-symbol.js","demo/node_modules/core-js/internals/path.js","demo/node_modules/core-js/internals/define-well-known-symbol.js","demo/node_modules/core-js/internals/object-get-own-property-names-external.js","demo/node_modules/core-js/modules/es.symbol.js","demo/node_modules/core-js/internals/enum-keys.js","demo/node_modules/core-js/modules/es.symbol.description.js","demo/node_modules/core-js/modules/es.symbol.iterator.js","demo/node_modules/core-js/modules/es.array.index-of.js","demo/node_modules/core-js/modules/es.array.iterator.js","demo/node_modules/core-js/modules/es.array.join.js","demo/node_modules/core-js/internals/array-method-has-species-support.js","demo/node_modules/core-js/modules/es.array.slice.js","demo/node_modules/core-js/internals/object-to-string.js","demo/node_modules/core-js/modules/es.object.to-string.js","demo/node_modules/core-js/internals/regexp-flags.js","demo/node_modules/core-js/internals/regexp-exec.js","demo/node_modules/core-js/modules/es.regexp.exec.js","demo/node_modules/core-js/modules/es.regexp.to-string.js","demo/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","demo/node_modules/core-js/internals/advance-string-index.js","demo/node_modules/core-js/internals/regexp-exec-abstract.js","demo/node_modules/core-js/modules/es.string.replace.js","demo/node_modules/core-js/internals/same-value.js","demo/node_modules/core-js/modules/es.string.search.js","demo/node_modules/core-js/internals/species-constructor.js","demo/node_modules/core-js/modules/es.string.split.js","demo/node_modules/core-js/modules/web.dom-collections.iterator.js","demo/node_modules/core-js/internals/native-url.js","demo/node_modules/core-js/internals/an-instance.js","demo/node_modules/core-js/internals/object-assign.js","demo/node_modules/core-js/internals/punycode-to-ascii.js","demo/node_modules/core-js/internals/redefine-all.js","demo/node_modules/core-js/internals/get-iterator.js","demo/node_modules/core-js/modules/web.url-search-params.js","demo/node_modules/core-js/modules/web.url.js","demo/node_modules/url-polyfill/url-polyfill.js","demo/node_modules/core-js/modules/es.array.concat.js","demo/node_modules/core-js/internals/array-fill.js","demo/node_modules/core-js/modules/es.array.fill.js","demo/node_modules/core-js/internals/array-last-index-of.js","demo/node_modules/core-js/modules/es.array.last-index-of.js","demo/node_modules/core-js/modules/es.function.name.js","demo/node_modules/core-js/internals/get-built-in.js","demo/node_modules/core-js/internals/task.js","demo/node_modules/core-js/internals/set-species.js","demo/node_modules/core-js/internals/iterate.js","demo/node_modules/core-js/internals/microtask.js","demo/node_modules/core-js/internals/user-agent.js","demo/node_modules/core-js/modules/es.promise.js","demo/node_modules/core-js/internals/new-promise-capability.js","demo/node_modules/core-js/internals/promise-resolve.js","demo/node_modules/core-js/internals/perform.js","demo/node_modules/core-js/internals/host-report-errors.js","demo/node_modules/core-js/modules/es.array.splice.js","demo/node_modules/core-js/modules/es.string.match.js","demo/node_modules/core-js/modules/es.array.filter.js","demo/node_modules/core-js/modules/es.array.map.js","demo/node_modules/core-js/internals/array-reduce.js","demo/node_modules/core-js/modules/es.array.reduce.js","demo/node_modules/core-js/modules/es.object.is-frozen.js","demo/node_modules/core-js/internals/inherit-if-required.js","demo/node_modules/core-js/modules/es.regexp.constructor.js","demo/node_modules/core-js/internals/array-buffer-view-core.js","demo/node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","demo/node_modules/core-js/internals/to-index.js","demo/node_modules/core-js/internals/array-buffer.js","demo/node_modules/core-js/internals/to-offset.js","demo/node_modules/core-js/internals/typed-array-from.js","demo/node_modules/core-js/internals/typed-array-constructor.js","demo/node_modules/core-js/modules/es.typed-array.uint16-array.js","demo/node_modules/core-js/internals/array-copy-within.js","demo/node_modules/core-js/modules/es.typed-array.copy-within.js","demo/node_modules/core-js/modules/es.typed-array.every.js","demo/node_modules/core-js/modules/es.typed-array.fill.js","demo/node_modules/core-js/modules/es.typed-array.filter.js","demo/node_modules/core-js/modules/es.typed-array.find.js","demo/node_modules/core-js/modules/es.typed-array.find-index.js","demo/node_modules/core-js/modules/es.typed-array.for-each.js","demo/node_modules/core-js/modules/es.typed-array.includes.js","demo/node_modules/core-js/modules/es.typed-array.index-of.js","demo/node_modules/core-js/modules/es.typed-array.iterator.js","demo/node_modules/core-js/modules/es.typed-array.join.js","demo/node_modules/core-js/modules/es.typed-array.last-index-of.js","demo/node_modules/core-js/modules/es.typed-array.map.js","demo/node_modules/core-js/modules/es.typed-array.reduce.js","demo/node_modules/core-js/modules/es.typed-array.reduce-right.js","demo/node_modules/core-js/modules/es.typed-array.reverse.js","demo/node_modules/core-js/modules/es.typed-array.set.js","demo/node_modules/core-js/modules/es.typed-array.slice.js","demo/node_modules/core-js/modules/es.typed-array.some.js","demo/node_modules/core-js/modules/es.typed-array.sort.js","demo/node_modules/core-js/modules/es.typed-array.subarray.js","demo/node_modules/core-js/modules/es.typed-array.to-locale-string.js","demo/node_modules/core-js/modules/es.typed-array.to-string.js","demo/node_modules/raven-js/vendor/json-stringify-safe/stringify.js","demo/node_modules/raven-js/src/utils.js","demo/node_modules/raven-js/vendor/TraceKit/tracekit.js","demo/node_modules/raven-js/vendor/md5/md5.js","demo/node_modules/raven-js/src/configError.js","demo/node_modules/raven-js/src/console.js","demo/node_modules/raven-js/src/raven.js","demo/node_modules/raven-js/src/singleton.js","demo/node_modules/core-js/modules/es.array.find.js","demo/node_modules/core-js/internals/whitespaces.js","demo/node_modules/core-js/internals/string-trim.js","demo/node_modules/core-js/modules/es.number.constructor.js","demo/node_modules/core-js/modules/es.number.is-nan.js","demo/node_modules/core-js/modules/es.object.assign.js","demo/node_modules/core-js/internals/object-to-array.js","demo/node_modules/shr-buttons/dist/shr.mjs","demo/node_modules/core-js/modules/es.object.entries.js","node_modules/core-js/internals/global.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/indexed-object.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/to-indexed-object.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/has.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/set-global.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/native-weak-map.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/redefine.js","node_modules/core-js/internals/path.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/to-integer.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/to-absolute-index.js","node_modules/core-js/internals/array-includes.js","node_modules/core-js/internals/object-keys-internal.js","node_modules/core-js/internals/enum-bug-keys.js","node_modules/core-js/internals/object-get-own-property-names.js","node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/core-js/internals/own-keys.js","node_modules/core-js/internals/copy-constructor-properties.js","node_modules/core-js/internals/is-forced.js","node_modules/core-js/internals/export.js","node_modules/core-js/internals/is-array.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/create-property.js","node_modules/core-js/internals/native-symbol.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/internals/array-species-create.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/array-method-has-species-support.js","node_modules/core-js/modules/es.array.concat.js","node_modules/core-js/internals/a-function.js","node_modules/core-js/internals/function-bind-context.js","node_modules/core-js/internals/array-iteration.js","node_modules/core-js/internals/array-method-uses-to-length.js","node_modules/core-js/modules/es.array.filter.js","node_modules/core-js/internals/object-keys.js","node_modules/core-js/internals/object-create.js","node_modules/core-js/internals/object-define-properties.js","node_modules/core-js/internals/html.js","node_modules/core-js/internals/add-to-unscopables.js","node_modules/core-js/modules/es.array.find.js","node_modules/core-js/internals/call-with-safe-iteration-closing.js","node_modules/core-js/internals/iterators.js","node_modules/core-js/internals/is-array-iterator-method.js","node_modules/core-js/internals/to-string-tag-support.js","node_modules/core-js/internals/classof.js","node_modules/core-js/internals/get-iterator-method.js","node_modules/core-js/internals/array-from.js","node_modules/core-js/internals/check-correctness-of-iteration.js","node_modules/core-js/modules/es.array.from.js","node_modules/core-js/modules/es.array.includes.js","node_modules/core-js/internals/correct-prototype-getter.js","node_modules/core-js/internals/iterators-core.js","node_modules/core-js/internals/object-get-prototype-of.js","node_modules/core-js/internals/set-to-string-tag.js","node_modules/core-js/internals/create-iterator-constructor.js","node_modules/core-js/internals/object-set-prototype-of.js","node_modules/core-js/internals/a-possible-prototype.js","node_modules/core-js/internals/define-iterator.js","node_modules/core-js/modules/es.array.iterator.js","node_modules/core-js/internals/array-method-is-strict.js","node_modules/core-js/modules/es.array.join.js","node_modules/core-js/modules/es.array.map.js","node_modules/core-js/internals/inherit-if-required.js","node_modules/core-js/internals/string-trim.js","node_modules/core-js/modules/es.number.constructor.js","node_modules/core-js/modules/es.object.keys.js","node_modules/core-js/internals/object-to-string.js","node_modules/core-js/modules/es.object.to-string.js","node_modules/core-js/internals/regexp-flags.js","node_modules/core-js/internals/regexp-sticky-helpers.js","node_modules/core-js/internals/regexp-exec.js","node_modules/core-js/modules/es.regexp.exec.js","node_modules/core-js/modules/es.regexp.to-string.js","node_modules/core-js/internals/is-regexp.js","node_modules/core-js/internals/not-a-regexp.js","node_modules/core-js/internals/correct-is-regexp-logic.js","node_modules/core-js/modules/es.string.includes.js","node_modules/core-js/internals/string-multibyte.js","node_modules/core-js/modules/es.string.iterator.js","node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","node_modules/core-js/internals/same-value.js","node_modules/core-js/internals/regexp-exec-abstract.js","node_modules/core-js/modules/es.string.search.js","node_modules/core-js/internals/redefine-all.js","node_modules/core-js/internals/freezing.js","node_modules/core-js/internals/internal-metadata.js","node_modules/core-js/internals/iterate.js","node_modules/core-js/internals/an-instance.js","node_modules/core-js/internals/collection-weak.js","node_modules/core-js/internals/dom-iterables.js","node_modules/core-js/modules/es.weak-map.js","node_modules/core-js/internals/collection.js","node_modules/core-js/modules/web.dom-collections.iterator.js","node_modules/core-js/modules/es.array.every.js","node_modules/core-js/internals/array-for-each.js","node_modules/core-js/modules/es.array.for-each.js","node_modules/core-js/modules/es.array.index-of.js","node_modules/core-js/internals/object-assign.js","node_modules/core-js/modules/es.object.assign.js","node_modules/core-js/internals/species-constructor.js","node_modules/core-js/internals/advance-string-index.js","node_modules/core-js/modules/es.string.split.js","node_modules/core-js/internals/string-trim-forced.js","node_modules/core-js/modules/es.string.trim.js","node_modules/core-js/modules/web.dom-collections.for-each.js","node_modules/core-js/internals/whitespaces.js","node_modules/core-js/internals/native-url.js","node_modules/core-js/internals/string-punycode-to-ascii.js","node_modules/core-js/internals/get-iterator.js","node_modules/core-js/modules/web.url-search-params.js","node_modules/core-js/modules/web.url.js","node_modules/core-js/modules/es.array.some.js","node_modules/core-js/internals/this-number-value.js","node_modules/core-js/internals/string-repeat.js","node_modules/core-js/modules/es.number.to-fixed.js","node_modules/core-js/internals/object-to-array.js","node_modules/core-js/modules/es.object.entries.js","node_modules/core-js/modules/es.object.values.js","node_modules/core-js/modules/es.string.replace.js","node_modules/core-js/internals/object-get-own-property-names-external.js","node_modules/core-js/internals/well-known-symbol-wrapped.js","node_modules/core-js/internals/define-well-known-symbol.js","node_modules/core-js/modules/es.symbol.js","node_modules/core-js/modules/es.number.is-nan.js","node_modules/core-js/modules/es.object.get-own-property-descriptor.js","node_modules/rangetouch/dist/rangetouch.mjs","node_modules/core-js/modules/es.object.get-own-property-descriptors.js","node_modules/core-js/modules/es.string.match.js","node_modules/core-js/internals/task.js","node_modules/core-js/internals/native-promise-constructor.js","node_modules/core-js/internals/set-species.js","node_modules/core-js/internals/engine-is-ios.js","node_modules/core-js/internals/microtask.js","node_modules/core-js/modules/es.promise.js","node_modules/core-js/internals/new-promise-capability.js","node_modules/core-js/internals/promise-resolve.js","node_modules/core-js/internals/perform.js","node_modules/core-js/internals/host-report-errors.js","node_modules/core-js/modules/es.string.starts-with.js","src/js/utils/is.js","src/js/utils/animation.js","src/js/utils/browser.js","node_modules/core-js/internals/array-reduce.js","node_modules/core-js/modules/es.array.reduce.js","src/js/utils/objects.js","src/js/utils/elements.js","src/js/support.js","src/js/utils/events.js","src/js/utils/style.js","src/js/html5.js","src/js/utils/arrays.js","node_modules/core-js/modules/es.array.slice.js","node_modules/core-js/modules/es.regexp.constructor.js","src/js/utils/strings.js","src/js/utils/i18n.js","src/js/storage.js","src/js/utils/fetch.js","src/js/utils/load-sprite.js","node_modules/core-js/modules/es.math.trunc.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/states.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","node_modules/core-js/internals/math-sign.js","src/js/utils/load-image.js","node_modules/core-js/modules/es.math.sign.js","src/js/ui.js","src/js/listeners.js","node_modules/core-js/modules/es.array.splice.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/load-script.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","src/js/media.js","src/js/plugins/ads.js","node_modules/core-js/modules/es.array.find-index.js","node_modules/core-js/internals/array-last-index-of.js","node_modules/core-js/modules/es.array.last-index-of.js","src/js/plugins/preview-thumbnails.js","src/js/source.js","src/js/plyr.js","src/js/utils/numbers.js","demo/src/js/sources.js","demo/src/js/demo.js","demo/src/js/toggle-class.js"],"names":["navigator","commonjsGlobal","globalThis","window","global","self","createCommonjsModule","fn","module","exports","set","get","has","O","check","it","Math","global_1","Function","fails","exec","error","descriptors","Object","defineProperty","a","nativePropertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","objectPropertyIsEnumerable","f","call","1","V","descriptor","this","enumerable","createPropertyDescriptor","bitmap","value","configurable","writable","toString","classofRaw","slice","split","indexedObject","classof","requireObjectCoercible","undefined","TypeError","toIndexedObject","IndexedObject","isObject","toPrimitive","S","val","valueOf","hasOwnProperty","key","document","exist","createElement","documentCreateElement","ie8DomDefine","DESCRIPTORS","nativeGetOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","P","IE8_DOM_DEFINE","propertyIsEnumerableModule","anObject","String","nativeDefineProperty","objectDefineProperty","Attributes","hide","object","definePropertyModule","setGlobal","shared","store","push","version","mode","copyright","functionToString","WeakMap","nativeWeakMap","test","nativeFunctionToString","id","postfix","random","uid","concat","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","STATE","objectHas","internalState","enforce","getterFor","TYPE","state","type","redefine","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","source","join","prototype","ceil","floor","toInteger","argument","isNaN","min","toLength","max","toAbsoluteIndex","index","length","integer","arrayIncludes","IS_INCLUDES","$this","el","fromIndex","arrayIndexOf","objectKeysInternal","names","i","result","enumBugKeys","objectGetOwnPropertyNames","getOwnPropertyNames","internalObjectKeys","objectGetOwnPropertySymbols","getOwnPropertySymbols","Reflect","ownKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","copyConstructorProperties","target","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","isForced_1","require$$0","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","sham","aFunction","bindContext","that","b","c","apply","arguments","toObject","isArray","Array","arg","nativeSymbol","Symbol","wellKnownSymbol","name","NATIVE_SYMBOL","SPECIES","arraySpeciesCreate","originalArray","C","constructor","arrayMethods","specificCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","callbackfn","boundFunction","bind","sloppyArrayMethod","METHOD_NAME","method","internalForEach","arrayForEach","forEach","$","proto","callWithSafeIterationClosing","iterator","ENTRIES","returnMethod","iterators","ITERATOR","ArrayPrototype","isArrayIteratorMethod","Iterators","createProperty","propertyKey","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","getIteratorMethod","arrayFrom","arrayLike","step","argumentsLength","mapfn","mapping","iteratorMethod","next","done","SAFE_CLOSING","called","iteratorWithReturn","return","from","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","INCORRECT_ITERATION","iterable","objectKeys","objectDefineProperties","defineProperties","Properties","html","documentElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","write","lt","close","F","objectCreate","UNSCOPABLES","addToUnscopables","internalIncludes","includes","FAILS_ON_PRIMITIVES","nativeKeys","MATCH","isRegexp","isRegExp","validateStringMethodArguments","searchString","NAME","regexp","e","correctIsRegExpLogic","validateArguments","indexOf","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","stringAt","pos","CONVERT_TO_STRING","first","second","position","size","charCodeAt","charAt","correctPrototypeGetter","getPrototypeOf","ObjectPrototype","objectGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","BUGGY_SAFARI_ITERATORS","iteratorsCore","setToStringTag","TAG","returnThis","createIteratorConstructor","IteratorConstructor","objectSetPrototypeOf","setPrototypeOf","setter","correctSetter","validateSetPrototypeOfArguments","__proto__","IteratorsCore","defineIterator","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","setInternalState","iterated","point","codePointAt","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","COLLECTION_NAME","DOMIterables","Collection","CollectionPrototype","container","getElementById","addEventListener","event","classList","contains","remove","keyCode","setTimeout","focused","activeElement","add","ce","CustomEvent","cancelable","preventDefault","defaultPrevented","Error","params","evt","origPrevent","bubbles","createEvent","initCustomEvent","detail","Event","wrappedWellKnownSymbol","path","defineWellKnownSymbol","wrappedWellKnownSymbolModule","nativeGetOwnPropertyNames","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","HIDDEN","getOwnPropertyNamesExternal","$Symbol","JSON","nativeJSONStringify","stringify","TO_PRIMITIVE","SymbolRegistry","AllSymbols","ObjectPrototypeSymbols","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","nativeObjectCreate","D","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","$defineProperty","$defineProperties","symbols","enumKeys","l","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","wellKnownSymbols","k","for","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","internalIndexOf","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","es_array_iterator","kind","Arguments","nativeJoin","ES3_STRINGS","separator","arrayMethodHasSpeciesSupport","array","foo","Boolean","nativeSlice","SPECIES_SUPPORT","start","end","Constructor","n","fin","objectToString","regexpFlags","ignoreCase","multiline","unicode","sticky","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","regexpExec","nativeToString","RegExpPrototype","NOT_GENERIC","flags","INCORRECT_NAME","R","p","rf","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","fixRegexpWellKnownSymbolLogic","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","advanceStringIndex","regexpExecAbstract","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","fixRegExpWellKnownSymbolLogic","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","regExpExec","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","m","ch","capture","sameValue","is","x","y","SEARCH","nativeSearch","searcher","previousLastIndex","speciesConstructor","defaultConstructor","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","callRegExpExec","q","A","z","ArrayValues","ArrayIteratorMethods","nativeUrl","url","URL","searchParams","pathname","sort","href","URLSearchParams","username","host","hash","anInstance","nativeAssign","assign","objectAssign","B","chr","T","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","base","encode","input","currentValue","inputLength","counter","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","t","qMinusT","baseMinusT","redefineAll","getIterator","getInternalParamsState","getInternalIteratorState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","bytes","percentDecode","sequence","decodeURIComponent","deserialize","find","!","'","(",")","~","%20","serialize","encodeURIComponent","parseSearchParams","query","attribute","entry","attributes","shift","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","init","updateURL","hasOwn","URLSearchParamsPrototype","append","delete","splice","getAll","found","callback","USE_NATIVE_URL","EOF","web_urlSearchParams","getState","NativeURL","URLSearchParamsModule","getInternalSearchParamsState","getInternalURLState","pow","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","label","encoded","labels","toASCII","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","ipv4","parts","pop","parseInt","numbersSeen","ipv4Piece","number","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","unshift","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet"," ","\"","<",">","`","pathPercentEncodeSet","#","?","{","}","userinfoPercentEncodeSet","/",":",";","=","@","[","\\","]","^","|","code","specialSchemes","ftp","file","gopher","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","port","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","origin","getOrigin","protocol","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","search","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","_typeof","obj","_classCallCheck","instance","_defineProperties","props","_createClass","protoProps","staticProps","_defineProperty","ownKeys$1","enumerableOnly","filter","_objectSpread2","getOwnPropertyDescriptors","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","o","minLen","len","arr2","iteratorSupported","checkIfIteratorIsSupported","createIterator","items","serializeParam","deserializeParam","typeofSearchString","_fromString","_this","_entries","thisArg","searchArray","polyfillURLSearchParams","u","checkIfURLIsSupported","_URL","baseElement","doc","location","implementation","createHTMLDocument","head","anchorElement","body","enableSearchUpdate","enableSearchParamsUpdate","methodName","attributeName","_anchorElement","linkURLWithAnchorAttribute","_updateSearchParams","expectedPort","http:","https:","ftp:","addPortToOrigin","polyfillURL","setInterval","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","arrayFill","endPos","fill","nativeLastIndexOf","lastIndexOf","arrayLastIndexOf","FunctionPrototype","FunctionPrototypeToString","nameRE","defer","channel","variable","setSpecies","CONSTRUCTOR_NAME","namespace","getBuiltIn","iterate","BREAK","iterFn","setImmediate","clear","clearImmediate","process","MessageChannel","Dispatch","queue","run","runner","listener","post","postMessage","nextTick","now","port2","port1","onmessage","importScripts","removeChild","flush","last","notify","toggle","node","promise","task","userAgent","macrotask","require$$1","MutationObserver","WebKitMutationObserver","Promise","IS_NODE","queueMicrotaskDescriptor","queueMicrotask","parent","domain","exit","enter","createTextNode","observe","characterData","resolve","then","Internal","OwnPromiseCapability","PromiseWrapper","microtask","PromiseCapability","reject","$$resolve","$$reject","newPromiseCapability","promiseResolve","promiseCapability","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","fetch","versions","v8","newPromiseCapabilityModule","newGenericPromiseCapability","DISPATCH_EVENT","dispatchEvent","empty","FakePromise","PromiseRejectionEvent","all","isThenable","isReject","notified","chain","reactions","ok","reaction","exited","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","console","hostReportErrors","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","catch","r","capability","$promiseResolve","remaining","alreadyCalled","race","deleteCount","insertCount","actualDeleteCount","to","actualStart","nativeMatch","matcher","matchStr","internalFilter","internalMap","map","arrayReduce","memo","isRight","reduce","internalReduce","nativeIsFrozen","isFrozen","inheritIfRequired","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","getFlags","proxy","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","arrayBufferViewCore","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportProto","property","exportStatic","isView","klass","typedArraysConstructorsRequiresWrappers","toIndex","arrayBuffer","require$$2","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","log","LN2","packIEEE754","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","unpackIEEE754","nBits","NaN","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","view","count","isLittleEndian","intIndex","byteLength","byteOffset","pack","reverse","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toOffset","BYTES","typedArrayFrom","ArrayBufferModule","ArrayBufferViewCore","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","round","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","typedArrayOffset","$length","$len","typedArrayConstructor","arrayCopyWithin","copyWithin","inc","arrayEvery","arrayFilter","arrayFind","predicate","arrayFindIndex","createIncludes","arrayValues","ArrayIterators","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","arrayJoin","internalTypedArrayMap","middle","arraySlice","arraySome","arraySort","comparefn","begin","beginIndex","BYTES_PER_ELEMENT","arrayToLocaleString","toLocaleString","TO_LOCALE_BUG","Uint8ArrayPrototype","arrayToString","stringify_1","haystack","needle","serializer","cycleReplacer","stack","thisPos","Infinity","message","stringifyError","spaces","_window","getSerialize","isUndefined","what","isPlainObject","isString","supportsFetch","Headers","Request","Response","each","hasKey","truncate","substr","joinRegExp","patterns","sources","htmlElementAsString","elem","className","classes","attr","out","tagName","attrWhitelist","getAttribute","isOnlyOneTruthy","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","jsonSize","encodeURI","utf8Length","serializeValue","utils","isError","isErrorEvent","isDOMError","isDOMException","isFunction","isEmptyObject","_","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","wrappedCallback","original","normalizedData","objectMerge","obj1","obj2","objectFrozen","urlencode","pairs","uuid4","crypto","msCrypto","getRandomValues","pad","num","v","htmlTreeAsString","nextStr","height","sepLength","parentNode","isSameException","ex1","ex2","stacktrace","parseUrl","relative","track","orig","__raven__","__orig__","safeJoin","delimiter","serializeException","ex","depth","maxSize","serialized","serializeObject","acc","serializeKeysForMessage","usedKeys","sanitize","sanitizeKeys","safeInput","sanitizeRegExp","parse","o_O","sanitizeWorker","workerInput","TraceKit","collectWindowErrors","debug","_slice","ERROR_TYPES_RE","getLocationHref","report","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastException","lastExceptionStack","notifyHandlers","isWindowError","exception","inner","traceKitWindowOnError","msg","lineNo","colNo","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","line","column","func","_lastExceptionStack","_lastArgs","rethrow","incomplete","subscribe","onerror","installGlobalHandler","unsubscribe","uninstall","uninstallGlobalHandler","computeStackTraceFromStackProp","submatch","element","chrome","winjs","gecko","geckoEval","chromeEval","lines","isNative","columnNumber","xhr","XMLHttpRequest","send","status","responseText","sourceMaps","sourceMapAddress","stackInfo","initial","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","tracekit","safeAdd","lsw","md5cmn","s","cnt","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","rstr2binl","length8","rstr2hex","str2rstrUTF8","unescape","rawMD5","rstrMD5","rawHMACMD5","bkey","ipad","opad","rstrHMACMD5","md5_1","raw","hexHMACMD5","RavenConfigError","configError","console$1","level","originalConsoleLevel","originalConsole","sentryLevel","logger","wrapConsoleMethod","dsnKeys","dsnPattern","Date","_document","_navigator","keepOriginalCallback","Raven","_hasJSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","SENTRY_RELEASE","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","_lastHref","_resetBackoff","VERSION","config","dsn","_logDebug","globalOptions","setDSN","maxBreadcrumbs","autoBreadcrumbDefaults","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","_before","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","_promiseRejectionHandler","mechanism","handled","removeEventListener","trimHeadFrames","captureMessage","_getCaptureExceptionOptionsFromPlainObject","_handleStackInfo","currentOptions","exKeys","fingerprint","md5","__serialized__","initialCall","fileurl","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encodedOptions","email","globalServer","script","async","_triggerEvent","eventType","toUpperCase","createEventObject","fireEvent","_breadcrumbEventHandler","evtName","category","_keypressEventHandler","isContentEditable","timeout","clearTimeout","_captureUrlChange","parsedLoc","parsedTo","parsedFrom","_originalFunctionToString","wrappedBuiltIns","wrapTimeFn","originalCallback","function","wrapEventTarget","secure","handleEvent","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","onreadystatechange","origFetch","fetchInput","fetchData","response","attachEvent","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","consoleMethodCallback","builtin","installer","allowSecretKey","_processException","frame","_normalizeFrame","in_app","stackInfoUrl","prefixedMessage","transaction","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","User-Agent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","_setBackoffState","retry","getResponseHeader","baseData","project","platform","serverName","server_name","_sanitizeData","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","XDomainRequest","onload","setRequestHeader","evaluated","setUser","setReleaseContext","raven","_Raven","RavenConstructor","noConflict","singleton","Client","internalFind","SKIPS_HOLES","whitespace","ltrim","rtrim","NativeNumber","NumberPrototype","BROKEN_CLASSOF","NATIVE_TRIM","toNumber","radix","maxCode","digits","trim","NumberWrapper","TO_ENTRIES","objectToArray","getConstructor","instanceOf","isNullOrUndefined","isNodeList","Number","Element","constants","facebook","shareCount","og_object","engagement","popup","width","twitter","pinterest","github","stargazers_count","youtube","statistics","subscriberCount","defaults","displayZero","format","increment","tokens","storage","enabled","ttl","getJSONP","setAttribute","noop","Console","warn","matches","querySelectorAll","cloneNode","nextSibling","insertBefore","setAttributes","innerText","formatNumber","extend","Storage","supported","localStorage","getItem","setItem","removeItem","Shr","elements","trigger","querySelector","shr","networks","getCount","updateDisplay","listeners","share","openPopup","network","networkConfig","closed","focus","screenLeft","screen","left","screenTop","top","apiUrl","textContent","class","insertAdjacentElement","getDomain","watch","addedNodes","childList","subtree","global_1$1","fails$1","descriptors$1","objectPropertyIsEnumerable$1","createPropertyDescriptor$1","classofRaw$1","indexedObject$1","requireObjectCoercible$1","toIndexedObject$1","isObject$4","toPrimitive$1","PREFERRED_STRING","has$2","EXISTS","documentCreateElement$1","ie8DomDefine$1","objectGetOwnPropertyDescriptor$1","anObject$1","objectDefineProperty$1","createNonEnumerableProperty","setGlobal$1","sharedStore","inspectSource","nativeWeakMap$1","shared$1","uid$1","sharedKey$1","hiddenKeys$2","internalState$1","redefine$1","path$1","getBuiltIn$1","toInteger$1","toLength$1","toAbsoluteIndex$1","createMethod","arrayIncludes$2","objectKeysInternal$1","enumBugKeys$1","objectGetOwnPropertyNames$1","objectGetOwnPropertySymbols$1","ownKeys$2","copyConstructorProperties$1","isForced_1$1","_export$1","isArray$4","toObject$1","createProperty$1","nativeSymbol$1","useSymbolAsUid","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","wellKnownSymbol$1","arraySpeciesCreate$1","engineUserAgent","engineV8Version","arrayMethodHasSpeciesSupport$1","V8_VERSION","aFunction$3","functionBindContext","arrayIteration","some","every","findIndex","cache","thrower","arrayMethodUsesToLength","ACCESSORS","argument0","argument1","$filter","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","activeXDocument","objectKeys$1","objectDefineProperties$1","html$1","EmptyConstructor","scriptTag","content","LT","NullProtoObject","ActiveXObject","temp","parentWindow","NullProtoObjectViaActiveX","objectCreate$1","addToUnscopables$1","$find","callWithSafeIterationClosing$1","iterators$1","isArrayIteratorMethod$1","toStringTagSupport","classof$1","TO_STRING_TAG_SUPPORT","getIteratorMethod$1","arrayFrom$1","checkCorrectnessOfIteration$1","$includes","correctPrototypeGetter$1","objectGetPrototypeOf$1","iteratorsCore$1","setToStringTag$1","createIteratorConstructor$1","objectSetPrototypeOf$1","CORRECT_SETTER","aPossiblePrototype","defineIterator$1","es_array_iterator$1","arrayMethodIsStrict","STRICT_METHOD","$map","inheritIfRequired$1","dummy","Wrapper","NewTarget","NewTargetPrototype","stringTrim$1","require$$3","objectToString$1","regexpFlags$1","dotAll","RE","regexpStickyHelpers","UNSUPPORTED_Y","BROKEN_CARET","stickyHelpers","charsAdded","strCopy","regexpExec$1","isRegexp$1","notARegexp","correctIsRegexpLogic$1","notARegExp","stringMultibyte","codeAt","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","fixRegexpWellKnownSymbolLogic$1","sameValue$1","regexpExecAbstract$1","redefineAll$1","freezing","isExtensible","preventExtensions","internalMetadata","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","FREEZING","iterate_1","Result","stopped","AS_ENTRIES","IS_ITERATOR","stop","anInstance$1","internalStateGetterFor","ArrayIterationModule","uncaughtFrozenStore","frozen","UncaughtFrozenStore","findUncaughtFrozen","collectionWeak","ADDER","define","$has","domIterables$1","InternalWeakMap","enforceIternalState","IS_IE11","$WeakMap","common","IS_WEAK","NativeConstructor","NativePrototype","fixMethod","InternalMetadataModule","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","collection","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","$every","$forEach","arrayForEach$2","$indexOf","objectAssign$1","speciesConstructor$1","advanceStringIndex$1","$trim","forcedStringTrimMethod","nativeUrl$1","getIterator$1","entryNext","entriesIndex","sliceIndex","web_urlSearchParams$1","$some","stringRepeat","repeat","nativeToFixed","toFixed","fractionDigits","thisNumberValue","fractDigits","multiply","c2","divide","dataToString","x2","objectToArray$1","$entries","$values","UNSAFE_SUBSTITUTE","objectGetOwnPropertyNamesExternal$1","wellKnownSymbolWrapped","$stringify","StringToSymbolRegistry","SymbolToStringRegistry","properties","IS_OBJECT_PROTOTYPE","FORCED_JSON_STRINGIFY","space","addCSS","thumbWidth","getDecimalPlaces","parseFloat","RangeTouch","rangeTouch","userSelect","webKitUserSelect","touchAction","changedTouches","getBoundingClientRect","clientX","disabled","nativePromiseConstructor","setSpecies$1","engineIsIos","IS_IOS","task$2","nativeThen","microtask$1","newPromiseCapability$2","promiseResolve$1","perform$1","NativePromise","nativeStartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","events","isEmpty","is$2","KeyboardEvent","TextTrack","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","repaint","delay","hidden","offsetHeight","browser","isIE","documentMode","isEdge","isWebkit","isIPhone","isIos","IS_RIGHT","$reduce","right","getDeep","_len","_key","targets","child","sibling","_ref","_ref3","_ref4","text","insertElement","removeElement","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","toggleHidden","toggleClass","force","hasClass","getElements","getElement","setFocus","tabFocus","preventScroll","classNames","range","defaultCodecs","audio/ogg","audio/wav","video/webm","video/mp4","video/ogg","support","audio","video","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","touch","transitions","reducedMotion","matchMedia","supportsPassiveListeners","toggleListener","passive","eventListeners","on","off","once","_this2","onceCallback","triggerEvent","plyr","unbindListeners","ready","_this3","validateRatio","reduceAspectRatio","ratio","_ratio","divider","getDivider","w","h","getAspectRatio","embed","_this$media","videoWidth","videoHeight","setAspectRatio","isVideo","_ref2","padding","paddingBottom","isVimeo","transform","videoFixedRatio","html5","getSources","getQualityOptions","quality","setup","player","speed","onChange","_player$media","currentTime","paused","preload","playbackRate","play","load","cancelRequests","blankVideo","dedupe","0","replaceAll","toTitleCase","toPascalCase","getHTML","innerHTML","resources","vimeo","i18n","{seektime}","seekTime","{title}","title","json","responseType","loadSprite","hasId","exists","update","useStorage","cached","trunc","getHours","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","cors","iconUrl","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","duration","seekTooltip","tooltip","toggleNativeControls","createIcon","iconPath","iconPrefix","icon","createElementNS","aria-hidden","focusable","use","setAttributeNS","createLabel","createBadge","badge","menu","createButton","buttonType","toCamelCase","labelPressed","iconPressed","control","button","createRange","autocomplete","role","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","updateRangeFill","createProgress","suffixKey","played","suffix","createTime","attrs","bindMenuItemShortcuts","menuItem","which","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","_ref$badge","_ref$checked","checked","aria-checked","flex","children","currentTrack","forceHours","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","_this4","getPercentage","getElementsByTagName","nodeValue","setProgress","buffered","percent","setProperty","updateSeekTooltip","_this5","tooltips","visible","show","clientRect","pageX","timeUpdate","invert","invertTime","seeking","durationUpdate","hasDuration","displayDuration","toggleMenuButton","setting","updateSetting","pane","panels","default","getLabel","setQualityMenu","_this6","checkMenu","getBadge","sorting","setCaptionsMenu","_this7","tracks","getTracks","toggled","language","setSpeedMenu","_this8","minimumSpeed","maximumSpeed","firstItem","toggleMenu","composedPath","isMenuItem","getMenuSize","tab","clone","opacity","removeAttribute","scrollWidth","scrollHeight","_this9","restore","propertyName","setDownloadUrl","download","_this10","defaultAttributes","progressContainer","aria-haspopup","aria-controls","aria-expanded","home","backButton","urls","isEmbed","inject","_this11","seektime","addProperty","controlPressed","_this$config","safe","parser","buildUrlParams","isYouTube","insertAfter","languages","userLanguage","active","trackEvents","_this$captions","currentTrackNode","languageExists","updateCues","setLanguage","activeClass","findTrack","enableTextTrack","sortIsDefault","sorted","getCurrentTrack","cues","activeCues","cue","getCueAsHTML","cueText","caption","autoplay","autopause","toggleInvert","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","reset","advertisement","qualityBadge","2160","1440","1080","720","576","480","sdk","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","loading","hover","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","publisherId","tagUrl","byline","portrait","transparent","sidedock","noCookie","rel","showinfo","iv_load_policy","modestbranding","providers","types","Fullscreen","prefix","scrollPosition","forceFallback","trapFocus","scrollX","scrollY","scrollTo","overflow","viewport","hasProperty","cleanupViewport","shiftKey","webkitEnterFullscreen","toggleFallback","requestFullscreen","navigationUI","webkitExitFullscreen","action","cancelFullScreen","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","pre","mathSign","loadImage","minWidth","image","Image","naturalWidth","addStyleHook","build","checkPlaying","setTitle","setPoster","togglePoster","enable","backgroundImage","backgroundSize","toggleControls","checkLoading","timers","controlsElement","recentTouchSeek","lastSeekTime","Listeners","lastKey","focusTimer","lastKeyDown","handleKey","setTabFocus","firstTouch","altKey","ctrlKey","metaKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","usingNative","timeStamp","wasKeyDown","setPlayerSize","measure","rect","resized","_player$fullscreen","isEnter","_setPlayerSize","firstChild","_getAspectRatio$call2","videoX","videoY","maxWidth","margin","setGutter","isAudio","ended","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","_map2","deltaX","deltaY","direction","loadjs_umd","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isLegacyIECss","maxTries","numRetries","beforeCallbackFn","pathStripped","relList","as","onbeforeload","ev","sheet","cssText","loadjs","paths","arg1","loadFn","numWaiting","loadFiles","returnPromise","deps","bundleIds","isDefined","factory","loadScript","assurePlaybackState","hasPlayed","Vimeo","gesture","$2","thumbnail_large","Player","disableTextTrack","restorePause","setVolume","setCurrentTime","setPlaybackRate","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","_ref$cues","strippedCues","createDocumentFragment","stripHTML","getPaused","seconds","YT","onYouTubeIframeAPIReady","getTitle","videoId","currentId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","2","5","100","101","150","onPlaybackRateChange","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","speeds","getAvailablePlaybackRates","clearInterval","buffering","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","initialized","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","managerPromise","google","ima","destroy","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","STARTED","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","LOG","adError","getMessage","cancel","addCuePoints","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","zIndex","_this12","_this13","AV_PUBLISHERID","AV_CHANNELID","AV_URL","AV_WIDTH","AV_HEIGHT","AV_CDIM2","$findIndex","arrayLastIndexOf$1","fitRatio","outer","PreviewThumbnails","thumbnails","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","getThumbnail","vttDataString","processedList","thumbnail","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","matchTimes","endTime","urlPrefix","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","clientWidth","sizeSpecifiedInCSS","thumbAspectRatio","thumbHeight","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","previewPos","_fitRatio","multiplier","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","change","_sources$","_sources$$provider","crossorigin","Plyr","failed","jQuery","getProviderByUrl","truthy","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","realDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","clamp","updateStorage","prev","closest","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","env","srclang","prod","dev","historySupport","currentType","hasCurrentType","parentElement","cite","setSource"],"mappings":"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","file":"demo.min.js","sourcesContent":["typeof navigator === \"object\" && (function () {\n\t'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar O = 'object';\n\tvar check = function (it) {\n\t return it && it.Math == Math && it;\n\t};\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global_1 =\n\t // eslint-disable-next-line no-undef\n\t check(typeof globalThis == O && globalThis) ||\n\t check(typeof window == O && window) ||\n\t check(typeof self == O && self) ||\n\t check(typeof commonjsGlobal == O && commonjsGlobal) ||\n\t // eslint-disable-next-line no-new-func\n\t Function('return this')();\n\n\tvar fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (error) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar descriptors = !fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\n\tvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n\t// Nashorn ~ JDK8 bug\n\tvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n\tvar f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n\t var descriptor = getOwnPropertyDescriptor(this, V);\n\t return !!descriptor && descriptor.enumerable;\n\t} : nativePropertyIsEnumerable;\n\n\tvar objectPropertyIsEnumerable = {\n\t\tf: f\n\t};\n\n\tvar createPropertyDescriptor = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar toString = {}.toString;\n\n\tvar classofRaw = function (it) {\n\t return toString.call(it).slice(8, -1);\n\t};\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\n\n\n\tvar split = ''.split;\n\n\tvar indexedObject = fails(function () {\n\t // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n\t // eslint-disable-next-line no-prototype-builtins\n\t return !Object('z').propertyIsEnumerable(0);\n\t}) ? function (it) {\n\t return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);\n\t} : Object;\n\n\t// `RequireObjectCoercible` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\n\tvar requireObjectCoercible = function (it) {\n\t if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n\t// toObject with fallback for non-array-like ES3 strings\n\n\n\n\tvar toIndexedObject = function (it) {\n\t return indexedObject(requireObjectCoercible(it));\n\t};\n\n\tvar isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar toPrimitive = function (it, S) {\n\t if (!isObject(it)) return it;\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n\t if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n\t if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\n\tvar has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar document$1 = global_1.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar exist = isObject(document$1) && isObject(document$1.createElement);\n\n\tvar documentCreateElement = function (it) {\n\t return exist ? document$1.createElement(it) : {};\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar ie8DomDefine = !descriptors && !fails(function () {\n\t return Object.defineProperty(documentCreateElement('div'), 'a', {\n\t get: function () { return 7; }\n\t }).a != 7;\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n\tvar f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n\t O = toIndexedObject(O);\n\t P = toPrimitive(P, true);\n\t if (ie8DomDefine) try {\n\t return nativeGetOwnPropertyDescriptor(O, P);\n\t } catch (error) { /* empty */ }\n\t if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);\n\t};\n\n\tvar objectGetOwnPropertyDescriptor = {\n\t\tf: f$1\n\t};\n\n\tvar anObject = function (it) {\n\t if (!isObject(it)) {\n\t throw TypeError(String(it) + ' is not an object');\n\t } return it;\n\t};\n\n\tvar nativeDefineProperty = Object.defineProperty;\n\n\tvar f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n\t anObject(O);\n\t P = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if (ie8DomDefine) try {\n\t return nativeDefineProperty(O, P, Attributes);\n\t } catch (error) { /* empty */ }\n\t if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n\t if ('value' in Attributes) O[P] = Attributes.value;\n\t return O;\n\t};\n\n\tvar objectDefineProperty = {\n\t\tf: f$2\n\t};\n\n\tvar hide = descriptors ? function (object, key, value) {\n\t return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar setGlobal = function (key, value) {\n\t try {\n\t hide(global_1, key, value);\n\t } catch (error) {\n\t global_1[key] = value;\n\t } return value;\n\t};\n\n\tvar isPure = false;\n\n\tvar shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = global_1[SHARED] || setGlobal(SHARED, {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: '3.1.3',\n\t mode: 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar functionToString = shared('native-function-to-string', Function.toString);\n\n\tvar WeakMap$1 = global_1.WeakMap;\n\n\tvar nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(functionToString.call(WeakMap$1));\n\n\tvar id = 0;\n\tvar postfix = Math.random();\n\n\tvar uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n\t};\n\n\tvar keys = shared('keys');\n\n\tvar sharedKey = function (key) {\n\t return keys[key] || (keys[key] = uid(key));\n\t};\n\n\tvar hiddenKeys = {};\n\n\tvar WeakMap$2 = global_1.WeakMap;\n\tvar set, get, has$1;\n\n\tvar enforce = function (it) {\n\t return has$1(it) ? get(it) : set(it, {});\n\t};\n\n\tvar getterFor = function (TYPE) {\n\t return function (it) {\n\t var state;\n\t if (!isObject(it) || (state = get(it)).type !== TYPE) {\n\t throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n\t } return state;\n\t };\n\t};\n\n\tif (nativeWeakMap) {\n\t var store = new WeakMap$2();\n\t var wmget = store.get;\n\t var wmhas = store.has;\n\t var wmset = store.set;\n\t set = function (it, metadata) {\n\t wmset.call(store, it, metadata);\n\t return metadata;\n\t };\n\t get = function (it) {\n\t return wmget.call(store, it) || {};\n\t };\n\t has$1 = function (it) {\n\t return wmhas.call(store, it);\n\t };\n\t} else {\n\t var STATE = sharedKey('state');\n\t hiddenKeys[STATE] = true;\n\t set = function (it, metadata) {\n\t hide(it, STATE, metadata);\n\t return metadata;\n\t };\n\t get = function (it) {\n\t return has(it, STATE) ? it[STATE] : {};\n\t };\n\t has$1 = function (it) {\n\t return has(it, STATE);\n\t };\n\t}\n\n\tvar internalState = {\n\t set: set,\n\t get: get,\n\t has: has$1,\n\t enforce: enforce,\n\t getterFor: getterFor\n\t};\n\n\tvar redefine = createCommonjsModule(function (module) {\n\tvar getInternalState = internalState.get;\n\tvar enforceInternalState = internalState.enforce;\n\tvar TEMPLATE = String(functionToString).split('toString');\n\n\tshared('inspectSource', function (it) {\n\t return functionToString.call(it);\n\t});\n\n\t(module.exports = function (O, key, value, options) {\n\t var unsafe = options ? !!options.unsafe : false;\n\t var simple = options ? !!options.enumerable : false;\n\t var noTargetGet = options ? !!options.noTargetGet : false;\n\t if (typeof value == 'function') {\n\t if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n\t enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n\t }\n\t if (O === global_1) {\n\t if (simple) O[key] = value;\n\t else setGlobal(key, value);\n\t return;\n\t } else if (!unsafe) {\n\t delete O[key];\n\t } else if (!noTargetGet && O[key]) {\n\t simple = true;\n\t }\n\t if (simple) O[key] = value;\n\t else hide(O, key, value);\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, 'toString', function toString() {\n\t return typeof this == 'function' && getInternalState(this).source || functionToString.call(this);\n\t});\n\t});\n\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\n\t// `ToInteger` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tointeger\n\tvar toInteger = function (argument) {\n\t return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n\t};\n\n\tvar min = Math.min;\n\n\t// `ToLength` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tolength\n\tvar toLength = function (argument) {\n\t return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n\t};\n\n\tvar max = Math.max;\n\tvar min$1 = Math.min;\n\n\t// Helper for a popular repeating case of the spec:\n\t// Let integer be ? ToInteger(index).\n\t// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\n\tvar toAbsoluteIndex = function (index, length) {\n\t var integer = toInteger(index);\n\t return integer < 0 ? max(integer + length, 0) : min$1(integer, length);\n\t};\n\n\t// `Array.prototype.{ indexOf, includes }` methods implementation\n\t// false -> Array#indexOf\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t// true -> Array#includes\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\tvar arrayIncludes = function (IS_INCLUDES) {\n\t return function ($this, el, fromIndex) {\n\t var O = toIndexedObject($this);\n\t var length = toLength(O.length);\n\t var index = toAbsoluteIndex(fromIndex, length);\n\t var value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t // eslint-disable-next-line no-self-compare\n\t if (IS_INCLUDES && el != el) while (length > index) {\n\t value = O[index++];\n\t // eslint-disable-next-line no-self-compare\n\t if (value != value) return true;\n\t // Array#indexOf ignores holes, Array#includes - not\n\t } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n\t if (O[index] === el) return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n\tvar arrayIndexOf = arrayIncludes(false);\n\n\tvar objectKeysInternal = function (object, names) {\n\t var O = toIndexedObject(object);\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while (names.length > i) if (has(O, key = names[i++])) {\n\t ~arrayIndexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n\t// IE8- don't enum bug keys\n\tvar enumBugKeys = [\n\t 'constructor',\n\t 'hasOwnProperty',\n\t 'isPrototypeOf',\n\t 'propertyIsEnumerable',\n\t 'toLocaleString',\n\t 'toString',\n\t 'valueOf'\n\t];\n\n\t// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\n\n\n\n\tvar hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');\n\n\tvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n\t return objectKeysInternal(O, hiddenKeys$1);\n\t};\n\n\tvar objectGetOwnPropertyNames = {\n\t\tf: f$3\n\t};\n\n\tvar f$4 = Object.getOwnPropertySymbols;\n\n\tvar objectGetOwnPropertySymbols = {\n\t\tf: f$4\n\t};\n\n\tvar Reflect = global_1.Reflect;\n\n\t// all object keys, includes non-enumerable and symbols\n\tvar ownKeys = Reflect && Reflect.ownKeys || function ownKeys(it) {\n\t var keys = objectGetOwnPropertyNames.f(anObject(it));\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n\t return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n\t};\n\n\tvar copyConstructorProperties = function (target, source) {\n\t var keys = ownKeys(source);\n\t var defineProperty = objectDefineProperty.f;\n\t var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n\t }\n\t};\n\n\tvar replacement = /#|\\.prototype\\./;\n\n\tvar isForced = function (feature, detection) {\n\t var value = data[normalize(feature)];\n\t return value == POLYFILL ? true\n\t : value == NATIVE ? false\n\t : typeof detection == 'function' ? fails(detection)\n\t : !!detection;\n\t};\n\n\tvar normalize = isForced.normalize = function (string) {\n\t return String(string).replace(replacement, '.').toLowerCase();\n\t};\n\n\tvar data = isForced.data = {};\n\tvar NATIVE = isForced.NATIVE = 'N';\n\tvar POLYFILL = isForced.POLYFILL = 'P';\n\n\tvar isForced_1 = isForced;\n\n\tvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\n\n\n\n\n\n\t/*\n\t options.target - name of the target object\n\t options.global - target is the global object\n\t options.stat - export as static methods of target\n\t options.proto - export as prototype methods of target\n\t options.real - real prototype method for the `pure` version\n\t options.forced - export even if the native feature is available\n\t options.bind - bind methods to the target, required for the `pure` version\n\t options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n\t options.unsafe - use the simple assignment of property instead of delete + defineProperty\n\t options.sham - add a flag to not completely full polyfills\n\t options.enumerable - export as enumerable property\n\t options.noTargetGet - prevent calling a getter on target\n\t*/\n\tvar _export = function (options, source) {\n\t var TARGET = options.target;\n\t var GLOBAL = options.global;\n\t var STATIC = options.stat;\n\t var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\t if (GLOBAL) {\n\t target = global_1;\n\t } else if (STATIC) {\n\t target = global_1[TARGET] || setGlobal(TARGET, {});\n\t } else {\n\t target = (global_1[TARGET] || {}).prototype;\n\t }\n\t if (target) for (key in source) {\n\t sourceProperty = source[key];\n\t if (options.noTargetGet) {\n\t descriptor = getOwnPropertyDescriptor$1(target, key);\n\t targetProperty = descriptor && descriptor.value;\n\t } else targetProperty = target[key];\n\t FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n\t // contained in target\n\t if (!FORCED && targetProperty !== undefined) {\n\t if (typeof sourceProperty === typeof targetProperty) continue;\n\t copyConstructorProperties(sourceProperty, targetProperty);\n\t }\n\t // add a flag to not completely full polyfills\n\t if (options.sham || (targetProperty && targetProperty.sham)) {\n\t hide(sourceProperty, 'sham', true);\n\t }\n\t // extend global\n\t redefine(target, key, sourceProperty, options);\n\t }\n\t};\n\n\tvar aFunction = function (it) {\n\t if (typeof it != 'function') {\n\t throw TypeError(String(it) + ' is not a function');\n\t } return it;\n\t};\n\n\t// optional / simple context binding\n\tvar bindContext = function (fn, that, length) {\n\t aFunction(fn);\n\t if (that === undefined) return fn;\n\t switch (length) {\n\t case 0: return function () {\n\t return fn.call(that);\n\t };\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\t// `ToObject` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toobject\n\tvar toObject = function (argument) {\n\t return Object(requireObjectCoercible(argument));\n\t};\n\n\t// `IsArray` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isarray\n\tvar isArray = Array.isArray || function isArray(arg) {\n\t return classofRaw(arg) == 'Array';\n\t};\n\n\tvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {\n\t // Chrome 38 Symbol has incorrect toString conversion\n\t // eslint-disable-next-line no-undef\n\t return !String(Symbol());\n\t});\n\n\tvar Symbol$1 = global_1.Symbol;\n\tvar store$1 = shared('wks');\n\n\tvar wellKnownSymbol = function (name) {\n\t return store$1[name] || (store$1[name] = nativeSymbol && Symbol$1[name]\n\t || (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name));\n\t};\n\n\tvar SPECIES = wellKnownSymbol('species');\n\n\t// `ArraySpeciesCreate` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\n\tvar arraySpeciesCreate = function (originalArray, length) {\n\t var C;\n\t if (isArray(originalArray)) {\n\t C = originalArray.constructor;\n\t // cross-realm fallback\n\t if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n\t else if (isObject(C)) {\n\t C = C[SPECIES];\n\t if (C === null) C = undefined;\n\t }\n\t } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n\t};\n\n\t// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\n\t// 0 -> Array#forEach\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t// 1 -> Array#map\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t// 2 -> Array#filter\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t// 3 -> Array#some\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t// 4 -> Array#every\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.every\n\t// 5 -> Array#find\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t// 6 -> Array#findIndex\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\tvar arrayMethods = function (TYPE, specificCreate) {\n\t var IS_MAP = TYPE == 1;\n\t var IS_FILTER = TYPE == 2;\n\t var IS_SOME = TYPE == 3;\n\t var IS_EVERY = TYPE == 4;\n\t var IS_FIND_INDEX = TYPE == 6;\n\t var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n\t var create = specificCreate || arraySpeciesCreate;\n\t return function ($this, callbackfn, that) {\n\t var O = toObject($this);\n\t var self = indexedObject(O);\n\t var boundFunction = bindContext(callbackfn, that, 3);\n\t var length = toLength(self.length);\n\t var index = 0;\n\t var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n\t var value, result;\n\t for (;length > index; index++) if (NO_HOLES || index in self) {\n\t value = self[index];\n\t result = boundFunction(value, index, O);\n\t if (TYPE) {\n\t if (IS_MAP) target[index] = result; // map\n\t else if (result) switch (TYPE) {\n\t case 3: return true; // some\n\t case 5: return value; // find\n\t case 6: return index; // findIndex\n\t case 2: target.push(value); // filter\n\t } else if (IS_EVERY) return false; // every\n\t }\n\t }\n\t return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n\t };\n\t};\n\n\tvar sloppyArrayMethod = function (METHOD_NAME, argument) {\n\t var method = [][METHOD_NAME];\n\t return !method || !fails(function () {\n\t // eslint-disable-next-line no-useless-call,no-throw-literal\n\t method.call(null, argument || function () { throw 1; }, 1);\n\t });\n\t};\n\n\tvar internalForEach = arrayMethods(0);\n\tvar SLOPPY_METHOD = sloppyArrayMethod('forEach');\n\n\t// `Array.prototype.forEach` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\tvar arrayForEach = SLOPPY_METHOD ? function forEach(callbackfn /* , thisArg */) {\n\t return internalForEach(this, callbackfn, arguments[1]);\n\t} : [].forEach;\n\n\t// `Array.prototype.forEach` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t_export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, {\n\t forEach: arrayForEach\n\t});\n\n\t// call something on iterator step with safe closing on error\n\tvar callWithSafeIterationClosing = function (iterator, fn, value, ENTRIES) {\n\t try {\n\t return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n\t // 7.4.6 IteratorClose(iterator, completion)\n\t } catch (error) {\n\t var returnMethod = iterator['return'];\n\t if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n\t throw error;\n\t }\n\t};\n\n\tvar iterators = {};\n\n\tvar ITERATOR = wellKnownSymbol('iterator');\n\tvar ArrayPrototype = Array.prototype;\n\n\t// check on default Array iterator\n\tvar isArrayIteratorMethod = function (it) {\n\t return it !== undefined && (iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n\t};\n\n\tvar createProperty = function (object, key, value) {\n\t var propertyKey = toPrimitive(key);\n\t if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));\n\t else object[propertyKey] = value;\n\t};\n\n\tvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\t// ES3 wrong here\n\tvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n\t// fallback for IE11 Script Access Denied error\n\tvar tryGet = function (it, key) {\n\t try {\n\t return it[key];\n\t } catch (error) { /* empty */ }\n\t};\n\n\t// getting tag from ES6+ `Object.prototype.toString`\n\tvar classof = function (it) {\n\t var O, tag, result;\n\t return it === undefined ? 'Undefined' : it === null ? 'Null'\n\t // @@toStringTag case\n\t : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n\t // builtinTag case\n\t : CORRECT_ARGUMENTS ? classofRaw(O)\n\t // ES3 arguments fallback\n\t : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n\t};\n\n\tvar ITERATOR$1 = wellKnownSymbol('iterator');\n\n\tvar getIteratorMethod = function (it) {\n\t if (it != undefined) return it[ITERATOR$1]\n\t || it['@@iterator']\n\t || iterators[classof(it)];\n\t};\n\n\t// `Array.from` method\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\tvar arrayFrom = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n\t var O = toObject(arrayLike);\n\t var C = typeof this == 'function' ? this : Array;\n\t var argumentsLength = arguments.length;\n\t var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n\t var mapping = mapfn !== undefined;\n\t var index = 0;\n\t var iteratorMethod = getIteratorMethod(O);\n\t var length, result, step, iterator;\n\t if (mapping) mapfn = bindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n\t // if the target is not iterable or it's an array with the default iterator - use a simple case\n\t if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n\t iterator = iteratorMethod.call(O);\n\t result = new C();\n\t for (;!(step = iterator.next()).done; index++) {\n\t createProperty(result, index, mapping\n\t ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n\t : step.value\n\t );\n\t }\n\t } else {\n\t length = toLength(O.length);\n\t result = new C(length);\n\t for (;length > index; index++) {\n\t createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n\t }\n\t }\n\t result.length = index;\n\t return result;\n\t};\n\n\tvar ITERATOR$2 = wellKnownSymbol('iterator');\n\tvar SAFE_CLOSING = false;\n\n\ttry {\n\t var called = 0;\n\t var iteratorWithReturn = {\n\t next: function () {\n\t return { done: !!called++ };\n\t },\n\t 'return': function () {\n\t SAFE_CLOSING = true;\n\t }\n\t };\n\t iteratorWithReturn[ITERATOR$2] = function () {\n\t return this;\n\t };\n\t // eslint-disable-next-line no-throw-literal\n\t Array.from(iteratorWithReturn, function () { throw 2; });\n\t} catch (error) { /* empty */ }\n\n\tvar checkCorrectnessOfIteration = function (exec, SKIP_CLOSING) {\n\t if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n\t var ITERATION_SUPPORT = false;\n\t try {\n\t var object = {};\n\t object[ITERATOR$2] = function () {\n\t return {\n\t next: function () {\n\t return { done: ITERATION_SUPPORT = true };\n\t }\n\t };\n\t };\n\t exec(object);\n\t } catch (error) { /* empty */ }\n\t return ITERATION_SUPPORT;\n\t};\n\n\tvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n\t Array.from(iterable);\n\t});\n\n\t// `Array.from` method\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\t_export({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n\t from: arrayFrom\n\t});\n\n\t// 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\tvar objectKeys = Object.keys || function keys(O) {\n\t return objectKeysInternal(O, enumBugKeys);\n\t};\n\n\tvar objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n\t anObject(O);\n\t var keys = objectKeys(Properties);\n\t var length = keys.length;\n\t var i = 0;\n\t var key;\n\t while (length > i) objectDefineProperty.f(O, key = keys[i++], Properties[key]);\n\t return O;\n\t};\n\n\tvar document$2 = global_1.document;\n\n\tvar html = document$2 && document$2.documentElement;\n\n\tvar IE_PROTO = sharedKey('IE_PROTO');\n\n\tvar PROTOTYPE = 'prototype';\n\tvar Empty = function () { /* empty */ };\n\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\n\tvar createDict = function () {\n\t // Thrash, waste and sodomy: IE GC bug\n\t var iframe = documentCreateElement('iframe');\n\t var length = enumBugKeys.length;\n\t var lt = '<';\n\t var script = 'script';\n\t var gt = '>';\n\t var js = 'java' + script + ':';\n\t var iframeDocument;\n\t iframe.style.display = 'none';\n\t html.appendChild(iframe);\n\t iframe.src = String(js);\n\t iframeDocument = iframe.contentWindow.document;\n\t iframeDocument.open();\n\t iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n\t iframeDocument.close();\n\t createDict = iframeDocument.F;\n\t while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n\t return createDict();\n\t};\n\n\t// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n\tvar objectCreate = Object.create || function create(O, Properties) {\n\t var result;\n\t if (O !== null) {\n\t Empty[PROTOTYPE] = anObject(O);\n\t result = new Empty();\n\t Empty[PROTOTYPE] = null;\n\t // add \"__proto__\" for Object.getPrototypeOf polyfill\n\t result[IE_PROTO] = O;\n\t } else result = createDict();\n\t return Properties === undefined ? result : objectDefineProperties(result, Properties);\n\t};\n\n\thiddenKeys[IE_PROTO] = true;\n\n\tvar UNSCOPABLES = wellKnownSymbol('unscopables');\n\tvar ArrayPrototype$1 = Array.prototype;\n\n\t// Array.prototype[@@unscopables]\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\tif (ArrayPrototype$1[UNSCOPABLES] == undefined) {\n\t hide(ArrayPrototype$1, UNSCOPABLES, objectCreate(null));\n\t}\n\n\t// add a key to Array.prototype[@@unscopables]\n\tvar addToUnscopables = function (key) {\n\t ArrayPrototype$1[UNSCOPABLES][key] = true;\n\t};\n\n\tvar internalIncludes = arrayIncludes(true);\n\n\t// `Array.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t_export({ target: 'Array', proto: true }, {\n\t includes: function includes(el /* , fromIndex = 0 */) {\n\t return internalIncludes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables('includes');\n\n\tvar FAILS_ON_PRIMITIVES = fails(function () { objectKeys(1); });\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\t_export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n\t keys: function keys(it) {\n\t return objectKeys(toObject(it));\n\t }\n\t});\n\n\tvar MATCH = wellKnownSymbol('match');\n\n\t// `IsRegExp` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isregexp\n\tvar isRegexp = function (it) {\n\t var isRegExp;\n\t return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');\n\t};\n\n\t// helper for String#{startsWith, endsWith, includes}\n\n\n\n\tvar validateStringMethodArguments = function (that, searchString, NAME) {\n\t if (isRegexp(searchString)) {\n\t throw TypeError('String.prototype.' + NAME + \" doesn't accept regex\");\n\t } return String(requireObjectCoercible(that));\n\t};\n\n\tvar MATCH$1 = wellKnownSymbol('match');\n\n\tvar correctIsRegexpLogic = function (METHOD_NAME) {\n\t var regexp = /./;\n\t try {\n\t '/./'[METHOD_NAME](regexp);\n\t } catch (e) {\n\t try {\n\t regexp[MATCH$1] = false;\n\t return '/./'[METHOD_NAME](regexp);\n\t } catch (f) { /* empty */ }\n\t } return false;\n\t};\n\n\t// `String.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n\t_export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, {\n\t includes: function includes(searchString /* , position = 0 */) {\n\t return !!~validateStringMethodArguments(this, searchString, 'includes')\n\t .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// CONVERT_TO_STRING: true -> String#at\n\t// CONVERT_TO_STRING: false -> String#codePointAt\n\tvar stringAt = function (that, pos, CONVERT_TO_STRING) {\n\t var S = String(requireObjectCoercible(that));\n\t var position = toInteger(pos);\n\t var size = S.length;\n\t var first, second;\n\t if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n\t first = S.charCodeAt(position);\n\t return first < 0xD800 || first > 0xDBFF || position + 1 === size\n\t || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n\t ? CONVERT_TO_STRING ? S.charAt(position) : first\n\t : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n\t};\n\n\tvar correctPrototypeGetter = !fails(function () {\n\t function F() { /* empty */ }\n\t F.prototype.constructor = null;\n\t return Object.getPrototypeOf(new F()) !== F.prototype;\n\t});\n\n\tvar IE_PROTO$1 = sharedKey('IE_PROTO');\n\tvar ObjectPrototype = Object.prototype;\n\n\t// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\n\tvar objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) {\n\t O = toObject(O);\n\t if (has(O, IE_PROTO$1)) return O[IE_PROTO$1];\n\t if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n\t return O.constructor.prototype;\n\t } return O instanceof Object ? ObjectPrototype : null;\n\t};\n\n\tvar ITERATOR$3 = wellKnownSymbol('iterator');\n\tvar BUGGY_SAFARI_ITERATORS = false;\n\n\tvar returnThis = function () { return this; };\n\n\t// `%IteratorPrototype%` object\n\t// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\n\tvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n\tif ([].keys) {\n\t arrayIterator = [].keys();\n\t // Safari 8 has buggy iterators w/o `next`\n\t if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n\t else {\n\t PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator));\n\t if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n\t }\n\t}\n\n\tif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\tif ( !has(IteratorPrototype, ITERATOR$3)) hide(IteratorPrototype, ITERATOR$3, returnThis);\n\n\tvar iteratorsCore = {\n\t IteratorPrototype: IteratorPrototype,\n\t BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n\t};\n\n\tvar defineProperty = objectDefineProperty.f;\n\n\n\n\tvar TO_STRING_TAG$1 = wellKnownSymbol('toStringTag');\n\n\tvar setToStringTag = function (it, TAG, STATIC) {\n\t if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG$1)) {\n\t defineProperty(it, TO_STRING_TAG$1, { configurable: true, value: TAG });\n\t }\n\t};\n\n\tvar IteratorPrototype$1 = iteratorsCore.IteratorPrototype;\n\n\n\n\n\n\tvar returnThis$1 = function () { return this; };\n\n\tvar createIteratorConstructor = function (IteratorConstructor, NAME, next) {\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) });\n\t setToStringTag(IteratorConstructor, TO_STRING_TAG, false);\n\t iterators[TO_STRING_TAG] = returnThis$1;\n\t return IteratorConstructor;\n\t};\n\n\tvar validateSetPrototypeOfArguments = function (O, proto) {\n\t anObject(O);\n\t if (!isObject(proto) && proto !== null) {\n\t throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n\t }\n\t};\n\n\t// Works with __proto__ only. Old v8 can't work with null proto objects.\n\t/* eslint-disable no-proto */\n\tvar objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n\t var correctSetter = false;\n\t var test = {};\n\t var setter;\n\t try {\n\t setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n\t setter.call(test, []);\n\t correctSetter = test instanceof Array;\n\t } catch (error) { /* empty */ }\n\t return function setPrototypeOf(O, proto) {\n\t validateSetPrototypeOfArguments(O, proto);\n\t if (correctSetter) setter.call(O, proto);\n\t else O.__proto__ = proto;\n\t return O;\n\t };\n\t}() : undefined);\n\n\tvar IteratorPrototype$2 = iteratorsCore.IteratorPrototype;\n\tvar BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS;\n\tvar ITERATOR$4 = wellKnownSymbol('iterator');\n\tvar KEYS = 'keys';\n\tvar VALUES = 'values';\n\tvar ENTRIES = 'entries';\n\n\tvar returnThis$2 = function () { return this; };\n\n\tvar defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n\t createIteratorConstructor(IteratorConstructor, NAME, next);\n\n\t var getIterationMethod = function (KIND) {\n\t if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n\t if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) return IterablePrototype[KIND];\n\t switch (KIND) {\n\t case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n\t case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n\t case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n\t } return function () { return new IteratorConstructor(this); };\n\t };\n\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t var INCORRECT_VALUES_NAME = false;\n\t var IterablePrototype = Iterable.prototype;\n\t var nativeIterator = IterablePrototype[ITERATOR$4]\n\t || IterablePrototype['@@iterator']\n\t || DEFAULT && IterablePrototype[DEFAULT];\n\t var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT);\n\t var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n\t var CurrentIteratorPrototype, methods, KEY;\n\n\t // fix native\n\t if (anyNativeIterator) {\n\t CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable()));\n\t if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) {\n\t if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) {\n\t if (objectSetPrototypeOf) {\n\t objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2);\n\t } else if (typeof CurrentIteratorPrototype[ITERATOR$4] != 'function') {\n\t hide(CurrentIteratorPrototype, ITERATOR$4, returnThis$2);\n\t }\n\t }\n\t // Set @@toStringTag to native iterators\n\t setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true);\n\t }\n\t }\n\n\t // fix Array#{values, @@iterator}.name in V8 / FF\n\t if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n\t INCORRECT_VALUES_NAME = true;\n\t defaultIterator = function values() { return nativeIterator.call(this); };\n\t }\n\n\t // define iterator\n\t if ( IterablePrototype[ITERATOR$4] !== defaultIterator) {\n\t hide(IterablePrototype, ITERATOR$4, defaultIterator);\n\t }\n\t iterators[NAME] = defaultIterator;\n\n\t // export additional methods\n\t if (DEFAULT) {\n\t methods = {\n\t values: getIterationMethod(VALUES),\n\t keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n\t entries: getIterationMethod(ENTRIES)\n\t };\n\t if (FORCED) for (KEY in methods) {\n\t if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n\t redefine(IterablePrototype, KEY, methods[KEY]);\n\t }\n\t } else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods);\n\t }\n\n\t return methods;\n\t};\n\n\tvar STRING_ITERATOR = 'String Iterator';\n\tvar setInternalState = internalState.set;\n\tvar getInternalState = internalState.getterFor(STRING_ITERATOR);\n\n\t// `String.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\n\tdefineIterator(String, 'String', function (iterated) {\n\t setInternalState(this, {\n\t type: STRING_ITERATOR,\n\t string: String(iterated),\n\t index: 0\n\t });\n\t// `%StringIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n\t}, function next() {\n\t var state = getInternalState(this);\n\t var string = state.string;\n\t var index = state.index;\n\t var point;\n\t if (index >= string.length) return { value: undefined, done: true };\n\t point = stringAt(string, index, true);\n\t state.index += point.length;\n\t return { value: point, done: false };\n\t});\n\n\t// iterable DOM collections\n\t// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\n\tvar domIterables = {\n\t CSSRuleList: 0,\n\t CSSStyleDeclaration: 0,\n\t CSSValueList: 0,\n\t ClientRectList: 0,\n\t DOMRectList: 0,\n\t DOMStringList: 0,\n\t DOMTokenList: 1,\n\t DataTransferItemList: 0,\n\t FileList: 0,\n\t HTMLAllCollection: 0,\n\t HTMLCollection: 0,\n\t HTMLFormElement: 0,\n\t HTMLSelectElement: 0,\n\t MediaList: 0,\n\t MimeTypeArray: 0,\n\t NamedNodeMap: 0,\n\t NodeList: 1,\n\t PaintRequestList: 0,\n\t Plugin: 0,\n\t PluginArray: 0,\n\t SVGLengthList: 0,\n\t SVGNumberList: 0,\n\t SVGPathSegList: 0,\n\t SVGPointList: 0,\n\t SVGStringList: 0,\n\t SVGTransformList: 0,\n\t SourceBufferList: 0,\n\t StyleSheetList: 0,\n\t TextTrackCueList: 0,\n\t TextTrackList: 0,\n\t TouchList: 0\n\t};\n\n\tfor (var COLLECTION_NAME in domIterables) {\n\t var Collection = global_1[COLLECTION_NAME];\n\t var CollectionPrototype = Collection && Collection.prototype;\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try {\n\t hide(CollectionPrototype, 'forEach', arrayForEach);\n\t } catch (error) {\n\t CollectionPrototype.forEach = arrayForEach;\n\t }\n\t}\n\n\t// Setup tab focus\n\tvar container = document.getElementById('container');\n\tvar tabClassName = 'tab-focus'; // Remove class on blur\n\n\tdocument.addEventListener('focusout', function (event) {\n\t if (!event.target.classList || container.contains(event.target)) {\n\t return;\n\t }\n\n\t event.target.classList.remove(tabClassName);\n\t}); // Add classname to tabbed elements\n\n\tdocument.addEventListener('keydown', function (event) {\n\t if (event.keyCode !== 9) {\n\t return;\n\t } // Delay the adding of classname until the focus has changed\n\t // This event fires before the focusin event\n\n\n\t setTimeout(function () {\n\t var focused = document.activeElement;\n\n\t if (!focused || !focused.classList || container.contains(focused)) {\n\t return;\n\t }\n\n\t focused.classList.add(tabClassName);\n\t }, 10);\n\t});\n\n\t// Polyfill for creating CustomEvents on IE9/10/11\n\t// code pulled from:\n\t// https://github.com/d4tocchini/customevent-polyfill\n\t// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\t(function () {\n\t if (typeof window === 'undefined') {\n\t return;\n\t }\n\n\t try {\n\t var ce = new window.CustomEvent('test', {\n\t cancelable: true\n\t });\n\t ce.preventDefault();\n\n\t if (ce.defaultPrevented !== true) {\n\t // IE has problems with .preventDefault() on custom events\n\t // http://stackoverflow.com/questions/23349191\n\t throw new Error('Could not prevent default');\n\t }\n\t } catch (e) {\n\t var CustomEvent = function CustomEvent(event, params) {\n\t var evt, origPrevent;\n\t params = params || {};\n\t params.bubbles = !!params.bubbles;\n\t params.cancelable = !!params.cancelable;\n\t evt = document.createEvent('CustomEvent');\n\t evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t origPrevent = evt.preventDefault;\n\n\t evt.preventDefault = function () {\n\t origPrevent.call(this);\n\n\t try {\n\t Object.defineProperty(this, 'defaultPrevented', {\n\t get: function get() {\n\t return true;\n\t }\n\t });\n\t } catch (e) {\n\t this.defaultPrevented = true;\n\t }\n\t };\n\n\t return evt;\n\t };\n\n\t CustomEvent.prototype = window.Event.prototype;\n\t window.CustomEvent = CustomEvent; // expose definition to window\n\t }\n\t})();\n\n\tvar f$5 = wellKnownSymbol;\n\n\tvar wrappedWellKnownSymbol = {\n\t\tf: f$5\n\t};\n\n\tvar path = global_1;\n\n\tvar defineProperty$1 = objectDefineProperty.f;\n\n\tvar defineWellKnownSymbol = function (NAME) {\n\t var Symbol = path.Symbol || (path.Symbol = {});\n\t if (!has(Symbol, NAME)) defineProperty$1(Symbol, NAME, {\n\t value: wrappedWellKnownSymbol.f(NAME)\n\t });\n\t};\n\n\t// all enumerable object keys, includes symbols\n\tvar enumKeys = function (it) {\n\t var result = objectKeys(it);\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n\t if (getOwnPropertySymbols) {\n\t var symbols = getOwnPropertySymbols(it);\n\t var propertyIsEnumerable = objectPropertyIsEnumerable.f;\n\t var i = 0;\n\t var key;\n\t while (symbols.length > i) if (propertyIsEnumerable.call(it, key = symbols[i++])) result.push(key);\n\t } return result;\n\t};\n\n\tvar nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f;\n\n\tvar toString$1 = {}.toString;\n\n\tvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n\t ? Object.getOwnPropertyNames(window) : [];\n\n\tvar getWindowNames = function (it) {\n\t try {\n\t return nativeGetOwnPropertyNames(it);\n\t } catch (error) {\n\t return windowNames.slice();\n\t }\n\t};\n\n\t// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\tvar f$6 = function getOwnPropertyNames(it) {\n\t return windowNames && toString$1.call(it) == '[object Window]'\n\t ? getWindowNames(it)\n\t : nativeGetOwnPropertyNames(toIndexedObject(it));\n\t};\n\n\tvar objectGetOwnPropertyNamesExternal = {\n\t\tf: f$6\n\t};\n\n\tvar HIDDEN = sharedKey('hidden');\n\tvar SYMBOL = 'Symbol';\n\tvar setInternalState$1 = internalState.set;\n\tvar getInternalState$1 = internalState.getterFor(SYMBOL);\n\tvar nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\tvar nativeDefineProperty$1 = objectDefineProperty.f;\n\tvar nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f;\n\tvar $Symbol = global_1.Symbol;\n\tvar JSON$1 = global_1.JSON;\n\tvar nativeJSONStringify = JSON$1 && JSON$1.stringify;\n\tvar PROTOTYPE$1 = 'prototype';\n\tvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\tvar nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f;\n\tvar SymbolRegistry = shared('symbol-registry');\n\tvar AllSymbols = shared('symbols');\n\tvar ObjectPrototypeSymbols = shared('op-symbols');\n\tvar WellKnownSymbolsStore = shared('wks');\n\tvar ObjectPrototype$1 = Object[PROTOTYPE$1];\n\tvar QObject = global_1.QObject;\n\t// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\tvar USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild;\n\n\t// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\tvar setSymbolDescriptor = descriptors && fails(function () {\n\t return objectCreate(nativeDefineProperty$1({}, 'a', {\n\t get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; }\n\t })).a != 7;\n\t}) ? function (it, key, D) {\n\t var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype$1, key);\n\t if (ObjectPrototypeDescriptor) delete ObjectPrototype$1[key];\n\t nativeDefineProperty$1(it, key, D);\n\t if (ObjectPrototypeDescriptor && it !== ObjectPrototype$1) {\n\t nativeDefineProperty$1(ObjectPrototype$1, key, ObjectPrototypeDescriptor);\n\t }\n\t} : nativeDefineProperty$1;\n\n\tvar wrap = function (tag, description) {\n\t var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]);\n\t setInternalState$1(symbol, {\n\t type: SYMBOL,\n\t tag: tag,\n\t description: description\n\t });\n\t if (!descriptors) symbol.description = description;\n\t return symbol;\n\t};\n\n\tvar isSymbol = nativeSymbol && typeof $Symbol.iterator == 'symbol' ? function (it) {\n\t return typeof it == 'symbol';\n\t} : function (it) {\n\t return Object(it) instanceof $Symbol;\n\t};\n\n\tvar $defineProperty = function defineProperty(it, key, D) {\n\t if (it === ObjectPrototype$1) $defineProperty(ObjectPrototypeSymbols, key, D);\n\t anObject(it);\n\t key = toPrimitive(key, true);\n\t anObject(D);\n\t if (has(AllSymbols, key)) {\n\t if (!D.enumerable) {\n\t if (!has(it, HIDDEN)) nativeDefineProperty$1(it, HIDDEN, createPropertyDescriptor(1, {}));\n\t it[HIDDEN][key] = true;\n\t } else {\n\t if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n\t D = objectCreate(D, { enumerable: createPropertyDescriptor(0, false) });\n\t } return setSymbolDescriptor(it, key, D);\n\t } return nativeDefineProperty$1(it, key, D);\n\t};\n\n\tvar $defineProperties = function defineProperties(it, P) {\n\t anObject(it);\n\t var keys = enumKeys(P = toIndexedObject(P));\n\t var i = 0;\n\t var l = keys.length;\n\t var key;\n\t while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n\t return it;\n\t};\n\n\tvar $create = function create(it, P) {\n\t return P === undefined ? objectCreate(it) : $defineProperties(objectCreate(it), P);\n\t};\n\n\tvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n\t var E = nativePropertyIsEnumerable$1.call(this, key = toPrimitive(key, true));\n\t if (this === ObjectPrototype$1 && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return false;\n\t return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n\t};\n\n\tvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n\t it = toIndexedObject(it);\n\t key = toPrimitive(key, true);\n\t if (it === ObjectPrototype$1 && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n\t var D = nativeGetOwnPropertyDescriptor$1(it, key);\n\t if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n\t return D;\n\t};\n\n\tvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n\t var names = nativeGetOwnPropertyNames$1(toIndexedObject(it));\n\t var result = [];\n\t var i = 0;\n\t var key;\n\t while (names.length > i) {\n\t if (!has(AllSymbols, key = names[i++]) && !has(hiddenKeys, key)) result.push(key);\n\t } return result;\n\t};\n\n\tvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n\t var IS_OP = it === ObjectPrototype$1;\n\t var names = nativeGetOwnPropertyNames$1(IS_OP ? ObjectPrototypeSymbols : toIndexedObject(it));\n\t var result = [];\n\t var i = 0;\n\t var key;\n\t while (names.length > i) {\n\t if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectPrototype$1, key) : true)) result.push(AllSymbols[key]);\n\t } return result;\n\t};\n\n\t// `Symbol` constructor\n\t// https://tc39.github.io/ecma262/#sec-symbol-constructor\n\tif (!nativeSymbol) {\n\t $Symbol = function Symbol() {\n\t if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n\t var description = arguments[0] === undefined ? undefined : String(arguments[0]);\n\t var tag = uid(description);\n\t var setter = function (value) {\n\t if (this === ObjectPrototype$1) setter.call(ObjectPrototypeSymbols, value);\n\t if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n\t setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n\t };\n\t if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype$1, tag, { configurable: true, set: setter });\n\t return wrap(tag, description);\n\t };\n\t redefine($Symbol[PROTOTYPE$1], 'toString', function toString() {\n\t return getInternalState$1(this).tag;\n\t });\n\n\t objectPropertyIsEnumerable.f = $propertyIsEnumerable;\n\t objectDefineProperty.f = $defineProperty;\n\t objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;\n\t objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n\t objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;\n\n\t if (descriptors) {\n\t // https://github.com/tc39/proposal-Symbol-description\n\t nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {\n\t configurable: true,\n\t get: function description() {\n\t return getInternalState$1(this).description;\n\t }\n\t });\n\t {\n\t redefine(ObjectPrototype$1, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n\t }\n\t }\n\n\t wrappedWellKnownSymbol.f = function (name) {\n\t return wrap(wellKnownSymbol(name), name);\n\t };\n\t}\n\n\t_export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, {\n\t Symbol: $Symbol\n\t});\n\n\tfor (var wellKnownSymbols = objectKeys(WellKnownSymbolsStore), k = 0; wellKnownSymbols.length > k;) {\n\t defineWellKnownSymbol(wellKnownSymbols[k++]);\n\t}\n\n\t_export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, {\n\t // `Symbol.for` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.for\n\t 'for': function (key) {\n\t return has(SymbolRegistry, key += '')\n\t ? SymbolRegistry[key]\n\t : SymbolRegistry[key] = $Symbol(key);\n\t },\n\t // `Symbol.keyFor` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n\t keyFor: function keyFor(sym) {\n\t if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n\t for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n\t },\n\t useSetter: function () { USE_SETTER = true; },\n\t useSimple: function () { USE_SETTER = false; }\n\t});\n\n\t_export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, {\n\t // `Object.create` method\n\t // https://tc39.github.io/ecma262/#sec-object.create\n\t create: $create,\n\t // `Object.defineProperty` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperty\n\t defineProperty: $defineProperty,\n\t // `Object.defineProperties` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperties\n\t defineProperties: $defineProperties,\n\t // `Object.getOwnPropertyDescriptor` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n\t getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n\t});\n\n\t_export({ target: 'Object', stat: true, forced: !nativeSymbol }, {\n\t // `Object.getOwnPropertyNames` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\t getOwnPropertyNames: $getOwnPropertyNames,\n\t // `Object.getOwnPropertySymbols` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n\t getOwnPropertySymbols: $getOwnPropertySymbols\n\t});\n\n\t// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n\t// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n\t_export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, {\n\t getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n\t return objectGetOwnPropertySymbols.f(toObject(it));\n\t }\n\t});\n\n\t// `JSON.stringify` method behavior with symbols\n\t// https://tc39.github.io/ecma262/#sec-json.stringify\n\tJSON$1 && _export({ target: 'JSON', stat: true, forced: !nativeSymbol || fails(function () {\n\t var symbol = $Symbol();\n\t // MS Edge converts symbol values to JSON as {}\n\t return nativeJSONStringify([symbol]) != '[null]'\n\t // WebKit converts symbol values to JSON as null\n\t || nativeJSONStringify({ a: symbol }) != '{}'\n\t // V8 throws on boxed symbols\n\t || nativeJSONStringify(Object(symbol)) != '{}';\n\t}) }, {\n\t stringify: function stringify(it) {\n\t var args = [it];\n\t var i = 1;\n\t var replacer, $replacer;\n\t while (arguments.length > i) args.push(arguments[i++]);\n\t $replacer = replacer = args[1];\n\t if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n\t if (!isArray(replacer)) replacer = function (key, value) {\n\t if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n\t if (!isSymbol(value)) return value;\n\t };\n\t args[1] = replacer;\n\t return nativeJSONStringify.apply(JSON$1, args);\n\t }\n\t});\n\n\t// `Symbol.prototype[@@toPrimitive]` method\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\n\tif (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf);\n\t// `Symbol.prototype[@@toStringTag]` property\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\n\tsetToStringTag($Symbol, SYMBOL);\n\n\thiddenKeys[HIDDEN] = true;\n\n\tvar defineProperty$2 = objectDefineProperty.f;\n\n\n\tvar NativeSymbol = global_1.Symbol;\n\n\tif (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n\t // Safari 12 bug\n\t NativeSymbol().description !== undefined\n\t)) {\n\t var EmptyStringDescriptionStore = {};\n\t // wrap Symbol constructor for correct work with undefined description\n\t var SymbolWrapper = function Symbol() {\n\t var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n\t var result = this instanceof SymbolWrapper\n\t ? new NativeSymbol(description)\n\t // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n\t : description === undefined ? NativeSymbol() : NativeSymbol(description);\n\t if (description === '') EmptyStringDescriptionStore[result] = true;\n\t return result;\n\t };\n\t copyConstructorProperties(SymbolWrapper, NativeSymbol);\n\t var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n\t symbolPrototype.constructor = SymbolWrapper;\n\n\t var symbolToString = symbolPrototype.toString;\n\t var native = String(NativeSymbol('test')) == 'Symbol(test)';\n\t var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n\t defineProperty$2(symbolPrototype, 'description', {\n\t configurable: true,\n\t get: function description() {\n\t var symbol = isObject(this) ? this.valueOf() : this;\n\t var string = symbolToString.call(symbol);\n\t if (has(EmptyStringDescriptionStore, symbol)) return '';\n\t var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n\t return desc === '' ? undefined : desc;\n\t }\n\t });\n\n\t _export({ global: true, forced: true }, {\n\t Symbol: SymbolWrapper\n\t });\n\t}\n\n\t// `Symbol.iterator` well-known symbol\n\t// https://tc39.github.io/ecma262/#sec-symbol.iterator\n\tdefineWellKnownSymbol('iterator');\n\n\tvar internalIndexOf = arrayIncludes(false);\n\tvar nativeIndexOf = [].indexOf;\n\n\tvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\n\tvar SLOPPY_METHOD$1 = sloppyArrayMethod('indexOf');\n\n\t// `Array.prototype.indexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t_export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD$1 }, {\n\t indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n\t return NEGATIVE_ZERO\n\t // convert -0 to +0\n\t ? nativeIndexOf.apply(this, arguments) || 0\n\t : internalIndexOf(this, searchElement, arguments[1]);\n\t }\n\t});\n\n\tvar ARRAY_ITERATOR = 'Array Iterator';\n\tvar setInternalState$2 = internalState.set;\n\tvar getInternalState$2 = internalState.getterFor(ARRAY_ITERATOR);\n\n\t// `Array.prototype.entries` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n\t// `Array.prototype.keys` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n\t// `Array.prototype.values` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.values\n\t// `Array.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n\t// `CreateArrayIterator` internal method\n\t// https://tc39.github.io/ecma262/#sec-createarrayiterator\n\tvar es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) {\n\t setInternalState$2(this, {\n\t type: ARRAY_ITERATOR,\n\t target: toIndexedObject(iterated), // target\n\t index: 0, // next index\n\t kind: kind // kind\n\t });\n\t// `%ArrayIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n\t}, function () {\n\t var state = getInternalState$2(this);\n\t var target = state.target;\n\t var kind = state.kind;\n\t var index = state.index++;\n\t if (!target || index >= target.length) {\n\t state.target = undefined;\n\t return { value: undefined, done: true };\n\t }\n\t if (kind == 'keys') return { value: index, done: false };\n\t if (kind == 'values') return { value: target[index], done: false };\n\t return { value: [index, target[index]], done: false };\n\t}, 'values');\n\n\t// argumentsList[@@iterator] is %ArrayProto_values%\n\t// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n\t// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\n\titerators.Arguments = iterators.Array;\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables('keys');\n\taddToUnscopables('values');\n\taddToUnscopables('entries');\n\n\tvar nativeJoin = [].join;\n\n\tvar ES3_STRINGS = indexedObject != Object;\n\tvar SLOPPY_METHOD$2 = sloppyArrayMethod('join', ',');\n\n\t// `Array.prototype.join` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.join\n\t_export({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD$2 }, {\n\t join: function join(separator) {\n\t return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n\t }\n\t});\n\n\tvar SPECIES$1 = wellKnownSymbol('species');\n\n\tvar arrayMethodHasSpeciesSupport = function (METHOD_NAME) {\n\t return !fails(function () {\n\t var array = [];\n\t var constructor = array.constructor = {};\n\t constructor[SPECIES$1] = function () {\n\t return { foo: 1 };\n\t };\n\t return array[METHOD_NAME](Boolean).foo !== 1;\n\t });\n\t};\n\n\tvar SPECIES$2 = wellKnownSymbol('species');\n\tvar nativeSlice = [].slice;\n\tvar max$1 = Math.max;\n\n\tvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\n\t// `Array.prototype.slice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n\t// fallback for not array-like ES3 strings and DOM objects\n\t_export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n\t slice: function slice(start, end) {\n\t var O = toIndexedObject(this);\n\t var length = toLength(O.length);\n\t var k = toAbsoluteIndex(start, length);\n\t var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n\t // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n\t var Constructor, result, n;\n\t if (isArray(O)) {\n\t Constructor = O.constructor;\n\t // cross-realm fallback\n\t if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n\t Constructor = undefined;\n\t } else if (isObject(Constructor)) {\n\t Constructor = Constructor[SPECIES$2];\n\t if (Constructor === null) Constructor = undefined;\n\t }\n\t if (Constructor === Array || Constructor === undefined) {\n\t return nativeSlice.call(O, k, fin);\n\t }\n\t }\n\t result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0));\n\t for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n\t result.length = n;\n\t return result;\n\t }\n\t});\n\n\tvar TO_STRING_TAG$2 = wellKnownSymbol('toStringTag');\n\tvar test = {};\n\n\ttest[TO_STRING_TAG$2] = 'z';\n\n\t// `Object.prototype.toString` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tvar objectToString = String(test) !== '[object z]' ? function toString() {\n\t return '[object ' + classof(this) + ']';\n\t} : test.toString;\n\n\tvar ObjectPrototype$2 = Object.prototype;\n\n\t// `Object.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tif (objectToString !== ObjectPrototype$2.toString) {\n\t redefine(ObjectPrototype$2, 'toString', objectToString, { unsafe: true });\n\t}\n\n\t// `RegExp.prototype.flags` getter implementation\n\t// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\n\tvar regexpFlags = function () {\n\t var that = anObject(this);\n\t var result = '';\n\t if (that.global) result += 'g';\n\t if (that.ignoreCase) result += 'i';\n\t if (that.multiline) result += 'm';\n\t if (that.unicode) result += 'u';\n\t if (that.sticky) result += 'y';\n\t return result;\n\t};\n\n\tvar nativeExec = RegExp.prototype.exec;\n\t// This always refers to the native implementation, because the\n\t// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n\t// which loads this file before patching the method.\n\tvar nativeReplace = String.prototype.replace;\n\n\tvar patchedExec = nativeExec;\n\n\tvar UPDATES_LAST_INDEX_WRONG = (function () {\n\t var re1 = /a/;\n\t var re2 = /b*/g;\n\t nativeExec.call(re1, 'a');\n\t nativeExec.call(re2, 'a');\n\t return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n\t})();\n\n\t// nonparticipating capturing group, copied from es5-shim's String#split patch.\n\tvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\n\tvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\n\tif (PATCH) {\n\t patchedExec = function exec(str) {\n\t var re = this;\n\t var lastIndex, reCopy, match, i;\n\n\t if (NPCG_INCLUDED) {\n\t reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n\t }\n\t if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n\t match = nativeExec.call(re, str);\n\n\t if (UPDATES_LAST_INDEX_WRONG && match) {\n\t re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n\t }\n\t if (NPCG_INCLUDED && match && match.length > 1) {\n\t // Fix browsers whose `exec` methods don't consistently return `undefined`\n\t // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n\t nativeReplace.call(match[0], reCopy, function () {\n\t for (i = 1; i < arguments.length - 2; i++) {\n\t if (arguments[i] === undefined) match[i] = undefined;\n\t }\n\t });\n\t }\n\n\t return match;\n\t };\n\t}\n\n\tvar regexpExec = patchedExec;\n\n\t_export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, {\n\t exec: regexpExec\n\t});\n\n\tvar TO_STRING = 'toString';\n\tvar nativeToString = /./[TO_STRING];\n\tvar RegExpPrototype = RegExp.prototype;\n\n\tvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n\t// FF44- RegExp#toString has a wrong name\n\tvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n\t// `RegExp.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\tif (NOT_GENERIC || INCORRECT_NAME) {\n\t redefine(RegExp.prototype, TO_STRING, function toString() {\n\t var R = anObject(this);\n\t var p = String(R.source);\n\t var rf = R.flags;\n\t var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf);\n\t return '/' + p + '/' + f;\n\t }, { unsafe: true });\n\t}\n\n\tvar SPECIES$3 = wellKnownSymbol('species');\n\n\tvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n\t // #replace needs built-in support for named groups.\n\t // #match works fine because it just return the exec results, even if it has\n\t // a \"grops\" property.\n\t var re = /./;\n\t re.exec = function () {\n\t var result = [];\n\t result.groups = { a: '7' };\n\t return result;\n\t };\n\t return ''.replace(re, '$<a>') !== '7';\n\t});\n\n\t// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n\t// Weex JS has frozen built-in prototypes, so use try / catch wrapper\n\tvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n\t var re = /(?:)/;\n\t var originalExec = re.exec;\n\t re.exec = function () { return originalExec.apply(this, arguments); };\n\t var result = 'ab'.split(re);\n\t return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n\t});\n\n\tvar fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {\n\t var SYMBOL = wellKnownSymbol(KEY);\n\n\t var DELEGATES_TO_SYMBOL = !fails(function () {\n\t // String methods call symbol-named RegEp methods\n\t var O = {};\n\t O[SYMBOL] = function () { return 7; };\n\t return ''[KEY](O) != 7;\n\t });\n\n\t var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n\t // Symbol-named RegExp methods call .exec\n\t var execCalled = false;\n\t var re = /a/;\n\t re.exec = function () { execCalled = true; return null; };\n\n\t if (KEY === 'split') {\n\t // RegExp[@@split] doesn't call the regex's exec method, but first creates\n\t // a new one. We need to return the patched regex when creating the new one.\n\t re.constructor = {};\n\t re.constructor[SPECIES$3] = function () { return re; };\n\t }\n\n\t re[SYMBOL]('');\n\t return !execCalled;\n\t });\n\n\t if (\n\t !DELEGATES_TO_SYMBOL ||\n\t !DELEGATES_TO_EXEC ||\n\t (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n\t (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n\t ) {\n\t var nativeRegExpMethod = /./[SYMBOL];\n\t var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n\t if (regexp.exec === regexpExec) {\n\t if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n\t // The native String method already delegates to @@method (this\n\t // polyfilled function), leasing to infinite recursion.\n\t // We avoid it by directly calling the native @@method method.\n\t return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n\t }\n\t return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n\t }\n\t return { done: false };\n\t });\n\t var stringMethod = methods[0];\n\t var regexMethod = methods[1];\n\n\t redefine(String.prototype, KEY, stringMethod);\n\t redefine(RegExp.prototype, SYMBOL, length == 2\n\t // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n\t // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n\t ? function (string, arg) { return regexMethod.call(string, this, arg); }\n\t // 21.2.5.6 RegExp.prototype[@@match](string)\n\t // 21.2.5.9 RegExp.prototype[@@search](string)\n\t : function (string) { return regexMethod.call(string, this); }\n\t );\n\t if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true);\n\t }\n\t};\n\n\t// `AdvanceStringIndex` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-advancestringindex\n\tvar advanceStringIndex = function (S, index, unicode) {\n\t return index + (unicode ? stringAt(S, index, true).length : 1);\n\t};\n\n\t// `RegExpExec` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-regexpexec\n\tvar regexpExecAbstract = function (R, S) {\n\t var exec = R.exec;\n\t if (typeof exec === 'function') {\n\t var result = exec.call(R, S);\n\t if (typeof result !== 'object') {\n\t throw TypeError('RegExp exec method returned something other than an Object or null');\n\t }\n\t return result;\n\t }\n\n\t if (classofRaw(R) !== 'RegExp') {\n\t throw TypeError('RegExp#exec called on incompatible receiver');\n\t }\n\n\t return regexpExec.call(R, S);\n\t};\n\n\tvar max$2 = Math.max;\n\tvar min$2 = Math.min;\n\tvar floor$1 = Math.floor;\n\tvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\n\tvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n\tvar maybeToString = function (it) {\n\t return it === undefined ? it : String(it);\n\t};\n\n\t// @@replace logic\n\tfixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n\t return [\n\t // `String.prototype.replace` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n\t function replace(searchValue, replaceValue) {\n\t var O = requireObjectCoercible(this);\n\t var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n\t return replacer !== undefined\n\t ? replacer.call(searchValue, O, replaceValue)\n\t : nativeReplace.call(String(O), searchValue, replaceValue);\n\t },\n\t // `RegExp.prototype[@@replace]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n\t function (regexp, replaceValue) {\n\t var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\n\t var functionalReplace = typeof replaceValue === 'function';\n\t if (!functionalReplace) replaceValue = String(replaceValue);\n\n\t var global = rx.global;\n\t if (global) {\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t }\n\t var results = [];\n\t while (true) {\n\t var result = regexpExecAbstract(rx, S);\n\t if (result === null) break;\n\n\t results.push(result);\n\t if (!global) break;\n\n\t var matchStr = String(result[0]);\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n\t }\n\n\t var accumulatedResult = '';\n\t var nextSourcePosition = 0;\n\t for (var i = 0; i < results.length; i++) {\n\t result = results[i];\n\n\t var matched = String(result[0]);\n\t var position = max$2(min$2(toInteger(result.index), S.length), 0);\n\t var captures = [];\n\t // NOTE: This is equivalent to\n\t // captures = result.slice(1).map(maybeToString)\n\t // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n\t // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n\t // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\t for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n\t var namedCaptures = result.groups;\n\t if (functionalReplace) {\n\t var replacerArgs = [matched].concat(captures, position, S);\n\t if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n\t var replacement = String(replaceValue.apply(undefined, replacerArgs));\n\t } else {\n\t replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n\t }\n\t if (position >= nextSourcePosition) {\n\t accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n\t nextSourcePosition = position + matched.length;\n\t }\n\t }\n\t return accumulatedResult + S.slice(nextSourcePosition);\n\t }\n\t ];\n\n\t // https://tc39.github.io/ecma262/#sec-getsubstitution\n\t function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n\t var tailPos = position + matched.length;\n\t var m = captures.length;\n\t var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n\t if (namedCaptures !== undefined) {\n\t namedCaptures = toObject(namedCaptures);\n\t symbols = SUBSTITUTION_SYMBOLS;\n\t }\n\t return nativeReplace.call(replacement, symbols, function (match, ch) {\n\t var capture;\n\t switch (ch.charAt(0)) {\n\t case '$': return '$';\n\t case '&': return matched;\n\t case '`': return str.slice(0, position);\n\t case \"'\": return str.slice(tailPos);\n\t case '<':\n\t capture = namedCaptures[ch.slice(1, -1)];\n\t break;\n\t default: // \\d\\d?\n\t var n = +ch;\n\t if (n === 0) return match;\n\t if (n > m) {\n\t var f = floor$1(n / 10);\n\t if (f === 0) return match;\n\t if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n\t return match;\n\t }\n\t capture = captures[n - 1];\n\t }\n\t return capture === undefined ? '' : capture;\n\t });\n\t }\n\t});\n\n\t// `SameValue` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-samevalue\n\tvar sameValue = Object.is || function is(x, y) {\n\t // eslint-disable-next-line no-self-compare\n\t return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n\t};\n\n\t// @@search logic\n\tfixRegexpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n\t return [\n\t // `String.prototype.search` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.search\n\t function search(regexp) {\n\t var O = requireObjectCoercible(this);\n\t var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n\t return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n\t },\n\t // `RegExp.prototype[@@search]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n\t function (regexp) {\n\t var res = maybeCallNative(nativeSearch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\n\t var previousLastIndex = rx.lastIndex;\n\t if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n\t var result = regexpExecAbstract(rx, S);\n\t if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n\t return result === null ? -1 : result.index;\n\t }\n\t ];\n\t});\n\n\tvar SPECIES$4 = wellKnownSymbol('species');\n\n\t// `SpeciesConstructor` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-speciesconstructor\n\tvar speciesConstructor = function (O, defaultConstructor) {\n\t var C = anObject(O).constructor;\n\t var S;\n\t return C === undefined || (S = anObject(C)[SPECIES$4]) == undefined ? defaultConstructor : aFunction(S);\n\t};\n\n\tvar arrayPush = [].push;\n\tvar min$3 = Math.min;\n\tvar MAX_UINT32 = 0xFFFFFFFF;\n\n\t// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\n\tvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n\t// @@split logic\n\tfixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n\t var internalSplit;\n\t if (\n\t 'abbc'.split(/(b)*/)[1] == 'c' ||\n\t 'test'.split(/(?:)/, -1).length != 4 ||\n\t 'ab'.split(/(?:ab)*/).length != 2 ||\n\t '.'.split(/(.?)(.?)/).length != 4 ||\n\t '.'.split(/()()/).length > 1 ||\n\t ''.split(/.?/).length\n\t ) {\n\t // based on es5-shim implementation, need to rework it\n\t internalSplit = function (separator, limit) {\n\t var string = String(requireObjectCoercible(this));\n\t var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (separator === undefined) return [string];\n\t // If `separator` is not a regex, use native split\n\t if (!isRegexp(separator)) {\n\t return nativeSplit.call(string, separator, lim);\n\t }\n\t var output = [];\n\t var flags = (separator.ignoreCase ? 'i' : '') +\n\t (separator.multiline ? 'm' : '') +\n\t (separator.unicode ? 'u' : '') +\n\t (separator.sticky ? 'y' : '');\n\t var lastLastIndex = 0;\n\t // Make `global` and avoid `lastIndex` issues by working with a copy\n\t var separatorCopy = new RegExp(separator.source, flags + 'g');\n\t var match, lastIndex, lastLength;\n\t while (match = regexpExec.call(separatorCopy, string)) {\n\t lastIndex = separatorCopy.lastIndex;\n\t if (lastIndex > lastLastIndex) {\n\t output.push(string.slice(lastLastIndex, match.index));\n\t if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n\t lastLength = match[0].length;\n\t lastLastIndex = lastIndex;\n\t if (output.length >= lim) break;\n\t }\n\t if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n\t }\n\t if (lastLastIndex === string.length) {\n\t if (lastLength || !separatorCopy.test('')) output.push('');\n\t } else output.push(string.slice(lastLastIndex));\n\t return output.length > lim ? output.slice(0, lim) : output;\n\t };\n\t // Chakra, V8\n\t } else if ('0'.split(undefined, 0).length) {\n\t internalSplit = function (separator, limit) {\n\t return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n\t };\n\t } else internalSplit = nativeSplit;\n\n\t return [\n\t // `String.prototype.split` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.split\n\t function split(separator, limit) {\n\t var O = requireObjectCoercible(this);\n\t var splitter = separator == undefined ? undefined : separator[SPLIT];\n\t return splitter !== undefined\n\t ? splitter.call(separator, O, limit)\n\t : internalSplit.call(String(O), separator, limit);\n\t },\n\t // `RegExp.prototype[@@split]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n\t //\n\t // NOTE: This cannot be properly polyfilled in engines that don't support\n\t // the 'y' flag.\n\t function (regexp, limit) {\n\t var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\t var C = speciesConstructor(rx, RegExp);\n\n\t var unicodeMatching = rx.unicode;\n\t var flags = (rx.ignoreCase ? 'i' : '') +\n\t (rx.multiline ? 'm' : '') +\n\t (rx.unicode ? 'u' : '') +\n\t (SUPPORTS_Y ? 'y' : 'g');\n\n\t // ^(? + rx + ) is needed, in combination with some S slicing, to\n\t // simulate the 'y' flag.\n\t var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n\t var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];\n\t var p = 0;\n\t var q = 0;\n\t var A = [];\n\t while (q < S.length) {\n\t splitter.lastIndex = SUPPORTS_Y ? q : 0;\n\t var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q));\n\t var e;\n\t if (\n\t z === null ||\n\t (e = min$3(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n\t ) {\n\t q = advanceStringIndex(S, q, unicodeMatching);\n\t } else {\n\t A.push(S.slice(p, q));\n\t if (A.length === lim) return A;\n\t for (var i = 1; i <= z.length - 1; i++) {\n\t A.push(z[i]);\n\t if (A.length === lim) return A;\n\t }\n\t q = p = e;\n\t }\n\t }\n\t A.push(S.slice(p));\n\t return A;\n\t }\n\t ];\n\t}, !SUPPORTS_Y);\n\n\tvar ITERATOR$5 = wellKnownSymbol('iterator');\n\tvar TO_STRING_TAG$3 = wellKnownSymbol('toStringTag');\n\tvar ArrayValues = es_array_iterator.values;\n\n\tfor (var COLLECTION_NAME$1 in domIterables) {\n\t var Collection$1 = global_1[COLLECTION_NAME$1];\n\t var CollectionPrototype$1 = Collection$1 && Collection$1.prototype;\n\t if (CollectionPrototype$1) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$1[ITERATOR$5] !== ArrayValues) try {\n\t hide(CollectionPrototype$1, ITERATOR$5, ArrayValues);\n\t } catch (error) {\n\t CollectionPrototype$1[ITERATOR$5] = ArrayValues;\n\t }\n\t if (!CollectionPrototype$1[TO_STRING_TAG$3]) hide(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1);\n\t if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try {\n\t hide(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]);\n\t } catch (error) {\n\t CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME];\n\t }\n\t }\n\t }\n\t}\n\n\tvar ITERATOR$6 = wellKnownSymbol('iterator');\n\n\tvar nativeUrl = !fails(function () {\n\t var url = new URL('b?e=1', 'http://a');\n\t var searchParams = url.searchParams;\n\t url.pathname = 'c%20d';\n\t return (isPure && !url.toJSON)\n\t || !searchParams.sort\n\t || url.href !== 'http://a/c%20d?e=1'\n\t || searchParams.get('e') !== '1'\n\t || String(new URLSearchParams('?a=1')) !== 'a=1'\n\t || !searchParams[ITERATOR$6]\n\t // throws in Edge\n\t || new URL('https://a@b').username !== 'a'\n\t || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n\t // not punycoded in Edge\n\t || new URL('http://тест').host !== 'xn--e1aybc'\n\t // not escaped in Chrome 62-\n\t || new URL('http://a#б').hash !== '#%D0%B1';\n\t});\n\n\tvar anInstance = function (it, Constructor, name) {\n\t if (!(it instanceof Constructor)) {\n\t throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n\t } return it;\n\t};\n\n\tvar nativeAssign = Object.assign;\n\n\t// 19.1.2.1 Object.assign(target, source, ...)\n\t// should work with symbols and should have deterministic property order (V8 bug)\n\tvar objectAssign = !nativeAssign || fails(function () {\n\t var A = {};\n\t var B = {};\n\t // eslint-disable-next-line no-undef\n\t var symbol = Symbol();\n\t var alphabet = 'abcdefghijklmnopqrst';\n\t A[symbol] = 7;\n\t alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n\t return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n\t}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n\t var T = toObject(target);\n\t var argumentsLength = arguments.length;\n\t var index = 1;\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n\t var propertyIsEnumerable = objectPropertyIsEnumerable.f;\n\t while (argumentsLength > index) {\n\t var S = indexedObject(arguments[index++]);\n\t var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n\t var length = keys.length;\n\t var j = 0;\n\t var key;\n\t while (length > j) {\n\t key = keys[j++];\n\t if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n\t }\n\t } return T;\n\t} : nativeAssign;\n\n\t// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\n\tvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\tvar base = 36;\n\tvar tMin = 1;\n\tvar tMax = 26;\n\tvar skew = 38;\n\tvar damp = 700;\n\tvar initialBias = 72;\n\tvar initialN = 128; // 0x80\n\tvar delimiter = '-'; // '\\x2D'\n\tvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\n\tvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\tvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\n\tvar baseMinusTMin = base - tMin;\n\tvar floor$2 = Math.floor;\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t */\n\tvar ucs2decode = function (string) {\n\t var output = [];\n\t var counter = 0;\n\t var length = string.length;\n\t while (counter < length) {\n\t var value = string.charCodeAt(counter++);\n\t if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t // It's a high surrogate, and there is a next character.\n\t var extra = string.charCodeAt(counter++);\n\t if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t } else {\n\t // It's an unmatched surrogate; only append this code unit, in case the\n\t // next code unit is the high surrogate of a surrogate pair.\n\t output.push(value);\n\t counter--;\n\t }\n\t } else {\n\t output.push(value);\n\t }\n\t }\n\t return output;\n\t};\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t */\n\tvar digitToBasic = function (digit) {\n\t // 0..25 map to ASCII a..z or A..Z\n\t // 26..35 map to ASCII 0..9\n\t return digit + 22 + 75 * (digit < 26);\n\t};\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t */\n\tvar adapt = function (delta, numPoints, firstTime) {\n\t var k = 0;\n\t delta = firstTime ? floor$2(delta / damp) : delta >> 1;\n\t delta += floor$2(delta / numPoints);\n\t for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t delta = floor$2(delta / baseMinusTMin);\n\t }\n\t return floor$2(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t};\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t */\n\t// eslint-disable-next-line max-statements\n\tvar encode = function (input) {\n\t var output = [];\n\n\t // Convert the input in UCS-2 to an array of Unicode code points.\n\t input = ucs2decode(input);\n\n\t // Cache the length.\n\t var inputLength = input.length;\n\n\t // Initialize the state.\n\t var n = initialN;\n\t var delta = 0;\n\t var bias = initialBias;\n\t var i, currentValue;\n\n\t // Handle the basic code points.\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < 0x80) {\n\t output.push(stringFromCharCode(currentValue));\n\t }\n\t }\n\n\t var basicLength = output.length; // number of basic code points.\n\t var handledCPCount = basicLength; // number of code points that have been handled;\n\n\t // Finish the basic string with a delimiter unless it's empty.\n\t if (basicLength) {\n\t output.push(delimiter);\n\t }\n\n\t // Main encoding loop:\n\t while (handledCPCount < inputLength) {\n\t // All non-basic code points < n have been handled already. Find the next larger one:\n\t var m = maxInt;\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue >= n && currentValue < m) {\n\t m = currentValue;\n\t }\n\t }\n\n\t // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n\t var handledCPCountPlusOne = handledCPCount + 1;\n\t if (m - n > floor$2((maxInt - delta) / handledCPCountPlusOne)) {\n\t throw RangeError(OVERFLOW_ERROR);\n\t }\n\n\t delta += (m - n) * handledCPCountPlusOne;\n\t n = m;\n\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < n && ++delta > maxInt) {\n\t throw RangeError(OVERFLOW_ERROR);\n\t }\n\t if (currentValue == n) {\n\t // Represent delta as a generalized variable-length integer.\n\t var q = delta;\n\t for (var k = base; /* no condition */; k += base) {\n\t var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t if (q < t) {\n\t break;\n\t }\n\t var qMinusT = q - t;\n\t var baseMinusT = base - t;\n\t output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n\t q = floor$2(qMinusT / baseMinusT);\n\t }\n\n\t output.push(stringFromCharCode(digitToBasic(q)));\n\t bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t delta = 0;\n\t ++handledCPCount;\n\t }\n\t }\n\n\t ++delta;\n\t ++n;\n\t }\n\t return output.join('');\n\t};\n\n\tvar punycodeToAscii = function (input) {\n\t var encoded = [];\n\t var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n\t var i, label;\n\t for (i = 0; i < labels.length; i++) {\n\t label = labels[i];\n\t encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n\t }\n\t return encoded.join('.');\n\t};\n\n\tvar redefineAll = function (target, src, options) {\n\t for (var key in src) redefine(target, key, src[key], options);\n\t return target;\n\t};\n\n\tvar getIterator = function (it) {\n\t var iteratorMethod = getIteratorMethod(it);\n\t if (typeof iteratorMethod != 'function') {\n\t throw TypeError(String(it) + ' is not iterable');\n\t } return anObject(iteratorMethod.call(it));\n\t};\n\n\tvar ITERATOR$7 = wellKnownSymbol('iterator');\n\tvar URL_SEARCH_PARAMS = 'URLSearchParams';\n\tvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\n\tvar setInternalState$3 = internalState.set;\n\tvar getInternalParamsState = internalState.getterFor(URL_SEARCH_PARAMS);\n\tvar getInternalIteratorState = internalState.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\n\tvar plus = /\\+/g;\n\tvar sequences = Array(4);\n\n\tvar percentSequence = function (bytes) {\n\t return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n\t};\n\n\tvar percentDecode = function (sequence) {\n\t try {\n\t return decodeURIComponent(sequence);\n\t } catch (error) {\n\t return sequence;\n\t }\n\t};\n\n\tvar deserialize = function (it) {\n\t var result = it.replace(plus, ' ');\n\t var bytes = 4;\n\t try {\n\t return decodeURIComponent(result);\n\t } catch (error) {\n\t while (bytes) {\n\t result = result.replace(percentSequence(bytes--), percentDecode);\n\t }\n\t return result;\n\t }\n\t};\n\n\tvar find = /[!'()~]|%20/g;\n\n\tvar replace = {\n\t '!': '%21',\n\t \"'\": '%27',\n\t '(': '%28',\n\t ')': '%29',\n\t '~': '%7E',\n\t '%20': '+'\n\t};\n\n\tvar replacer = function (match) {\n\t return replace[match];\n\t};\n\n\tvar serialize = function (it) {\n\t return encodeURIComponent(it).replace(find, replacer);\n\t};\n\n\tvar parseSearchParams = function (result, query) {\n\t if (query) {\n\t var attributes = query.split('&');\n\t var i = 0;\n\t var attribute, entry;\n\t while (i < attributes.length) {\n\t attribute = attributes[i++];\n\t if (attribute.length) {\n\t entry = attribute.split('=');\n\t result.push({\n\t key: deserialize(entry.shift()),\n\t value: deserialize(entry.join('='))\n\t });\n\t }\n\t }\n\t } return result;\n\t};\n\n\tvar updateSearchParams = function (query) {\n\t this.entries.length = 0;\n\t parseSearchParams(this.entries, query);\n\t};\n\n\tvar validateArgumentsLength = function (passed, required) {\n\t if (passed < required) throw TypeError('Not enough arguments');\n\t};\n\n\tvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n\t setInternalState$3(this, {\n\t type: URL_SEARCH_PARAMS_ITERATOR,\n\t iterator: getIterator(getInternalParamsState(params).entries),\n\t kind: kind\n\t });\n\t}, 'Iterator', function next() {\n\t var state = getInternalIteratorState(this);\n\t var kind = state.kind;\n\t var step = state.iterator.next();\n\t var entry = step.value;\n\t if (!step.done) {\n\t step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n\t } return step;\n\t});\n\n\t// `URLSearchParams` constructor\n\t// https://url.spec.whatwg.org/#interface-urlsearchparams\n\tvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n\t anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\t var init = arguments.length > 0 ? arguments[0] : undefined;\n\t var that = this;\n\t var entries = [];\n\t var iteratorMethod, iterator, step, entryIterator, first, second, key;\n\n\t setInternalState$3(that, {\n\t type: URL_SEARCH_PARAMS,\n\t entries: entries,\n\t updateURL: null,\n\t updateSearchParams: updateSearchParams\n\t });\n\n\t if (init !== undefined) {\n\t if (isObject(init)) {\n\t iteratorMethod = getIteratorMethod(init);\n\t if (typeof iteratorMethod === 'function') {\n\t iterator = iteratorMethod.call(init);\n\t while (!(step = iterator.next()).done) {\n\t entryIterator = getIterator(anObject(step.value));\n\t if (\n\t (first = entryIterator.next()).done ||\n\t (second = entryIterator.next()).done ||\n\t !entryIterator.next().done\n\t ) throw TypeError('Expected sequence with length 2');\n\t entries.push({ key: first.value + '', value: second.value + '' });\n\t }\n\t } else for (key in init) if (has(init, key)) entries.push({ key: key, value: init[key] + '' });\n\t } else {\n\t parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n\t }\n\t }\n\t};\n\n\tvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\n\tredefineAll(URLSearchParamsPrototype, {\n\t // `URLSearchParams.prototype.appent` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n\t append: function append(name, value) {\n\t validateArgumentsLength(arguments.length, 2);\n\t var state = getInternalParamsState(this);\n\t state.entries.push({ key: name + '', value: value + '' });\n\t if (state.updateURL) state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.delete` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n\t 'delete': function (name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var state = getInternalParamsState(this);\n\t var entries = state.entries;\n\t var key = name + '';\n\t var i = 0;\n\t while (i < entries.length) {\n\t if (entries[i].key === key) entries.splice(i, 1);\n\t else i++;\n\t }\n\t if (state.updateURL) state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.get` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n\t get: function get(name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var entries = getInternalParamsState(this).entries;\n\t var key = name + '';\n\t var i = 0;\n\t for (; i < entries.length; i++) if (entries[i].key === key) return entries[i].value;\n\t return null;\n\t },\n\t // `URLSearchParams.prototype.getAll` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n\t getAll: function getAll(name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var entries = getInternalParamsState(this).entries;\n\t var key = name + '';\n\t var result = [];\n\t var i = 0;\n\t for (; i < entries.length; i++) if (entries[i].key === key) result.push(entries[i].value);\n\t return result;\n\t },\n\t // `URLSearchParams.prototype.has` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n\t has: function has(name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var entries = getInternalParamsState(this).entries;\n\t var key = name + '';\n\t var i = 0;\n\t while (i < entries.length) if (entries[i++].key === key) return true;\n\t return false;\n\t },\n\t // `URLSearchParams.prototype.set` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n\t set: function set(name, value) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var state = getInternalParamsState(this);\n\t var entries = state.entries;\n\t var found = false;\n\t var key = name + '';\n\t var val = value + '';\n\t var i = 0;\n\t var entry;\n\t for (; i < entries.length; i++) {\n\t entry = entries[i];\n\t if (entry.key === key) {\n\t if (found) entries.splice(i--, 1);\n\t else {\n\t found = true;\n\t entry.value = val;\n\t }\n\t }\n\t }\n\t if (!found) entries.push({ key: key, value: val });\n\t if (state.updateURL) state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.sort` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n\t sort: function sort() {\n\t var state = getInternalParamsState(this);\n\t var entries = state.entries;\n\t // Array#sort is not stable in some engines\n\t var slice = entries.slice();\n\t var entry, i, j;\n\t entries.length = 0;\n\t for (i = 0; i < slice.length; i++) {\n\t entry = slice[i];\n\t for (j = 0; j < i; j++) if (entries[j].key > entry.key) {\n\t entries.splice(j, 0, entry);\n\t break;\n\t }\n\t if (j === i) entries.push(entry);\n\t }\n\t if (state.updateURL) state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.forEach` method\n\t forEach: function forEach(callback /* , thisArg */) {\n\t var entries = getInternalParamsState(this).entries;\n\t var boundFunction = bindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n\t var i = 0;\n\t var entry;\n\t while (i < entries.length) {\n\t entry = entries[i++];\n\t boundFunction(entry.value, entry.key, this);\n\t }\n\t },\n\t // `URLSearchParams.prototype.keys` method\n\t keys: function keys() {\n\t return new URLSearchParamsIterator(this, 'keys');\n\t },\n\t // `URLSearchParams.prototype.values` method\n\t values: function values() {\n\t return new URLSearchParamsIterator(this, 'values');\n\t },\n\t // `URLSearchParams.prototype.entries` method\n\t entries: function entries() {\n\t return new URLSearchParamsIterator(this, 'entries');\n\t }\n\t}, { enumerable: true });\n\n\t// `URLSearchParams.prototype[@@iterator]` method\n\tredefine(URLSearchParamsPrototype, ITERATOR$7, URLSearchParamsPrototype.entries);\n\n\t// `URLSearchParams.prototype.toString` method\n\t// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\n\tredefine(URLSearchParamsPrototype, 'toString', function toString() {\n\t var entries = getInternalParamsState(this).entries;\n\t var result = [];\n\t var i = 0;\n\t var entry;\n\t while (i < entries.length) {\n\t entry = entries[i++];\n\t result.push(serialize(entry.key) + '=' + serialize(entry.value));\n\t } return result.join('&');\n\t}, { enumerable: true });\n\n\tsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n\t_export({ global: true, forced: !nativeUrl }, {\n\t URLSearchParams: URLSearchParamsConstructor\n\t});\n\n\tvar web_urlSearchParams = {\n\t URLSearchParams: URLSearchParamsConstructor,\n\t getState: getInternalParamsState\n\t};\n\n\tvar NativeURL = global_1.URL;\n\tvar URLSearchParams$1 = web_urlSearchParams.URLSearchParams;\n\tvar getInternalSearchParamsState = web_urlSearchParams.getState;\n\tvar setInternalState$4 = internalState.set;\n\tvar getInternalURLState = internalState.getterFor('URL');\n\tvar pow = Math.pow;\n\n\tvar INVALID_AUTHORITY = 'Invalid authority';\n\tvar INVALID_SCHEME = 'Invalid scheme';\n\tvar INVALID_HOST = 'Invalid host';\n\tvar INVALID_PORT = 'Invalid port';\n\n\tvar ALPHA = /[A-Za-z]/;\n\tvar ALPHANUMERIC = /[\\d+\\-.A-Za-z]/;\n\tvar DIGIT = /\\d/;\n\tvar HEX_START = /^(0x|0X)/;\n\tvar OCT = /^[0-7]+$/;\n\tvar DEC = /^\\d+$/;\n\tvar HEX = /^[\\dA-Fa-f]+$/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n\t// eslint-disable-next-line no-control-regex\n\tvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\n\tvar EOF;\n\n\tvar parseHost = function (url, input) {\n\t var result, codePoints, i;\n\t if (input.charAt(0) == '[') {\n\t if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n\t result = parseIPv6(input.slice(1, -1));\n\t if (!result) return INVALID_HOST;\n\t url.host = result;\n\t // opaque host\n\t } else if (!isSpecial(url)) {\n\t if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n\t result = '';\n\t codePoints = arrayFrom(input);\n\t for (i = 0; i < codePoints.length; i++) result += percentEncode(codePoints[i], C0ControlPercentEncodeSet);\n\t url.host = result;\n\t } else {\n\t input = punycodeToAscii(input);\n\t if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n\t result = parseIPv4(input);\n\t if (result === null) return INVALID_HOST;\n\t url.host = result;\n\t }\n\t};\n\n\tvar parseIPv4 = function (input) {\n\t var parts = input.split('.');\n\t var partsLength, numbers, i, part, R, n, ipv4;\n\t if (parts[parts.length - 1] == '') {\n\t if (parts.length) parts.pop();\n\t }\n\t partsLength = parts.length;\n\t if (partsLength > 4) return input;\n\t numbers = [];\n\t for (i = 0; i < partsLength; i++) {\n\t part = parts[i];\n\t if (part == '') return input;\n\t R = 10;\n\t if (part.length > 1 && part.charAt(0) == '0') {\n\t R = HEX_START.test(part) ? 16 : 8;\n\t part = part.slice(R == 8 ? 1 : 2);\n\t }\n\t if (part === '') {\n\t n = 0;\n\t } else {\n\t if (!(R == 10 ? DEC : R == 8 ? OCT : HEX).test(part)) return input;\n\t n = parseInt(part, R);\n\t }\n\t numbers.push(n);\n\t }\n\t for (i = 0; i < partsLength; i++) {\n\t n = numbers[i];\n\t if (i == partsLength - 1) {\n\t if (n >= pow(256, 5 - partsLength)) return null;\n\t } else if (n > 255) return null;\n\t }\n\t ipv4 = numbers.pop();\n\t for (i = 0; i < numbers.length; i++) {\n\t ipv4 += numbers[i] * pow(256, 3 - i);\n\t }\n\t return ipv4;\n\t};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseIPv6 = function (input) {\n\t var address = [0, 0, 0, 0, 0, 0, 0, 0];\n\t var pieceIndex = 0;\n\t var compress = null;\n\t var pointer = 0;\n\t var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n\t var char = function () {\n\t return input.charAt(pointer);\n\t };\n\n\t if (char() == ':') {\n\t if (input.charAt(1) != ':') return;\n\t pointer += 2;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t }\n\t while (char()) {\n\t if (pieceIndex == 8) return;\n\t if (char() == ':') {\n\t if (compress !== null) return;\n\t pointer++;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t continue;\n\t }\n\t value = length = 0;\n\t while (length < 4 && HEX.test(char())) {\n\t value = value * 16 + parseInt(char(), 16);\n\t pointer++;\n\t length++;\n\t }\n\t if (char() == '.') {\n\t if (length == 0) return;\n\t pointer -= length;\n\t if (pieceIndex > 6) return;\n\t numbersSeen = 0;\n\t while (char()) {\n\t ipv4Piece = null;\n\t if (numbersSeen > 0) {\n\t if (char() == '.' && numbersSeen < 4) pointer++;\n\t else return;\n\t }\n\t if (!DIGIT.test(char())) return;\n\t while (DIGIT.test(char())) {\n\t number = parseInt(char(), 10);\n\t if (ipv4Piece === null) ipv4Piece = number;\n\t else if (ipv4Piece == 0) return;\n\t else ipv4Piece = ipv4Piece * 10 + number;\n\t if (ipv4Piece > 255) return;\n\t pointer++;\n\t }\n\t address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n\t numbersSeen++;\n\t if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n\t }\n\t if (numbersSeen != 4) return;\n\t break;\n\t } else if (char() == ':') {\n\t pointer++;\n\t if (!char()) return;\n\t } else if (char()) return;\n\t address[pieceIndex++] = value;\n\t }\n\t if (compress !== null) {\n\t swaps = pieceIndex - compress;\n\t pieceIndex = 7;\n\t while (pieceIndex != 0 && swaps > 0) {\n\t swap = address[pieceIndex];\n\t address[pieceIndex--] = address[compress + swaps - 1];\n\t address[compress + --swaps] = swap;\n\t }\n\t } else if (pieceIndex != 8) return;\n\t return address;\n\t};\n\n\tvar findLongestZeroSequence = function (ipv6) {\n\t var maxIndex = null;\n\t var maxLength = 1;\n\t var currStart = null;\n\t var currLength = 0;\n\t var i = 0;\n\t for (; i < 8; i++) {\n\t if (ipv6[i] !== 0) {\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t currStart = null;\n\t currLength = 0;\n\t } else {\n\t if (currStart === null) currStart = i;\n\t ++currLength;\n\t }\n\t }\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t return maxIndex;\n\t};\n\n\tvar serializeHost = function (host) {\n\t var result, i, compress, ignore0;\n\t // ipv4\n\t if (typeof host == 'number') {\n\t result = [];\n\t for (i = 0; i < 4; i++) {\n\t result.unshift(host % 256);\n\t host = Math.floor(host / 256);\n\t } return result.join('.');\n\t // ipv6\n\t } else if (typeof host == 'object') {\n\t result = '';\n\t compress = findLongestZeroSequence(host);\n\t for (i = 0; i < 8; i++) {\n\t if (ignore0 && host[i] === 0) continue;\n\t if (ignore0) ignore0 = false;\n\t if (compress === i) {\n\t result += i ? ':' : '::';\n\t ignore0 = true;\n\t } else {\n\t result += host[i].toString(16);\n\t if (i < 7) result += ':';\n\t }\n\t }\n\t return '[' + result + ']';\n\t } return host;\n\t};\n\n\tvar C0ControlPercentEncodeSet = {};\n\tvar fragmentPercentEncodeSet = objectAssign({}, C0ControlPercentEncodeSet, {\n\t ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n\t});\n\tvar pathPercentEncodeSet = objectAssign({}, fragmentPercentEncodeSet, {\n\t '#': 1, '?': 1, '{': 1, '}': 1\n\t});\n\tvar userinfoPercentEncodeSet = objectAssign({}, pathPercentEncodeSet, {\n\t '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n\t});\n\n\tvar percentEncode = function (char, set) {\n\t var code = stringAt(char, 0);\n\t return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n\t};\n\n\tvar specialSchemes = {\n\t ftp: 21,\n\t file: null,\n\t gopher: 70,\n\t http: 80,\n\t https: 443,\n\t ws: 80,\n\t wss: 443\n\t};\n\n\tvar isSpecial = function (url) {\n\t return has(specialSchemes, url.scheme);\n\t};\n\n\tvar includesCredentials = function (url) {\n\t return url.username != '' || url.password != '';\n\t};\n\n\tvar cannotHaveUsernamePasswordPort = function (url) {\n\t return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n\t};\n\n\tvar isWindowsDriveLetter = function (string, normalized) {\n\t var second;\n\t return string.length == 2 && ALPHA.test(string.charAt(0))\n\t && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n\t};\n\n\tvar startsWithWindowsDriveLetter = function (string) {\n\t var third;\n\t return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n\t string.length == 2 ||\n\t ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n\t );\n\t};\n\n\tvar shortenURLsPath = function (url) {\n\t var path = url.path;\n\t var pathSize = path.length;\n\t if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n\t path.pop();\n\t }\n\t};\n\n\tvar isSingleDot = function (segment) {\n\t return segment === '.' || segment.toLowerCase() === '%2e';\n\t};\n\n\tvar isDoubleDot = function (segment) {\n\t segment = segment.toLowerCase();\n\t return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n\t};\n\n\t// States:\n\tvar SCHEME_START = {};\n\tvar SCHEME = {};\n\tvar NO_SCHEME = {};\n\tvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\n\tvar PATH_OR_AUTHORITY = {};\n\tvar RELATIVE = {};\n\tvar RELATIVE_SLASH = {};\n\tvar SPECIAL_AUTHORITY_SLASHES = {};\n\tvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\n\tvar AUTHORITY = {};\n\tvar HOST = {};\n\tvar HOSTNAME = {};\n\tvar PORT = {};\n\tvar FILE = {};\n\tvar FILE_SLASH = {};\n\tvar FILE_HOST = {};\n\tvar PATH_START = {};\n\tvar PATH = {};\n\tvar CANNOT_BE_A_BASE_URL_PATH = {};\n\tvar QUERY = {};\n\tvar FRAGMENT = {};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseURL = function (url, input, stateOverride, base) {\n\t var state = stateOverride || SCHEME_START;\n\t var pointer = 0;\n\t var buffer = '';\n\t var seenAt = false;\n\t var seenBracket = false;\n\t var seenPasswordToken = false;\n\t var codePoints, char, bufferCodePoints, failure;\n\n\t if (!stateOverride) {\n\t url.scheme = '';\n\t url.username = '';\n\t url.password = '';\n\t url.host = null;\n\t url.port = null;\n\t url.path = [];\n\t url.query = null;\n\t url.fragment = null;\n\t url.cannotBeABaseURL = false;\n\t input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n\t }\n\n\t input = input.replace(TAB_AND_NEW_LINE, '');\n\n\t codePoints = arrayFrom(input);\n\n\t while (pointer <= codePoints.length) {\n\t char = codePoints[pointer];\n\t switch (state) {\n\t case SCHEME_START:\n\t if (char && ALPHA.test(char)) {\n\t buffer += char.toLowerCase();\n\t state = SCHEME;\n\t } else if (!stateOverride) {\n\t state = NO_SCHEME;\n\t continue;\n\t } else return INVALID_SCHEME;\n\t break;\n\n\t case SCHEME:\n\t if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n\t buffer += char.toLowerCase();\n\t } else if (char == ':') {\n\t if (stateOverride) {\n\t if (\n\t (isSpecial(url) != has(specialSchemes, buffer)) ||\n\t (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n\t (url.scheme == 'file' && !url.host)\n\t ) return;\n\t }\n\t url.scheme = buffer;\n\t if (stateOverride) {\n\t if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n\t return;\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file') {\n\t state = FILE;\n\t } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n\t state = SPECIAL_RELATIVE_OR_AUTHORITY;\n\t } else if (isSpecial(url)) {\n\t state = SPECIAL_AUTHORITY_SLASHES;\n\t } else if (codePoints[pointer + 1] == '/') {\n\t state = PATH_OR_AUTHORITY;\n\t pointer++;\n\t } else {\n\t url.cannotBeABaseURL = true;\n\t url.path.push('');\n\t state = CANNOT_BE_A_BASE_URL_PATH;\n\t }\n\t } else if (!stateOverride) {\n\t buffer = '';\n\t state = NO_SCHEME;\n\t pointer = 0;\n\t continue;\n\t } else return INVALID_SCHEME;\n\t break;\n\n\t case NO_SCHEME:\n\t if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n\t if (base.cannotBeABaseURL && char == '#') {\n\t url.scheme = base.scheme;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t url.cannotBeABaseURL = true;\n\t state = FRAGMENT;\n\t break;\n\t }\n\t state = base.scheme == 'file' ? FILE : RELATIVE;\n\t continue;\n\n\t case SPECIAL_RELATIVE_OR_AUTHORITY:\n\t if (char == '/' && codePoints[pointer + 1] == '/') {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n\t pointer++;\n\t } else {\n\t state = RELATIVE;\n\t continue;\n\t } break;\n\n\t case PATH_OR_AUTHORITY:\n\t if (char == '/') {\n\t state = AUTHORITY;\n\t break;\n\t } else {\n\t state = PATH;\n\t continue;\n\t }\n\n\t case RELATIVE:\n\t url.scheme = base.scheme;\n\t if (char == EOF) {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n\t state = RELATIVE_SLASH;\n\t } else if (char == '?') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.path.pop();\n\t state = PATH;\n\t continue;\n\t } break;\n\n\t case RELATIVE_SLASH:\n\t if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n\t } else if (char == '/') {\n\t state = AUTHORITY;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t state = PATH;\n\t continue;\n\t } break;\n\n\t case SPECIAL_AUTHORITY_SLASHES:\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n\t if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n\t pointer++;\n\t break;\n\n\t case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n\t if (char != '/' && char != '\\\\') {\n\t state = AUTHORITY;\n\t continue;\n\t } break;\n\n\t case AUTHORITY:\n\t if (char == '@') {\n\t if (seenAt) buffer = '%40' + buffer;\n\t seenAt = true;\n\t bufferCodePoints = arrayFrom(buffer);\n\t for (var i = 0; i < bufferCodePoints.length; i++) {\n\t var codePoint = bufferCodePoints[i];\n\t if (codePoint == ':' && !seenPasswordToken) {\n\t seenPasswordToken = true;\n\t continue;\n\t }\n\t var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n\t if (seenPasswordToken) url.password += encodedCodePoints;\n\t else url.username += encodedCodePoints;\n\t }\n\t buffer = '';\n\t } else if (\n\t char == EOF || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial(url))\n\t ) {\n\t if (seenAt && buffer == '') return INVALID_AUTHORITY;\n\t pointer -= arrayFrom(buffer).length + 1;\n\t buffer = '';\n\t state = HOST;\n\t } else buffer += char;\n\t break;\n\n\t case HOST:\n\t case HOSTNAME:\n\t if (stateOverride && url.scheme == 'file') {\n\t state = FILE_HOST;\n\t continue;\n\t } else if (char == ':' && !seenBracket) {\n\t if (buffer == '') return INVALID_HOST;\n\t failure = parseHost(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PORT;\n\t if (stateOverride == HOSTNAME) return;\n\t } else if (\n\t char == EOF || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial(url))\n\t ) {\n\t if (isSpecial(url) && buffer == '') return INVALID_HOST;\n\t if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n\t failure = parseHost(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PATH_START;\n\t if (stateOverride) return;\n\t continue;\n\t } else {\n\t if (char == '[') seenBracket = true;\n\t else if (char == ']') seenBracket = false;\n\t buffer += char;\n\t } break;\n\n\t case PORT:\n\t if (DIGIT.test(char)) {\n\t buffer += char;\n\t } else if (\n\t char == EOF || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial(url)) ||\n\t stateOverride\n\t ) {\n\t if (buffer != '') {\n\t var port = parseInt(buffer, 10);\n\t if (port > 0xFFFF) return INVALID_PORT;\n\t url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n\t buffer = '';\n\t }\n\t if (stateOverride) return;\n\t state = PATH_START;\n\t continue;\n\t } else return INVALID_PORT;\n\t break;\n\n\t case FILE:\n\t url.scheme = 'file';\n\t if (char == '/' || char == '\\\\') state = FILE_SLASH;\n\t else if (base && base.scheme == 'file') {\n\t if (char == EOF) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '?') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else {\n\t if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t shortenURLsPath(url);\n\t }\n\t state = PATH;\n\t continue;\n\t }\n\t } else {\n\t state = PATH;\n\t continue;\n\t } break;\n\n\t case FILE_SLASH:\n\t if (char == '/' || char == '\\\\') {\n\t state = FILE_HOST;\n\t break;\n\t }\n\t if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n\t if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n\t else url.host = base.host;\n\t }\n\t state = PATH;\n\t continue;\n\n\t case FILE_HOST:\n\t if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n\t if (!stateOverride && isWindowsDriveLetter(buffer)) {\n\t state = PATH;\n\t } else if (buffer == '') {\n\t url.host = '';\n\t if (stateOverride) return;\n\t state = PATH_START;\n\t } else {\n\t failure = parseHost(url, buffer);\n\t if (failure) return failure;\n\t if (url.host == 'localhost') url.host = '';\n\t if (stateOverride) return;\n\t buffer = '';\n\t state = PATH_START;\n\t } continue;\n\t } else buffer += char;\n\t break;\n\n\t case PATH_START:\n\t if (isSpecial(url)) {\n\t state = PATH;\n\t if (char != '/' && char != '\\\\') continue;\n\t } else if (!stateOverride && char == '?') {\n\t url.query = '';\n\t state = QUERY;\n\t } else if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else if (char != EOF) {\n\t state = PATH;\n\t if (char != '/') continue;\n\t } break;\n\n\t case PATH:\n\t if (\n\t char == EOF || char == '/' ||\n\t (char == '\\\\' && isSpecial(url)) ||\n\t (!stateOverride && (char == '?' || char == '#'))\n\t ) {\n\t if (isDoubleDot(buffer)) {\n\t shortenURLsPath(url);\n\t if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n\t url.path.push('');\n\t }\n\t } else if (isSingleDot(buffer)) {\n\t if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n\t url.path.push('');\n\t }\n\t } else {\n\t if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n\t if (url.host) url.host = '';\n\t buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n\t }\n\t url.path.push(buffer);\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n\t while (url.path.length > 1 && url.path[0] === '') {\n\t url.path.shift();\n\t }\n\t }\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t }\n\t } else {\n\t buffer += percentEncode(char, pathPercentEncodeSet);\n\t } break;\n\n\t case CANNOT_BE_A_BASE_URL_PATH:\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else if (char != EOF) {\n\t url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n\t } break;\n\n\t case QUERY:\n\t if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else if (char != EOF) {\n\t if (char == \"'\" && isSpecial(url)) url.query += '%27';\n\t else if (char == '#') url.query += '%23';\n\t else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n\t } break;\n\n\t case FRAGMENT:\n\t if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n\t break;\n\t }\n\n\t pointer++;\n\t }\n\t};\n\n\t// `URL` constructor\n\t// https://url.spec.whatwg.org/#url-class\n\tvar URLConstructor = function URL(url /* , base */) {\n\t var that = anInstance(this, URLConstructor, 'URL');\n\t var base = arguments.length > 1 ? arguments[1] : undefined;\n\t var urlString = String(url);\n\t var state = setInternalState$4(that, { type: 'URL' });\n\t var baseState, failure;\n\t if (base !== undefined) {\n\t if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n\t else {\n\t failure = parseURL(baseState = {}, String(base));\n\t if (failure) throw TypeError(failure);\n\t }\n\t }\n\t failure = parseURL(state, urlString, null, baseState);\n\t if (failure) throw TypeError(failure);\n\t var searchParams = state.searchParams = new URLSearchParams$1();\n\t var searchParamsState = getInternalSearchParamsState(searchParams);\n\t searchParamsState.updateSearchParams(state.query);\n\t searchParamsState.updateURL = function () {\n\t state.query = String(searchParams) || null;\n\t };\n\t if (!descriptors) {\n\t that.href = serializeURL.call(that);\n\t that.origin = getOrigin.call(that);\n\t that.protocol = getProtocol.call(that);\n\t that.username = getUsername.call(that);\n\t that.password = getPassword.call(that);\n\t that.host = getHost.call(that);\n\t that.hostname = getHostname.call(that);\n\t that.port = getPort.call(that);\n\t that.pathname = getPathname.call(that);\n\t that.search = getSearch.call(that);\n\t that.searchParams = getSearchParams.call(that);\n\t that.hash = getHash.call(that);\n\t }\n\t};\n\n\tvar URLPrototype = URLConstructor.prototype;\n\n\tvar serializeURL = function () {\n\t var url = getInternalURLState(this);\n\t var scheme = url.scheme;\n\t var username = url.username;\n\t var password = url.password;\n\t var host = url.host;\n\t var port = url.port;\n\t var path = url.path;\n\t var query = url.query;\n\t var fragment = url.fragment;\n\t var output = scheme + ':';\n\t if (host !== null) {\n\t output += '//';\n\t if (includesCredentials(url)) {\n\t output += username + (password ? ':' + password : '') + '@';\n\t }\n\t output += serializeHost(host);\n\t if (port !== null) output += ':' + port;\n\t } else if (scheme == 'file') output += '//';\n\t output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t if (query !== null) output += '?' + query;\n\t if (fragment !== null) output += '#' + fragment;\n\t return output;\n\t};\n\n\tvar getOrigin = function () {\n\t var url = getInternalURLState(this);\n\t var scheme = url.scheme;\n\t var port = url.port;\n\t if (scheme == 'blob') try {\n\t return new URL(scheme.path[0]).origin;\n\t } catch (error) {\n\t return 'null';\n\t }\n\t if (scheme == 'file' || !isSpecial(url)) return 'null';\n\t return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n\t};\n\n\tvar getProtocol = function () {\n\t return getInternalURLState(this).scheme + ':';\n\t};\n\n\tvar getUsername = function () {\n\t return getInternalURLState(this).username;\n\t};\n\n\tvar getPassword = function () {\n\t return getInternalURLState(this).password;\n\t};\n\n\tvar getHost = function () {\n\t var url = getInternalURLState(this);\n\t var host = url.host;\n\t var port = url.port;\n\t return host === null ? ''\n\t : port === null ? serializeHost(host)\n\t : serializeHost(host) + ':' + port;\n\t};\n\n\tvar getHostname = function () {\n\t var host = getInternalURLState(this).host;\n\t return host === null ? '' : serializeHost(host);\n\t};\n\n\tvar getPort = function () {\n\t var port = getInternalURLState(this).port;\n\t return port === null ? '' : String(port);\n\t};\n\n\tvar getPathname = function () {\n\t var url = getInternalURLState(this);\n\t var path = url.path;\n\t return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t};\n\n\tvar getSearch = function () {\n\t var query = getInternalURLState(this).query;\n\t return query ? '?' + query : '';\n\t};\n\n\tvar getSearchParams = function () {\n\t return getInternalURLState(this).searchParams;\n\t};\n\n\tvar getHash = function () {\n\t var fragment = getInternalURLState(this).fragment;\n\t return fragment ? '#' + fragment : '';\n\t};\n\n\tvar accessorDescriptor = function (getter, setter) {\n\t return { get: getter, set: setter, configurable: true, enumerable: true };\n\t};\n\n\tif (descriptors) {\n\t objectDefineProperties(URLPrototype, {\n\t // `URL.prototype.href` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-href\n\t href: accessorDescriptor(serializeURL, function (href) {\n\t var url = getInternalURLState(this);\n\t var urlString = String(href);\n\t var failure = parseURL(url, urlString);\n\t if (failure) throw TypeError(failure);\n\t getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.origin` getter\n\t // https://url.spec.whatwg.org/#dom-url-origin\n\t origin: accessorDescriptor(getOrigin),\n\t // `URL.prototype.protocol` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-protocol\n\t protocol: accessorDescriptor(getProtocol, function (protocol) {\n\t var url = getInternalURLState(this);\n\t parseURL(url, String(protocol) + ':', SCHEME_START);\n\t }),\n\t // `URL.prototype.username` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-username\n\t username: accessorDescriptor(getUsername, function (username) {\n\t var url = getInternalURLState(this);\n\t var codePoints = arrayFrom(String(username));\n\t if (cannotHaveUsernamePasswordPort(url)) return;\n\t url.username = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n\t }\n\t }),\n\t // `URL.prototype.password` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-password\n\t password: accessorDescriptor(getPassword, function (password) {\n\t var url = getInternalURLState(this);\n\t var codePoints = arrayFrom(String(password));\n\t if (cannotHaveUsernamePasswordPort(url)) return;\n\t url.password = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n\t }\n\t }),\n\t // `URL.prototype.host` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-host\n\t host: accessorDescriptor(getHost, function (host) {\n\t var url = getInternalURLState(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL(url, String(host), HOST);\n\t }),\n\t // `URL.prototype.hostname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hostname\n\t hostname: accessorDescriptor(getHostname, function (hostname) {\n\t var url = getInternalURLState(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL(url, String(hostname), HOSTNAME);\n\t }),\n\t // `URL.prototype.port` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-port\n\t port: accessorDescriptor(getPort, function (port) {\n\t var url = getInternalURLState(this);\n\t if (cannotHaveUsernamePasswordPort(url)) return;\n\t port = String(port);\n\t if (port == '') url.port = null;\n\t else parseURL(url, port, PORT);\n\t }),\n\t // `URL.prototype.pathname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-pathname\n\t pathname: accessorDescriptor(getPathname, function (pathname) {\n\t var url = getInternalURLState(this);\n\t if (url.cannotBeABaseURL) return;\n\t url.path = [];\n\t parseURL(url, pathname + '', PATH_START);\n\t }),\n\t // `URL.prototype.search` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-search\n\t search: accessorDescriptor(getSearch, function (search) {\n\t var url = getInternalURLState(this);\n\t search = String(search);\n\t if (search == '') {\n\t url.query = null;\n\t } else {\n\t if ('?' == search.charAt(0)) search = search.slice(1);\n\t url.query = '';\n\t parseURL(url, search, QUERY);\n\t }\n\t getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.searchParams` getter\n\t // https://url.spec.whatwg.org/#dom-url-searchparams\n\t searchParams: accessorDescriptor(getSearchParams),\n\t // `URL.prototype.hash` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hash\n\t hash: accessorDescriptor(getHash, function (hash) {\n\t var url = getInternalURLState(this);\n\t hash = String(hash);\n\t if (hash == '') {\n\t url.fragment = null;\n\t return;\n\t }\n\t if ('#' == hash.charAt(0)) hash = hash.slice(1);\n\t url.fragment = '';\n\t parseURL(url, hash, FRAGMENT);\n\t })\n\t });\n\t}\n\n\t// `URL.prototype.toJSON` method\n\t// https://url.spec.whatwg.org/#dom-url-tojson\n\tredefine(URLPrototype, 'toJSON', function toJSON() {\n\t return serializeURL.call(this);\n\t}, { enumerable: true });\n\n\t// `URL.prototype.toString` method\n\t// https://url.spec.whatwg.org/#URL-stringification-behavior\n\tredefine(URLPrototype, 'toString', function toString() {\n\t return serializeURL.call(this);\n\t}, { enumerable: true });\n\n\tif (NativeURL) {\n\t var nativeCreateObjectURL = NativeURL.createObjectURL;\n\t var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n\t // `URL.createObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n\t return nativeCreateObjectURL.apply(NativeURL, arguments);\n\t });\n\t // `URL.revokeObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n\t return nativeRevokeObjectURL.apply(NativeURL, arguments);\n\t });\n\t}\n\n\tsetToStringTag(URLConstructor, 'URL');\n\n\t_export({ global: true, forced: !nativeUrl, sham: !descriptors }, {\n\t URL: URLConstructor\n\t});\n\n\tfunction _typeof(obj) {\n\t \"@babel/helpers - typeof\";\n\n\t if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n\t _typeof = function (obj) {\n\t return typeof obj;\n\t };\n\t } else {\n\t _typeof = function (obj) {\n\t return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t };\n\t }\n\n\t return _typeof(obj);\n\t}\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t}\n\n\tfunction _defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t}\n\n\tfunction _createClass(Constructor, protoProps, staticProps) {\n\t if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) _defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t}\n\n\tfunction ownKeys$1(object, enumerableOnly) {\n\t var keys = Object.keys(object);\n\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(object);\n\t if (enumerableOnly) symbols = symbols.filter(function (sym) {\n\t return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n\t });\n\t keys.push.apply(keys, symbols);\n\t }\n\n\t return keys;\n\t}\n\n\tfunction _objectSpread2(target) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t var source = arguments[i] != null ? arguments[i] : {};\n\n\t if (i % 2) {\n\t ownKeys$1(Object(source), true).forEach(function (key) {\n\t _defineProperty(target, key, source[key]);\n\t });\n\t } else if (Object.getOwnPropertyDescriptors) {\n\t Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\t } else {\n\t ownKeys$1(Object(source)).forEach(function (key) {\n\t Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n\t });\n\t }\n\t }\n\n\t return target;\n\t}\n\n\tfunction _slicedToArray(arr, i) {\n\t return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n\t}\n\n\tfunction _toConsumableArray(arr) {\n\t return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n\t}\n\n\tfunction _arrayWithoutHoles(arr) {\n\t if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n\t}\n\n\tfunction _arrayWithHoles(arr) {\n\t if (Array.isArray(arr)) return arr;\n\t}\n\n\tfunction _iterableToArray(iter) {\n\t if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n\t}\n\n\tfunction _iterableToArrayLimit(arr, i) {\n\t if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n\t var _arr = [];\n\t var _n = true;\n\t var _d = false;\n\t var _e = undefined;\n\n\t try {\n\t for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t _arr.push(_s.value);\n\n\t if (i && _arr.length === i) break;\n\t }\n\t } catch (err) {\n\t _d = true;\n\t _e = err;\n\t } finally {\n\t try {\n\t if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n\t } finally {\n\t if (_d) throw _e;\n\t }\n\t }\n\n\t return _arr;\n\t}\n\n\tfunction _unsupportedIterableToArray(o, minLen) {\n\t if (!o) return;\n\t if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\t var n = Object.prototype.toString.call(o).slice(8, -1);\n\t if (n === \"Object\" && o.constructor) n = o.constructor.name;\n\t if (n === \"Map\" || n === \"Set\") return Array.from(n);\n\t if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n\t}\n\n\tfunction _arrayLikeToArray(arr, len) {\n\t if (len == null || len > arr.length) len = arr.length;\n\n\t for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n\t return arr2;\n\t}\n\n\tfunction _nonIterableSpread() {\n\t throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t}\n\n\tfunction _nonIterableRest() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t}\n\n\t(function (global) {\n\t /**\r\n\t * Polyfill URLSearchParams\r\n\t *\r\n\t * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n\t */\n\t var checkIfIteratorIsSupported = function checkIfIteratorIsSupported() {\n\t try {\n\t return !!Symbol.iterator;\n\t } catch (error) {\n\t return false;\n\t }\n\t };\n\n\t var iteratorSupported = checkIfIteratorIsSupported();\n\n\t var createIterator = function createIterator(items) {\n\t var iterator = {\n\t next: function next() {\n\t var value = items.shift();\n\t return {\n\t done: value === void 0,\n\t value: value\n\t };\n\t }\n\t };\n\n\t if (iteratorSupported) {\n\t iterator[Symbol.iterator] = function () {\n\t return iterator;\n\t };\n\t }\n\n\t return iterator;\n\t };\n\t /**\r\n\t * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n\t * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n\t */\n\n\n\t var serializeParam = function serializeParam(value) {\n\t return encodeURIComponent(value).replace(/%20/g, '+');\n\t };\n\n\t var deserializeParam = function deserializeParam(value) {\n\t return decodeURIComponent(String(value).replace(/\\+/g, ' '));\n\t };\n\n\t var polyfillURLSearchParams = function polyfillURLSearchParams() {\n\t var URLSearchParams = function URLSearchParams(searchString) {\n\t Object.defineProperty(this, '_entries', {\n\t writable: true,\n\t value: {}\n\t });\n\n\t var typeofSearchString = _typeof(searchString);\n\n\t if (typeofSearchString === 'undefined') ; else if (typeofSearchString === 'string') {\n\t if (searchString !== '') {\n\t this._fromString(searchString);\n\t }\n\t } else if (searchString instanceof URLSearchParams) {\n\t var _this = this;\n\n\t searchString.forEach(function (value, name) {\n\t _this.append(name, value);\n\t });\n\t } else if (searchString !== null && typeofSearchString === 'object') {\n\t if (Object.prototype.toString.call(searchString) === '[object Array]') {\n\t for (var i = 0; i < searchString.length; i++) {\n\t var entry = searchString[i];\n\n\t if (Object.prototype.toString.call(entry) === '[object Array]' || entry.length !== 2) {\n\t this.append(entry[0], entry[1]);\n\t } else {\n\t throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\n\t }\n\t }\n\t } else {\n\t for (var key in searchString) {\n\t if (searchString.hasOwnProperty(key)) {\n\t this.append(key, searchString[key]);\n\t }\n\t }\n\t }\n\t } else {\n\t throw new TypeError('Unsupported input\\'s type for URLSearchParams');\n\t }\n\t };\n\n\t var proto = URLSearchParams.prototype;\n\n\t proto.append = function (name, value) {\n\t if (name in this._entries) {\n\t this._entries[name].push(String(value));\n\t } else {\n\t this._entries[name] = [String(value)];\n\t }\n\t };\n\n\t proto.delete = function (name) {\n\t delete this._entries[name];\n\t };\n\n\t proto.get = function (name) {\n\t return name in this._entries ? this._entries[name][0] : null;\n\t };\n\n\t proto.getAll = function (name) {\n\t return name in this._entries ? this._entries[name].slice(0) : [];\n\t };\n\n\t proto.has = function (name) {\n\t return name in this._entries;\n\t };\n\n\t proto.set = function (name, value) {\n\t this._entries[name] = [String(value)];\n\t };\n\n\t proto.forEach = function (callback, thisArg) {\n\t var entries;\n\n\t for (var name in this._entries) {\n\t if (this._entries.hasOwnProperty(name)) {\n\t entries = this._entries[name];\n\n\t for (var i = 0; i < entries.length; i++) {\n\t callback.call(thisArg, entries[i], name, this);\n\t }\n\t }\n\t }\n\t };\n\n\t proto.keys = function () {\n\t var items = [];\n\t this.forEach(function (value, name) {\n\t items.push(name);\n\t });\n\t return createIterator(items);\n\t };\n\n\t proto.values = function () {\n\t var items = [];\n\t this.forEach(function (value) {\n\t items.push(value);\n\t });\n\t return createIterator(items);\n\t };\n\n\t proto.entries = function () {\n\t var items = [];\n\t this.forEach(function (value, name) {\n\t items.push([name, value]);\n\t });\n\t return createIterator(items);\n\t };\n\n\t if (iteratorSupported) {\n\t proto[Symbol.iterator] = proto.entries;\n\t }\n\n\t proto.toString = function () {\n\t var searchArray = [];\n\t this.forEach(function (value, name) {\n\t searchArray.push(serializeParam(name) + '=' + serializeParam(value));\n\t });\n\t return searchArray.join('&');\n\t };\n\n\t global.URLSearchParams = URLSearchParams;\n\t };\n\n\t if (!('URLSearchParams' in global) || new global.URLSearchParams('?a=1').toString() !== 'a=1') {\n\t polyfillURLSearchParams();\n\t }\n\n\t var proto = global.URLSearchParams.prototype;\n\n\t if (typeof proto.sort !== 'function') {\n\t proto.sort = function () {\n\t var _this = this;\n\n\t var items = [];\n\t this.forEach(function (value, name) {\n\t items.push([name, value]);\n\n\t if (!_this._entries) {\n\t _this.delete(name);\n\t }\n\t });\n\t items.sort(function (a, b) {\n\t if (a[0] < b[0]) {\n\t return -1;\n\t } else if (a[0] > b[0]) {\n\t return +1;\n\t } else {\n\t return 0;\n\t }\n\t });\n\n\t if (_this._entries) {\n\t // force reset because IE keeps keys index\n\t _this._entries = {};\n\t }\n\n\t for (var i = 0; i < items.length; i++) {\n\t this.append(items[i][0], items[i][1]);\n\t }\n\t };\n\t }\n\n\t if (typeof proto._fromString !== 'function') {\n\t Object.defineProperty(proto, '_fromString', {\n\t enumerable: false,\n\t configurable: false,\n\t writable: false,\n\t value: function value(searchString) {\n\t if (this._entries) {\n\t this._entries = {};\n\t } else {\n\t var keys = [];\n\t this.forEach(function (value, name) {\n\t keys.push(name);\n\t });\n\n\t for (var i = 0; i < keys.length; i++) {\n\t this.delete(keys[i]);\n\t }\n\t }\n\n\t searchString = searchString.replace(/^\\?/, '');\n\t var attributes = searchString.split('&');\n\t var attribute;\n\n\t for (var i = 0; i < attributes.length; i++) {\n\t attribute = attributes[i].split('=');\n\t this.append(deserializeParam(attribute[0]), attribute.length > 1 ? deserializeParam(attribute[1]) : '');\n\t }\n\t }\n\t });\n\t } // HTMLAnchorElement\n\n\t})(typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : commonjsGlobal);\n\n\t(function (global) {\n\t /**\r\n\t * Polyfill URL\r\n\t *\r\n\t * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n\t */\n\t var checkIfURLIsSupported = function checkIfURLIsSupported() {\n\t try {\n\t var u = new global.URL('b', 'http://a');\n\t u.pathname = 'c%20d';\n\t return u.href === 'http://a/c%20d' && u.searchParams;\n\t } catch (e) {\n\t return false;\n\t }\n\t };\n\n\t var polyfillURL = function polyfillURL() {\n\t var _URL = global.URL;\n\n\t var URL = function URL(url, base) {\n\t if (typeof url !== 'string') url = String(url); // Only create another document if the base is different from current location.\n\n\t var doc = document,\n\t baseElement;\n\n\t if (base && (global.location === void 0 || base !== global.location.href)) {\n\t doc = document.implementation.createHTMLDocument('');\n\t baseElement = doc.createElement('base');\n\t baseElement.href = base;\n\t doc.head.appendChild(baseElement);\n\n\t try {\n\t if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\n\t } catch (err) {\n\t throw new Error('URL unable to set base ' + base + ' due to ' + err);\n\t }\n\t }\n\n\t var anchorElement = doc.createElement('a');\n\t anchorElement.href = url;\n\n\t if (baseElement) {\n\t doc.body.appendChild(anchorElement);\n\t anchorElement.href = anchorElement.href; // force href to refresh\n\t }\n\n\t if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\n\t throw new TypeError('Invalid URL');\n\t }\n\n\t Object.defineProperty(this, '_anchorElement', {\n\t value: anchorElement\n\t }); // create a linked searchParams which reflect its changes on URL\n\n\t var searchParams = new global.URLSearchParams(this.search);\n\t var enableSearchUpdate = true;\n\t var enableSearchParamsUpdate = true;\n\n\t var _this = this;\n\n\t ['append', 'delete', 'set'].forEach(function (methodName) {\n\t var method = searchParams[methodName];\n\n\t searchParams[methodName] = function () {\n\t method.apply(searchParams, arguments);\n\n\t if (enableSearchUpdate) {\n\t enableSearchParamsUpdate = false;\n\t _this.search = searchParams.toString();\n\t enableSearchParamsUpdate = true;\n\t }\n\t };\n\t });\n\t Object.defineProperty(this, 'searchParams', {\n\t value: searchParams,\n\t enumerable: true\n\t });\n\t var search = void 0;\n\t Object.defineProperty(this, '_updateSearchParams', {\n\t enumerable: false,\n\t configurable: false,\n\t writable: false,\n\t value: function value() {\n\t if (this.search !== search) {\n\t search = this.search;\n\n\t if (enableSearchParamsUpdate) {\n\t enableSearchUpdate = false;\n\n\t this.searchParams._fromString(this.search);\n\n\t enableSearchUpdate = true;\n\t }\n\t }\n\t }\n\t });\n\t };\n\n\t var proto = URL.prototype;\n\n\t var linkURLWithAnchorAttribute = function linkURLWithAnchorAttribute(attributeName) {\n\t Object.defineProperty(proto, attributeName, {\n\t get: function get() {\n\t return this._anchorElement[attributeName];\n\t },\n\t set: function set(value) {\n\t this._anchorElement[attributeName] = value;\n\t },\n\t enumerable: true\n\t });\n\t };\n\n\t ['hash', 'host', 'hostname', 'port', 'protocol'].forEach(function (attributeName) {\n\t linkURLWithAnchorAttribute(attributeName);\n\t });\n\t Object.defineProperty(proto, 'search', {\n\t get: function get() {\n\t return this._anchorElement['search'];\n\t },\n\t set: function set(value) {\n\t this._anchorElement['search'] = value;\n\n\t this._updateSearchParams();\n\t },\n\t enumerable: true\n\t });\n\t Object.defineProperties(proto, {\n\t 'toString': {\n\t get: function get() {\n\t var _this = this;\n\n\t return function () {\n\t return _this.href;\n\t };\n\t }\n\t },\n\t 'href': {\n\t get: function get() {\n\t return this._anchorElement.href.replace(/\\?$/, '');\n\t },\n\t set: function set(value) {\n\t this._anchorElement.href = value;\n\n\t this._updateSearchParams();\n\t },\n\t enumerable: true\n\t },\n\t 'pathname': {\n\t get: function get() {\n\t return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\n\t },\n\t set: function set(value) {\n\t this._anchorElement.pathname = value;\n\t },\n\t enumerable: true\n\t },\n\t 'origin': {\n\t get: function get() {\n\t // get expected port from protocol\n\t var expectedPort = {\n\t 'http:': 80,\n\t 'https:': 443,\n\t 'ftp:': 21\n\t }[this._anchorElement.protocol]; // add port to origin if, expected port is different than actual port\n\t // and it is not empty f.e http://foo:8080\n\t // 8080 != 80 && 8080 != ''\n\n\t var addPortToOrigin = this._anchorElement.port != expectedPort && this._anchorElement.port !== '';\n\t return this._anchorElement.protocol + '//' + this._anchorElement.hostname + (addPortToOrigin ? ':' + this._anchorElement.port : '');\n\t },\n\t enumerable: true\n\t },\n\t 'password': {\n\t // TODO\n\t get: function get() {\n\t return '';\n\t },\n\t set: function set(value) {},\n\t enumerable: true\n\t },\n\t 'username': {\n\t // TODO\n\t get: function get() {\n\t return '';\n\t },\n\t set: function set(value) {},\n\t enumerable: true\n\t }\n\t });\n\n\t URL.createObjectURL = function (blob) {\n\t return _URL.createObjectURL.apply(_URL, arguments);\n\t };\n\n\t URL.revokeObjectURL = function (url) {\n\t return _URL.revokeObjectURL.apply(_URL, arguments);\n\t };\n\n\t global.URL = URL;\n\t };\n\n\t if (!checkIfURLIsSupported()) {\n\t polyfillURL();\n\t }\n\n\t if (global.location !== void 0 && !('origin' in global.location)) {\n\t var getOrigin = function getOrigin() {\n\t return global.location.protocol + '//' + global.location.hostname + (global.location.port ? ':' + global.location.port : '');\n\t };\n\n\t try {\n\t Object.defineProperty(global.location, 'origin', {\n\t get: getOrigin,\n\t enumerable: true\n\t });\n\t } catch (e) {\n\t setInterval(function () {\n\t global.location.origin = getOrigin();\n\t }, 100);\n\t }\n\t }\n\t})(typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : commonjsGlobal);\n\n\tvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\tvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n\tvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n\t var array = [];\n\t array[IS_CONCAT_SPREADABLE] = false;\n\t return array.concat()[0] !== array;\n\t});\n\n\tvar SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('concat');\n\n\tvar isConcatSpreadable = function (O) {\n\t if (!isObject(O)) return false;\n\t var spreadable = O[IS_CONCAT_SPREADABLE];\n\t return spreadable !== undefined ? !!spreadable : isArray(O);\n\t};\n\n\tvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT$1;\n\n\t// `Array.prototype.concat` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n\t// with adding support of @@isConcatSpreadable and @@species\n\t_export({ target: 'Array', proto: true, forced: FORCED }, {\n\t concat: function concat(arg) { // eslint-disable-line no-unused-vars\n\t var O = toObject(this);\n\t var A = arraySpeciesCreate(O, 0);\n\t var n = 0;\n\t var i, k, length, len, E;\n\t for (i = -1, length = arguments.length; i < length; i++) {\n\t E = i === -1 ? O : arguments[i];\n\t if (isConcatSpreadable(E)) {\n\t len = toLength(E.length);\n\t if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n\t for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n\t } else {\n\t if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n\t createProperty(A, n++, E);\n\t }\n\t }\n\t A.length = n;\n\t return A;\n\t }\n\t});\n\n\t// `Array.prototype.fill` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n\tvar arrayFill = function fill(value /* , start = 0, end = @length */) {\n\t var O = toObject(this);\n\t var length = toLength(O.length);\n\t var argumentsLength = arguments.length;\n\t var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n\t var end = argumentsLength > 2 ? arguments[2] : undefined;\n\t var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n\t while (endPos > index) O[index++] = value;\n\t return O;\n\t};\n\n\t// `Array.prototype.fill` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n\t_export({ target: 'Array', proto: true }, { fill: arrayFill });\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables('fill');\n\n\tvar nativeLastIndexOf = [].lastIndexOf;\n\tvar NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\n\tvar SLOPPY_METHOD$3 = sloppyArrayMethod('lastIndexOf');\n\n\t// `Array.prototype.lastIndexOf` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\tvar arrayLastIndexOf = (NEGATIVE_ZERO$1 || SLOPPY_METHOD$3) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n\t // convert -0 to +0\n\t if (NEGATIVE_ZERO$1) return nativeLastIndexOf.apply(this, arguments) || 0;\n\t var O = toIndexedObject(this);\n\t var length = toLength(O.length);\n\t var index = length - 1;\n\t if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n\t if (index < 0) index = length + index;\n\t for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n\t return -1;\n\t} : nativeLastIndexOf;\n\n\t// `Array.prototype.lastIndexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\t_export({ target: 'Array', proto: true, forced: arrayLastIndexOf !== [].lastIndexOf }, {\n\t lastIndexOf: arrayLastIndexOf\n\t});\n\n\tvar defineProperty$3 = objectDefineProperty.f;\n\n\tvar FunctionPrototype = Function.prototype;\n\tvar FunctionPrototypeToString = FunctionPrototype.toString;\n\tvar nameRE = /^\\s*function ([^ (]*)/;\n\tvar NAME = 'name';\n\n\t// Function instances `.name` property\n\t// https://tc39.github.io/ecma262/#sec-function-instances-name\n\tif (descriptors && !(NAME in FunctionPrototype)) {\n\t defineProperty$3(FunctionPrototype, NAME, {\n\t configurable: true,\n\t get: function () {\n\t try {\n\t return FunctionPrototypeToString.call(this).match(nameRE)[1];\n\t } catch (error) {\n\t return '';\n\t }\n\t }\n\t });\n\t}\n\n\tvar aFunction$1 = function (variable) {\n\t return typeof variable == 'function' ? variable : undefined;\n\t};\n\n\tvar getBuiltIn = function (namespace, method) {\n\t return arguments.length < 2 ? aFunction$1(path[namespace]) || aFunction$1(global_1[namespace])\n\t : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];\n\t};\n\n\tvar SPECIES$5 = wellKnownSymbol('species');\n\n\tvar setSpecies = function (CONSTRUCTOR_NAME) {\n\t var C = getBuiltIn(CONSTRUCTOR_NAME);\n\t var defineProperty = objectDefineProperty.f;\n\t if (descriptors && C && !C[SPECIES$5]) defineProperty(C, SPECIES$5, {\n\t configurable: true,\n\t get: function () { return this; }\n\t });\n\t};\n\n\tvar iterate = createCommonjsModule(function (module) {\n\tvar BREAK = {};\n\n\tvar exports = module.exports = function (iterable, fn, that, ENTRIES, ITERATOR) {\n\t var boundFunction = bindContext(fn, that, ENTRIES ? 2 : 1);\n\t var iterator, iterFn, index, length, result, step;\n\n\t if (ITERATOR) {\n\t iterator = iterable;\n\t } else {\n\t iterFn = getIteratorMethod(iterable);\n\t if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n\t // optimisation for array iterators\n\t if (isArrayIteratorMethod(iterFn)) {\n\t for (index = 0, length = toLength(iterable.length); length > index; index++) {\n\t result = ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]);\n\t if (result === BREAK) return BREAK;\n\t } return;\n\t }\n\t iterator = iterFn.call(iterable);\n\t }\n\n\t while (!(step = iterator.next()).done) {\n\t if (callWithSafeIterationClosing(iterator, boundFunction, step.value, ENTRIES) === BREAK) return BREAK;\n\t }\n\t};\n\n\texports.BREAK = BREAK;\n\t});\n\n\tvar location = global_1.location;\n\tvar set$1 = global_1.setImmediate;\n\tvar clear = global_1.clearImmediate;\n\tvar process = global_1.process;\n\tvar MessageChannel = global_1.MessageChannel;\n\tvar Dispatch = global_1.Dispatch;\n\tvar counter = 0;\n\tvar queue = {};\n\tvar ONREADYSTATECHANGE = 'onreadystatechange';\n\tvar defer, channel, port;\n\n\tvar run = function (id) {\n\t // eslint-disable-next-line no-prototype-builtins\n\t if (queue.hasOwnProperty(id)) {\n\t var fn = queue[id];\n\t delete queue[id];\n\t fn();\n\t }\n\t};\n\n\tvar runner = function (id) {\n\t return function () {\n\t run(id);\n\t };\n\t};\n\n\tvar listener = function (event) {\n\t run(event.data);\n\t};\n\n\tvar post = function (id) {\n\t // old engines have not location.origin\n\t global_1.postMessage(id + '', location.protocol + '//' + location.host);\n\t};\n\n\t// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\n\tif (!set$1 || !clear) {\n\t set$1 = function setImmediate(fn) {\n\t var args = [];\n\t var i = 1;\n\t while (arguments.length > i) args.push(arguments[i++]);\n\t queue[++counter] = function () {\n\t // eslint-disable-next-line no-new-func\n\t (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n\t };\n\t defer(counter);\n\t return counter;\n\t };\n\t clear = function clearImmediate(id) {\n\t delete queue[id];\n\t };\n\t // Node.js 0.8-\n\t if (classofRaw(process) == 'process') {\n\t defer = function (id) {\n\t process.nextTick(runner(id));\n\t };\n\t // Sphere (JS game engine) Dispatch API\n\t } else if (Dispatch && Dispatch.now) {\n\t defer = function (id) {\n\t Dispatch.now(runner(id));\n\t };\n\t // Browsers with MessageChannel, includes WebWorkers\n\t } else if (MessageChannel) {\n\t channel = new MessageChannel();\n\t port = channel.port2;\n\t channel.port1.onmessage = listener;\n\t defer = bindContext(port.postMessage, port, 1);\n\t // Browsers with postMessage, skip WebWorkers\n\t // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n\t } else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post)) {\n\t defer = post;\n\t global_1.addEventListener('message', listener, false);\n\t // IE8-\n\t } else if (ONREADYSTATECHANGE in documentCreateElement('script')) {\n\t defer = function (id) {\n\t html.appendChild(documentCreateElement('script'))[ONREADYSTATECHANGE] = function () {\n\t html.removeChild(this);\n\t run(id);\n\t };\n\t };\n\t // Rest old browsers\n\t } else {\n\t defer = function (id) {\n\t setTimeout(runner(id), 0);\n\t };\n\t }\n\t}\n\n\tvar task = {\n\t set: set$1,\n\t clear: clear\n\t};\n\n\tvar navigator$1 = global_1.navigator;\n\n\tvar userAgent = navigator$1 && navigator$1.userAgent || '';\n\n\tvar getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\n\n\tvar macrotask = task.set;\n\n\n\tvar MutationObserver$1 = global_1.MutationObserver || global_1.WebKitMutationObserver;\n\tvar process$1 = global_1.process;\n\tvar Promise$1 = global_1.Promise;\n\tvar IS_NODE = classofRaw(process$1) == 'process';\n\t// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\n\tvar queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(global_1, 'queueMicrotask');\n\tvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\n\tvar flush, head, last, notify, toggle, node, promise;\n\n\t// modern engines have queueMicrotask method\n\tif (!queueMicrotask) {\n\t flush = function () {\n\t var parent, fn;\n\t if (IS_NODE && (parent = process$1.domain)) parent.exit();\n\t while (head) {\n\t fn = head.fn;\n\t head = head.next;\n\t try {\n\t fn();\n\t } catch (error) {\n\t if (head) notify();\n\t else last = undefined;\n\t throw error;\n\t }\n\t } last = undefined;\n\t if (parent) parent.enter();\n\t };\n\n\t // Node.js\n\t if (IS_NODE) {\n\t notify = function () {\n\t process$1.nextTick(flush);\n\t };\n\t // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n\t } else if (MutationObserver$1 && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) {\n\t toggle = true;\n\t node = document.createTextNode('');\n\t new MutationObserver$1(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n\t notify = function () {\n\t node.data = toggle = !toggle;\n\t };\n\t // environments with maybe non-completely correct, but existent Promise\n\t } else if (Promise$1 && Promise$1.resolve) {\n\t // Promise.resolve without an argument throws an error in LG WebOS 2\n\t promise = Promise$1.resolve(undefined);\n\t notify = function () {\n\t promise.then(flush);\n\t };\n\t // for other environments - macrotask based on:\n\t // - setImmediate\n\t // - MessageChannel\n\t // - window.postMessag\n\t // - onreadystatechange\n\t // - setTimeout\n\t } else {\n\t notify = function () {\n\t // strange IE + webpack dev server bug - use .call(global)\n\t macrotask.call(global_1, flush);\n\t };\n\t }\n\t}\n\n\tvar microtask = queueMicrotask || function (fn) {\n\t var task = { fn: fn, next: undefined };\n\t if (last) last.next = task;\n\t if (!head) {\n\t head = task;\n\t notify();\n\t } last = task;\n\t};\n\n\tvar PromiseCapability = function (C) {\n\t var resolve, reject;\n\t this.promise = new C(function ($$resolve, $$reject) {\n\t if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n\t resolve = $$resolve;\n\t reject = $$reject;\n\t });\n\t this.resolve = aFunction(resolve);\n\t this.reject = aFunction(reject);\n\t};\n\n\t// 25.4.1.5 NewPromiseCapability(C)\n\tvar f$7 = function (C) {\n\t return new PromiseCapability(C);\n\t};\n\n\tvar newPromiseCapability = {\n\t\tf: f$7\n\t};\n\n\tvar promiseResolve = function (C, x) {\n\t anObject(C);\n\t if (isObject(x) && x.constructor === C) return x;\n\t var promiseCapability = newPromiseCapability.f(C);\n\t var resolve = promiseCapability.resolve;\n\t resolve(x);\n\t return promiseCapability.promise;\n\t};\n\n\tvar hostReportErrors = function (a, b) {\n\t var console = global_1.console;\n\t if (console && console.error) {\n\t arguments.length === 1 ? console.error(a) : console.error(a, b);\n\t }\n\t};\n\n\tvar perform = function (exec) {\n\t try {\n\t return { error: false, value: exec() };\n\t } catch (error) {\n\t return { error: true, value: error };\n\t }\n\t};\n\n\tvar task$1 = task.set;\n\n\n\n\n\n\n\n\n\n\n\tvar SPECIES$6 = wellKnownSymbol('species');\n\tvar PROMISE = 'Promise';\n\tvar getInternalState$3 = internalState.get;\n\tvar setInternalState$5 = internalState.set;\n\tvar getInternalPromiseState = internalState.getterFor(PROMISE);\n\tvar PromiseConstructor = global_1[PROMISE];\n\tvar TypeError$1 = global_1.TypeError;\n\tvar document$3 = global_1.document;\n\tvar process$2 = global_1.process;\n\tvar $fetch = global_1.fetch;\n\tvar versions = process$2 && process$2.versions;\n\tvar v8 = versions && versions.v8 || '';\n\tvar newPromiseCapability$1 = newPromiseCapability.f;\n\tvar newGenericPromiseCapability = newPromiseCapability$1;\n\tvar IS_NODE$1 = classofRaw(process$2) == 'process';\n\tvar DISPATCH_EVENT = !!(document$3 && document$3.createEvent && global_1.dispatchEvent);\n\tvar UNHANDLED_REJECTION = 'unhandledrejection';\n\tvar REJECTION_HANDLED = 'rejectionhandled';\n\tvar PENDING = 0;\n\tvar FULFILLED = 1;\n\tvar REJECTED = 2;\n\tvar HANDLED = 1;\n\tvar UNHANDLED = 2;\n\tvar Internal, OwnPromiseCapability, PromiseWrapper;\n\n\tvar FORCED$1 = isForced_1(PROMISE, function () {\n\t // correct subclassing with @@species support\n\t var promise = PromiseConstructor.resolve(1);\n\t var empty = function () { /* empty */ };\n\t var FakePromise = (promise.constructor = {})[SPECIES$6] = function (exec) {\n\t exec(empty, empty);\n\t };\n\t // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n\t return !((IS_NODE$1 || typeof PromiseRejectionEvent == 'function')\n\t && (!isPure )\n\t && promise.then(empty) instanceof FakePromise\n\t // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n\t // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n\t // we can't detect it synchronously, so just check versions\n\t && v8.indexOf('6.6') !== 0\n\t && userAgent.indexOf('Chrome/66') === -1);\n\t});\n\n\tvar INCORRECT_ITERATION$1 = FORCED$1 || !checkCorrectnessOfIteration(function (iterable) {\n\t PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n\t});\n\n\t// helpers\n\tvar isThenable = function (it) {\n\t var then;\n\t return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n\t};\n\n\tvar notify$1 = function (promise, state, isReject) {\n\t if (state.notified) return;\n\t state.notified = true;\n\t var chain = state.reactions;\n\t microtask(function () {\n\t var value = state.value;\n\t var ok = state.state == FULFILLED;\n\t var i = 0;\n\t var run = function (reaction) {\n\t var handler = ok ? reaction.ok : reaction.fail;\n\t var resolve = reaction.resolve;\n\t var reject = reaction.reject;\n\t var domain = reaction.domain;\n\t var result, then, exited;\n\t try {\n\t if (handler) {\n\t if (!ok) {\n\t if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n\t state.rejection = HANDLED;\n\t }\n\t if (handler === true) result = value;\n\t else {\n\t if (domain) domain.enter();\n\t result = handler(value); // may throw\n\t if (domain) {\n\t domain.exit();\n\t exited = true;\n\t }\n\t }\n\t if (result === reaction.promise) {\n\t reject(TypeError$1('Promise-chain cycle'));\n\t } else if (then = isThenable(result)) {\n\t then.call(result, resolve, reject);\n\t } else resolve(result);\n\t } else reject(value);\n\t } catch (error) {\n\t if (domain && !exited) domain.exit();\n\t reject(error);\n\t }\n\t };\n\t while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n\t state.reactions = [];\n\t state.notified = false;\n\t if (isReject && !state.rejection) onUnhandled(promise, state);\n\t });\n\t};\n\n\tvar dispatchEvent = function (name, promise, reason) {\n\t var event, handler;\n\t if (DISPATCH_EVENT) {\n\t event = document$3.createEvent('Event');\n\t event.promise = promise;\n\t event.reason = reason;\n\t event.initEvent(name, false, true);\n\t global_1.dispatchEvent(event);\n\t } else event = { promise: promise, reason: reason };\n\t if (handler = global_1['on' + name]) handler(event);\n\t else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n\t};\n\n\tvar onUnhandled = function (promise, state) {\n\t task$1.call(global_1, function () {\n\t var value = state.value;\n\t var IS_UNHANDLED = isUnhandled(state);\n\t var result;\n\t if (IS_UNHANDLED) {\n\t result = perform(function () {\n\t if (IS_NODE$1) {\n\t process$2.emit('unhandledRejection', value, promise);\n\t } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n\t });\n\t // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n\t state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED;\n\t if (result.error) throw result.value;\n\t }\n\t });\n\t};\n\n\tvar isUnhandled = function (state) {\n\t return state.rejection !== HANDLED && !state.parent;\n\t};\n\n\tvar onHandleUnhandled = function (promise, state) {\n\t task$1.call(global_1, function () {\n\t if (IS_NODE$1) {\n\t process$2.emit('rejectionHandled', promise);\n\t } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n\t });\n\t};\n\n\tvar bind = function (fn, promise, state, unwrap) {\n\t return function (value) {\n\t fn(promise, state, value, unwrap);\n\t };\n\t};\n\n\tvar internalReject = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t state.value = value;\n\t state.state = REJECTED;\n\t notify$1(promise, state, true);\n\t};\n\n\tvar internalResolve = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t try {\n\t if (promise === value) throw TypeError$1(\"Promise can't be resolved itself\");\n\t var then = isThenable(value);\n\t if (then) {\n\t microtask(function () {\n\t var wrapper = { done: false };\n\t try {\n\t then.call(value,\n\t bind(internalResolve, promise, wrapper, state),\n\t bind(internalReject, promise, wrapper, state)\n\t );\n\t } catch (error) {\n\t internalReject(promise, wrapper, error, state);\n\t }\n\t });\n\t } else {\n\t state.value = value;\n\t state.state = FULFILLED;\n\t notify$1(promise, state, false);\n\t }\n\t } catch (error) {\n\t internalReject(promise, { done: false }, error, state);\n\t }\n\t};\n\n\t// constructor polyfill\n\tif (FORCED$1) {\n\t // 25.4.3.1 Promise(executor)\n\t PromiseConstructor = function Promise(executor) {\n\t anInstance(this, PromiseConstructor, PROMISE);\n\t aFunction(executor);\n\t Internal.call(this);\n\t var state = getInternalState$3(this);\n\t try {\n\t executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n\t } catch (error) {\n\t internalReject(this, state, error);\n\t }\n\t };\n\t // eslint-disable-next-line no-unused-vars\n\t Internal = function Promise(executor) {\n\t setInternalState$5(this, {\n\t type: PROMISE,\n\t done: false,\n\t notified: false,\n\t parent: false,\n\t reactions: [],\n\t rejection: false,\n\t state: PENDING,\n\t value: undefined\n\t });\n\t };\n\t Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n\t // `Promise.prototype.then` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n\t then: function then(onFulfilled, onRejected) {\n\t var state = getInternalPromiseState(this);\n\t var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor));\n\t reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n\t reaction.fail = typeof onRejected == 'function' && onRejected;\n\t reaction.domain = IS_NODE$1 ? process$2.domain : undefined;\n\t state.parent = true;\n\t state.reactions.push(reaction);\n\t if (state.state != PENDING) notify$1(this, state, false);\n\t return reaction.promise;\n\t },\n\t // `Promise.prototype.catch` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n\t 'catch': function (onRejected) {\n\t return this.then(undefined, onRejected);\n\t }\n\t });\n\t OwnPromiseCapability = function () {\n\t var promise = new Internal();\n\t var state = getInternalState$3(promise);\n\t this.promise = promise;\n\t this.resolve = bind(internalResolve, promise, state);\n\t this.reject = bind(internalReject, promise, state);\n\t };\n\t newPromiseCapability.f = newPromiseCapability$1 = function (C) {\n\t return C === PromiseConstructor || C === PromiseWrapper\n\t ? new OwnPromiseCapability(C)\n\t : newGenericPromiseCapability(C);\n\t };\n\n\t // wrap fetch result\n\t if ( typeof $fetch == 'function') _export({ global: true, enumerable: true, forced: true }, {\n\t // eslint-disable-next-line no-unused-vars\n\t fetch: function fetch(input) {\n\t return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments));\n\t }\n\t });\n\t}\n\n\t_export({ global: true, wrap: true, forced: FORCED$1 }, {\n\t Promise: PromiseConstructor\n\t});\n\n\tsetToStringTag(PromiseConstructor, PROMISE, false);\n\tsetSpecies(PROMISE);\n\n\tPromiseWrapper = path[PROMISE];\n\n\t// statics\n\t_export({ target: PROMISE, stat: true, forced: FORCED$1 }, {\n\t // `Promise.reject` method\n\t // https://tc39.github.io/ecma262/#sec-promise.reject\n\t reject: function reject(r) {\n\t var capability = newPromiseCapability$1(this);\n\t capability.reject.call(undefined, r);\n\t return capability.promise;\n\t }\n\t});\n\n\t_export({ target: PROMISE, stat: true, forced: FORCED$1 }, {\n\t // `Promise.resolve` method\n\t // https://tc39.github.io/ecma262/#sec-promise.resolve\n\t resolve: function resolve(x) {\n\t return promiseResolve( this, x);\n\t }\n\t});\n\n\t_export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION$1 }, {\n\t // `Promise.all` method\n\t // https://tc39.github.io/ecma262/#sec-promise.all\n\t all: function all(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$1(C);\n\t var resolve = capability.resolve;\n\t var reject = capability.reject;\n\t var result = perform(function () {\n\t var $promiseResolve = aFunction(C.resolve);\n\t var values = [];\n\t var counter = 0;\n\t var remaining = 1;\n\t iterate(iterable, function (promise) {\n\t var index = counter++;\n\t var alreadyCalled = false;\n\t values.push(undefined);\n\t remaining++;\n\t $promiseResolve.call(C, promise).then(function (value) {\n\t if (alreadyCalled) return;\n\t alreadyCalled = true;\n\t values[index] = value;\n\t --remaining || resolve(values);\n\t }, reject);\n\t });\n\t --remaining || resolve(values);\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t },\n\t // `Promise.race` method\n\t // https://tc39.github.io/ecma262/#sec-promise.race\n\t race: function race(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$1(C);\n\t var reject = capability.reject;\n\t var result = perform(function () {\n\t var $promiseResolve = aFunction(C.resolve);\n\t iterate(iterable, function (promise) {\n\t $promiseResolve.call(C, promise).then(capability.resolve, reject);\n\t });\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t }\n\t});\n\n\tvar max$3 = Math.max;\n\tvar min$4 = Math.min;\n\tvar MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n\tvar SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('splice');\n\n\t// `Array.prototype.splice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n\t// with adding support of @@species\n\t_export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT$2 }, {\n\t splice: function splice(start, deleteCount /* , ...items */) {\n\t var O = toObject(this);\n\t var len = toLength(O.length);\n\t var actualStart = toAbsoluteIndex(start, len);\n\t var argumentsLength = arguments.length;\n\t var insertCount, actualDeleteCount, A, k, from, to;\n\t if (argumentsLength === 0) {\n\t insertCount = actualDeleteCount = 0;\n\t } else if (argumentsLength === 1) {\n\t insertCount = 0;\n\t actualDeleteCount = len - actualStart;\n\t } else {\n\t insertCount = argumentsLength - 2;\n\t actualDeleteCount = min$4(max$3(toInteger(deleteCount), 0), len - actualStart);\n\t }\n\t if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) {\n\t throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n\t }\n\t A = arraySpeciesCreate(O, actualDeleteCount);\n\t for (k = 0; k < actualDeleteCount; k++) {\n\t from = actualStart + k;\n\t if (from in O) createProperty(A, k, O[from]);\n\t }\n\t A.length = actualDeleteCount;\n\t if (insertCount < actualDeleteCount) {\n\t for (k = actualStart; k < len - actualDeleteCount; k++) {\n\t from = k + actualDeleteCount;\n\t to = k + insertCount;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n\t } else if (insertCount > actualDeleteCount) {\n\t for (k = len - actualDeleteCount; k > actualStart; k--) {\n\t from = k + actualDeleteCount - 1;\n\t to = k + insertCount - 1;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t }\n\t for (k = 0; k < insertCount; k++) {\n\t O[k + actualStart] = arguments[k + 2];\n\t }\n\t O.length = len - actualDeleteCount + insertCount;\n\t return A;\n\t }\n\t});\n\n\t// @@match logic\n\tfixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n\t return [\n\t // `String.prototype.match` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.match\n\t function match(regexp) {\n\t var O = requireObjectCoercible(this);\n\t var matcher = regexp == undefined ? undefined : regexp[MATCH];\n\t return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n\t },\n\t // `RegExp.prototype[@@match]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n\t function (regexp) {\n\t var res = maybeCallNative(nativeMatch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\n\t if (!rx.global) return regexpExecAbstract(rx, S);\n\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t var A = [];\n\t var n = 0;\n\t var result;\n\t while ((result = regexpExecAbstract(rx, S)) !== null) {\n\t var matchStr = String(result[0]);\n\t A[n] = matchStr;\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n\t n++;\n\t }\n\t return n === 0 ? null : A;\n\t }\n\t ];\n\t});\n\n\tvar internalFilter = arrayMethods(2);\n\tvar SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport('filter');\n\n\t// `Array.prototype.filter` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t// with adding support of @@species\n\t_export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT$3 }, {\n\t filter: function filter(callbackfn /* , thisArg */) {\n\t return internalFilter(this, callbackfn, arguments[1]);\n\t }\n\t});\n\n\tvar internalMap = arrayMethods(1);\n\tvar SPECIES_SUPPORT$4 = arrayMethodHasSpeciesSupport('map');\n\n\t// `Array.prototype.map` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t// with adding support of @@species\n\t_export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT$4 }, {\n\t map: function map(callbackfn /* , thisArg */) {\n\t return internalMap(this, callbackfn, arguments[1]);\n\t }\n\t});\n\n\t// `Array.prototype.{ reduce, reduceRight }` methods implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n\tvar arrayReduce = function (that, callbackfn, argumentsLength, memo, isRight) {\n\t aFunction(callbackfn);\n\t var O = toObject(that);\n\t var self = indexedObject(O);\n\t var length = toLength(O.length);\n\t var index = isRight ? length - 1 : 0;\n\t var i = isRight ? -1 : 1;\n\t if (argumentsLength < 2) while (true) {\n\t if (index in self) {\n\t memo = self[index];\n\t index += i;\n\t break;\n\t }\n\t index += i;\n\t if (isRight ? index < 0 : length <= index) {\n\t throw TypeError('Reduce of empty array with no initial value');\n\t }\n\t }\n\t for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n\t memo = callbackfn(memo, self[index], index, O);\n\t }\n\t return memo;\n\t};\n\n\tvar SLOPPY_METHOD$4 = sloppyArrayMethod('reduce');\n\n\t// `Array.prototype.reduce` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t_export({ target: 'Array', proto: true, forced: SLOPPY_METHOD$4 }, {\n\t reduce: function reduce(callbackfn /* , initialValue */) {\n\t return arrayReduce(this, callbackfn, arguments.length, arguments[1], false);\n\t }\n\t});\n\n\tvar nativeIsFrozen = Object.isFrozen;\n\tvar FAILS_ON_PRIMITIVES$1 = fails(function () { nativeIsFrozen(1); });\n\n\t// `Object.isFrozen` method\n\t// https://tc39.github.io/ecma262/#sec-object.isfrozen\n\t_export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$1 }, {\n\t isFrozen: function isFrozen(it) {\n\t return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true;\n\t }\n\t});\n\n\tvar inheritIfRequired = function (that, target, C) {\n\t var S = target.constructor;\n\t var P;\n\t if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && objectSetPrototypeOf) {\n\t objectSetPrototypeOf(that, P);\n\t } return that;\n\t};\n\n\tvar defineProperty$4 = objectDefineProperty.f;\n\tvar getOwnPropertyNames = objectGetOwnPropertyNames.f;\n\n\n\n\n\n\n\n\tvar MATCH$2 = wellKnownSymbol('match');\n\tvar NativeRegExp = global_1.RegExp;\n\tvar RegExpPrototype$1 = NativeRegExp.prototype;\n\tvar re1 = /a/g;\n\tvar re2 = /a/g;\n\n\t// \"new\" should create a new object, old webkit bug\n\tvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\n\tvar FORCED$2 = isForced_1('RegExp', descriptors && (!CORRECT_NEW || fails(function () {\n\t re2[MATCH$2] = false;\n\t // RegExp constructor can alter flags and IsRegExp works correct with @@match\n\t return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n\t})));\n\n\t// `RegExp` constructor\n\t// https://tc39.github.io/ecma262/#sec-regexp-constructor\n\tif (FORCED$2) {\n\t var RegExpWrapper = function RegExp(pattern, flags) {\n\t var thisIsRegExp = this instanceof RegExpWrapper;\n\t var patternIsRegExp = isRegexp(pattern);\n\t var flagsAreUndefined = flags === undefined;\n\t return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n\t : inheritIfRequired(CORRECT_NEW\n\t ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n\t : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n\t ? pattern.source\n\t : pattern, patternIsRegExp && flagsAreUndefined ? regexpFlags.call(pattern) : flags)\n\t , thisIsRegExp ? this : RegExpPrototype$1, RegExpWrapper);\n\t };\n\t var proxy = function (key) {\n\t key in RegExpWrapper || defineProperty$4(RegExpWrapper, key, {\n\t configurable: true,\n\t get: function () { return NativeRegExp[key]; },\n\t set: function (it) { NativeRegExp[key] = it; }\n\t });\n\t };\n\t var keys$1 = getOwnPropertyNames(NativeRegExp);\n\t var i = 0;\n\t while (i < keys$1.length) proxy(keys$1[i++]);\n\t RegExpPrototype$1.constructor = RegExpWrapper;\n\t RegExpWrapper.prototype = RegExpPrototype$1;\n\t redefine(global_1, 'RegExp', RegExpWrapper);\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\n\tsetSpecies('RegExp');\n\n\tvar defineProperty$5 = objectDefineProperty.f;\n\n\n\n\n\n\tvar DataView = global_1.DataView;\n\tvar DataViewPrototype = DataView && DataView.prototype;\n\tvar Int8Array$1 = global_1.Int8Array;\n\tvar Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype;\n\tvar Uint8ClampedArray = global_1.Uint8ClampedArray;\n\tvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\n\tvar TypedArray = Int8Array$1 && objectGetPrototypeOf(Int8Array$1);\n\tvar TypedArrayPrototype = Int8ArrayPrototype && objectGetPrototypeOf(Int8ArrayPrototype);\n\tvar ObjectPrototype$3 = Object.prototype;\n\tvar isPrototypeOf = ObjectPrototype$3.isPrototypeOf;\n\n\tvar TO_STRING_TAG$4 = wellKnownSymbol('toStringTag');\n\tvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n\tvar NATIVE_ARRAY_BUFFER = !!(global_1.ArrayBuffer && global_1.DataView);\n\tvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!objectSetPrototypeOf;\n\tvar TYPED_ARRAY_TAG_REQIRED = false;\n\tvar NAME$1;\n\n\tvar TypedArrayConstructorsList = {\n\t Int8Array: 1,\n\t Uint8Array: 1,\n\t Uint8ClampedArray: 1,\n\t Int16Array: 2,\n\t Uint16Array: 2,\n\t Int32Array: 4,\n\t Uint32Array: 4,\n\t Float32Array: 4,\n\t Float64Array: 8\n\t};\n\n\tvar isView = function isView(it) {\n\t var klass = classof(it);\n\t return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n\t};\n\n\tvar isTypedArray = function (it) {\n\t return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n\t};\n\n\tvar aTypedArray = function (it) {\n\t if (isTypedArray(it)) return it;\n\t throw TypeError('Target is not a typed array');\n\t};\n\n\tvar aTypedArrayConstructor = function (C) {\n\t if (objectSetPrototypeOf) {\n\t if (isPrototypeOf.call(TypedArray, C)) return C;\n\t } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME$1)) {\n\t var TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n\t return C;\n\t }\n\t } throw TypeError('Target is not a typed array constructor');\n\t};\n\n\tvar exportProto = function (KEY, property, forced) {\n\t if (!descriptors) return;\n\t if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n\t var TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n\t delete TypedArrayConstructor.prototype[KEY];\n\t }\n\t }\n\t if (!TypedArrayPrototype[KEY] || forced) {\n\t redefine(TypedArrayPrototype, KEY, forced ? property\n\t : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n\t }\n\t};\n\n\tvar exportStatic = function (KEY, property, forced) {\n\t var ARRAY, TypedArrayConstructor;\n\t if (!descriptors) return;\n\t if (objectSetPrototypeOf) {\n\t if (forced) for (ARRAY in TypedArrayConstructorsList) {\n\t TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n\t delete TypedArrayConstructor[KEY];\n\t }\n\t }\n\t if (!TypedArray[KEY] || forced) {\n\t // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n\t try {\n\t return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array$1[KEY] || property);\n\t } catch (error) { /* empty */ }\n\t } else return;\n\t }\n\t for (ARRAY in TypedArrayConstructorsList) {\n\t TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n\t redefine(TypedArrayConstructor, KEY, property);\n\t }\n\t }\n\t};\n\n\tfor (NAME$1 in TypedArrayConstructorsList) {\n\t if (!global_1[NAME$1]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n\t}\n\n\t// WebKit bug - typed arrays constructors prototype is Object.prototype\n\tif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n\t // eslint-disable-next-line no-shadow\n\t TypedArray = function TypedArray() {\n\t throw TypeError('Incorrect invocation');\n\t };\n\t if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) {\n\t if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1], TypedArray);\n\t }\n\t}\n\n\tif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype$3) {\n\t TypedArrayPrototype = TypedArray.prototype;\n\t if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) {\n\t if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1].prototype, TypedArrayPrototype);\n\t }\n\t}\n\n\t// WebKit bug - one more object in Uint8ClampedArray prototype chain\n\tif (NATIVE_ARRAY_BUFFER_VIEWS && objectGetPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n\t objectSetPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n\t}\n\n\tif (descriptors && !has(TypedArrayPrototype, TO_STRING_TAG$4)) {\n\t TYPED_ARRAY_TAG_REQIRED = true;\n\t defineProperty$5(TypedArrayPrototype, TO_STRING_TAG$4, { get: function () {\n\t return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n\t } });\n\t for (NAME$1 in TypedArrayConstructorsList) if (global_1[NAME$1]) {\n\t hide(global_1[NAME$1], TYPED_ARRAY_TAG, NAME$1);\n\t }\n\t}\n\n\t// WebKit bug - the same parent prototype for typed arrays and data view\n\tif (NATIVE_ARRAY_BUFFER && objectSetPrototypeOf && objectGetPrototypeOf(DataViewPrototype) !== ObjectPrototype$3) {\n\t objectSetPrototypeOf(DataViewPrototype, ObjectPrototype$3);\n\t}\n\n\tvar arrayBufferViewCore = {\n\t NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n\t NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n\t TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n\t aTypedArray: aTypedArray,\n\t aTypedArrayConstructor: aTypedArrayConstructor,\n\t exportProto: exportProto,\n\t exportStatic: exportStatic,\n\t isView: isView,\n\t isTypedArray: isTypedArray,\n\t TypedArray: TypedArray,\n\t TypedArrayPrototype: TypedArrayPrototype\n\t};\n\n\t/* eslint-disable no-new */\n\n\n\n\tvar NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n\tvar ArrayBuffer = global_1.ArrayBuffer;\n\tvar Int8Array$2 = global_1.Int8Array;\n\n\tvar typedArraysConstructorsRequiresWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails(function () {\n\t Int8Array$2(1);\n\t}) || !fails(function () {\n\t new Int8Array$2(-1);\n\t}) || !checkCorrectnessOfIteration(function (iterable) {\n\t new Int8Array$2();\n\t new Int8Array$2(null);\n\t new Int8Array$2(1.5);\n\t new Int8Array$2(iterable);\n\t}, true) || fails(function () {\n\t // Safari 11 bug\n\t return new Int8Array$2(new ArrayBuffer(2), 1, undefined).length !== 1;\n\t});\n\n\t// `ToIndex` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toindex\n\tvar toIndex = function (it) {\n\t if (it === undefined) return 0;\n\t var number = toInteger(it);\n\t var length = toLength(number);\n\t if (number !== length) throw RangeError('Wrong length or index');\n\t return length;\n\t};\n\n\tvar arrayBuffer = createCommonjsModule(function (module, exports) {\n\n\n\tvar NATIVE_ARRAY_BUFFER = arrayBufferViewCore.NATIVE_ARRAY_BUFFER;\n\n\n\n\n\n\n\n\tvar getOwnPropertyNames = objectGetOwnPropertyNames.f;\n\tvar defineProperty = objectDefineProperty.f;\n\n\n\n\n\tvar getInternalState = internalState.get;\n\tvar setInternalState = internalState.set;\n\tvar ARRAY_BUFFER = 'ArrayBuffer';\n\tvar DATA_VIEW = 'DataView';\n\tvar PROTOTYPE = 'prototype';\n\tvar WRONG_LENGTH = 'Wrong length';\n\tvar WRONG_INDEX = 'Wrong index';\n\tvar NativeArrayBuffer = global_1[ARRAY_BUFFER];\n\tvar $ArrayBuffer = NativeArrayBuffer;\n\tvar $DataView = global_1[DATA_VIEW];\n\tvar Math = global_1.Math;\n\tvar RangeError = global_1.RangeError;\n\t// eslint-disable-next-line no-shadow-restricted-names\n\tvar Infinity = 1 / 0;\n\tvar abs = Math.abs;\n\tvar pow = Math.pow;\n\tvar floor = Math.floor;\n\tvar log = Math.log;\n\tvar LN2 = Math.LN2;\n\n\t// IEEE754 conversions based on https://github.com/feross/ieee754\n\tvar packIEEE754 = function (number, mantissaLength, bytes) {\n\t var buffer = new Array(bytes);\n\t var exponentLength = bytes * 8 - mantissaLength - 1;\n\t var eMax = (1 << exponentLength) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n\t var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n\t var index = 0;\n\t var exponent, mantissa, c;\n\t number = abs(number);\n\t // eslint-disable-next-line no-self-compare\n\t if (number != number || number === Infinity) {\n\t // eslint-disable-next-line no-self-compare\n\t mantissa = number != number ? 1 : 0;\n\t exponent = eMax;\n\t } else {\n\t exponent = floor(log(number) / LN2);\n\t if (number * (c = pow(2, -exponent)) < 1) {\n\t exponent--;\n\t c *= 2;\n\t }\n\t if (exponent + eBias >= 1) {\n\t number += rt / c;\n\t } else {\n\t number += rt * pow(2, 1 - eBias);\n\t }\n\t if (number * c >= 2) {\n\t exponent++;\n\t c /= 2;\n\t }\n\t if (exponent + eBias >= eMax) {\n\t mantissa = 0;\n\t exponent = eMax;\n\t } else if (exponent + eBias >= 1) {\n\t mantissa = (number * c - 1) * pow(2, mantissaLength);\n\t exponent = exponent + eBias;\n\t } else {\n\t mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n\t exponent = 0;\n\t }\n\t }\n\t for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n\t exponent = exponent << mantissaLength | mantissa;\n\t exponentLength += mantissaLength;\n\t for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n\t buffer[--index] |= sign * 128;\n\t return buffer;\n\t};\n\n\tvar unpackIEEE754 = function (buffer, mantissaLength) {\n\t var bytes = buffer.length;\n\t var exponentLength = bytes * 8 - mantissaLength - 1;\n\t var eMax = (1 << exponentLength) - 1;\n\t var eBias = eMax >> 1;\n\t var nBits = exponentLength - 7;\n\t var index = bytes - 1;\n\t var sign = buffer[index--];\n\t var exponent = sign & 127;\n\t var mantissa;\n\t sign >>= 7;\n\t for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n\t mantissa = exponent & (1 << -nBits) - 1;\n\t exponent >>= -nBits;\n\t nBits += mantissaLength;\n\t for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n\t if (exponent === 0) {\n\t exponent = 1 - eBias;\n\t } else if (exponent === eMax) {\n\t return mantissa ? NaN : sign ? -Infinity : Infinity;\n\t } else {\n\t mantissa = mantissa + pow(2, mantissaLength);\n\t exponent = exponent - eBias;\n\t } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n\t};\n\n\tvar unpackInt32 = function (buffer) {\n\t return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n\t};\n\n\tvar packInt8 = function (number) {\n\t return [number & 0xFF];\n\t};\n\n\tvar packInt16 = function (number) {\n\t return [number & 0xFF, number >> 8 & 0xFF];\n\t};\n\n\tvar packInt32 = function (number) {\n\t return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n\t};\n\n\tvar packFloat32 = function (number) {\n\t return packIEEE754(number, 23, 4);\n\t};\n\n\tvar packFloat64 = function (number) {\n\t return packIEEE754(number, 52, 8);\n\t};\n\n\tvar addGetter = function (Constructor, key) {\n\t defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n\t};\n\n\tvar get = function (view, count, index, isLittleEndian) {\n\t var numIndex = +index;\n\t var intIndex = toIndex(numIndex);\n\t var store = getInternalState(view);\n\t if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n\t var bytes = getInternalState(store.buffer).bytes;\n\t var start = intIndex + store.byteOffset;\n\t var pack = bytes.slice(start, start + count);\n\t return isLittleEndian ? pack : pack.reverse();\n\t};\n\n\tvar set = function (view, count, index, conversion, value, isLittleEndian) {\n\t var numIndex = +index;\n\t var intIndex = toIndex(numIndex);\n\t var store = getInternalState(view);\n\t if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n\t var bytes = getInternalState(store.buffer).bytes;\n\t var start = intIndex + store.byteOffset;\n\t var pack = conversion(+value);\n\t for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n\t};\n\n\tif (!NATIVE_ARRAY_BUFFER) {\n\t $ArrayBuffer = function ArrayBuffer(length) {\n\t anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n\t var byteLength = toIndex(length);\n\t setInternalState(this, {\n\t bytes: arrayFill.call(new Array(byteLength), 0),\n\t byteLength: byteLength\n\t });\n\t if (!descriptors) this.byteLength = byteLength;\n\t };\n\n\t $DataView = function DataView(buffer, byteOffset, byteLength) {\n\t anInstance(this, $DataView, DATA_VIEW);\n\t anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n\t var bufferLength = getInternalState(buffer).byteLength;\n\t var offset = toInteger(byteOffset);\n\t if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n\t byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n\t if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n\t setInternalState(this, {\n\t buffer: buffer,\n\t byteLength: byteLength,\n\t byteOffset: offset\n\t });\n\t if (!descriptors) {\n\t this.buffer = buffer;\n\t this.byteLength = byteLength;\n\t this.byteOffset = offset;\n\t }\n\t };\n\n\t if (descriptors) {\n\t addGetter($ArrayBuffer, 'byteLength');\n\t addGetter($DataView, 'buffer');\n\t addGetter($DataView, 'byteLength');\n\t addGetter($DataView, 'byteOffset');\n\t }\n\n\t redefineAll($DataView[PROTOTYPE], {\n\t getInt8: function getInt8(byteOffset) {\n\t return get(this, 1, byteOffset)[0] << 24 >> 24;\n\t },\n\t getUint8: function getUint8(byteOffset) {\n\t return get(this, 1, byteOffset)[0];\n\t },\n\t getInt16: function getInt16(byteOffset /* , littleEndian */) {\n\t var bytes = get(this, 2, byteOffset, arguments[1]);\n\t return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n\t },\n\t getUint16: function getUint16(byteOffset /* , littleEndian */) {\n\t var bytes = get(this, 2, byteOffset, arguments[1]);\n\t return bytes[1] << 8 | bytes[0];\n\t },\n\t getInt32: function getInt32(byteOffset /* , littleEndian */) {\n\t return unpackInt32(get(this, 4, byteOffset, arguments[1]));\n\t },\n\t getUint32: function getUint32(byteOffset /* , littleEndian */) {\n\t return unpackInt32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n\t },\n\t getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n\t return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23);\n\t },\n\t getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n\t return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52);\n\t },\n\t setInt8: function setInt8(byteOffset, value) {\n\t set(this, 1, byteOffset, packInt8, value);\n\t },\n\t setUint8: function setUint8(byteOffset, value) {\n\t set(this, 1, byteOffset, packInt8, value);\n\t },\n\t setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n\t set(this, 2, byteOffset, packInt16, value, arguments[2]);\n\t },\n\t setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n\t set(this, 2, byteOffset, packInt16, value, arguments[2]);\n\t },\n\t setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n\t set(this, 4, byteOffset, packInt32, value, arguments[2]);\n\t },\n\t setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n\t set(this, 4, byteOffset, packInt32, value, arguments[2]);\n\t },\n\t setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n\t set(this, 4, byteOffset, packFloat32, value, arguments[2]);\n\t },\n\t setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n\t set(this, 8, byteOffset, packFloat64, value, arguments[2]);\n\t }\n\t });\n\t} else {\n\t if (!fails(function () {\n\t NativeArrayBuffer(1);\n\t }) || !fails(function () {\n\t new NativeArrayBuffer(-1); // eslint-disable-line no-new\n\t }) || fails(function () {\n\t new NativeArrayBuffer(); // eslint-disable-line no-new\n\t new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n\t new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n\t return NativeArrayBuffer.name != ARRAY_BUFFER;\n\t })) {\n\t $ArrayBuffer = function ArrayBuffer(length) {\n\t anInstance(this, $ArrayBuffer);\n\t return new NativeArrayBuffer(toIndex(length));\n\t };\n\t var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n\t for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n\t if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, NativeArrayBuffer[key]);\n\t }\n\t ArrayBufferPrototype.constructor = $ArrayBuffer;\n\t }\n\t // iOS Safari 7.x bug\n\t var testView = new $DataView(new $ArrayBuffer(2));\n\t var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n\t testView.setInt8(0, 2147483648);\n\t testView.setInt8(1, 2147483649);\n\t if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n\t setInt8: function setInt8(byteOffset, value) {\n\t nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n\t },\n\t setUint8: function setUint8(byteOffset, value) {\n\t nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n\t }\n\t }, { unsafe: true });\n\t}\n\n\tsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\n\tsetToStringTag($DataView, DATA_VIEW);\n\texports[ARRAY_BUFFER] = $ArrayBuffer;\n\texports[DATA_VIEW] = $DataView;\n\t});\n\n\tvar toOffset = function (it, BYTES) {\n\t var offset = toInteger(it);\n\t if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset');\n\t return offset;\n\t};\n\n\tvar aTypedArrayConstructor$1 = arrayBufferViewCore.aTypedArrayConstructor;\n\n\tvar typedArrayFrom = function from(source /* , mapfn, thisArg */) {\n\t var O = toObject(source);\n\t var argumentsLength = arguments.length;\n\t var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n\t var mapping = mapfn !== undefined;\n\t var iteratorMethod = getIteratorMethod(O);\n\t var i, length, result, step, iterator;\n\t if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n\t iterator = iteratorMethod.call(O);\n\t O = [];\n\t while (!(step = iterator.next()).done) {\n\t O.push(step.value);\n\t }\n\t }\n\t if (mapping && argumentsLength > 2) {\n\t mapfn = bindContext(mapfn, arguments[2], 2);\n\t }\n\t length = toLength(O.length);\n\t result = new (aTypedArrayConstructor$1(this))(length);\n\t for (i = 0; length > i; i++) {\n\t result[i] = mapping ? mapfn(O[i], i) : O[i];\n\t }\n\t return result;\n\t};\n\n\tvar typedArrayConstructor = createCommonjsModule(function (module) {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tvar getOwnPropertyNames = objectGetOwnPropertyNames.f;\n\n\n\n\n\n\n\n\tvar getInternalState = internalState.get;\n\tvar setInternalState = internalState.set;\n\tvar nativeDefineProperty = objectDefineProperty.f;\n\tvar nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n\tvar forEach = arrayMethods(0);\n\tvar RangeError = global_1.RangeError;\n\tvar ArrayBuffer = arrayBuffer.ArrayBuffer;\n\tvar DataView = arrayBuffer.DataView;\n\tvar NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\tvar TYPED_ARRAY_TAG = arrayBufferViewCore.TYPED_ARRAY_TAG;\n\tvar TypedArray = arrayBufferViewCore.TypedArray;\n\tvar TypedArrayPrototype = arrayBufferViewCore.TypedArrayPrototype;\n\tvar aTypedArrayConstructor = arrayBufferViewCore.aTypedArrayConstructor;\n\tvar isTypedArray = arrayBufferViewCore.isTypedArray;\n\tvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n\tvar WRONG_LENGTH = 'Wrong length';\n\n\tvar fromList = function (C, list) {\n\t var index = 0;\n\t var length = list.length;\n\t var result = new (aTypedArrayConstructor(C))(length);\n\t while (length > index) result[index] = list[index++];\n\t return result;\n\t};\n\n\tvar addGetter = function (it, key) {\n\t nativeDefineProperty(it, key, { get: function () {\n\t return getInternalState(this)[key];\n\t } });\n\t};\n\n\tvar isArrayBuffer = function (it) {\n\t var klass;\n\t return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n\t};\n\n\tvar isTypedArrayIndex = function (target, key) {\n\t return isTypedArray(target)\n\t && typeof key != 'symbol'\n\t && key in target\n\t && String(+key) == String(key);\n\t};\n\n\tvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n\t return isTypedArrayIndex(target, key = toPrimitive(key, true))\n\t ? createPropertyDescriptor(2, target[key])\n\t : nativeGetOwnPropertyDescriptor(target, key);\n\t};\n\n\tvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n\t if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n\t && isObject(descriptor)\n\t && has(descriptor, 'value')\n\t && !has(descriptor, 'get')\n\t && !has(descriptor, 'set')\n\t // TODO: add validation descriptor w/o calling accessors\n\t && !descriptor.configurable\n\t && (!has(descriptor, 'writable') || descriptor.writable)\n\t && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n\t ) {\n\t target[key] = descriptor.value;\n\t return target;\n\t } return nativeDefineProperty(target, key, descriptor);\n\t};\n\n\tif (descriptors) {\n\t if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n\t objectGetOwnPropertyDescriptor.f = wrappedGetOwnPropertyDescriptor;\n\t objectDefineProperty.f = wrappedDefineProperty;\n\t addGetter(TypedArrayPrototype, 'buffer');\n\t addGetter(TypedArrayPrototype, 'byteOffset');\n\t addGetter(TypedArrayPrototype, 'byteLength');\n\t addGetter(TypedArrayPrototype, 'length');\n\t }\n\n\t _export({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n\t getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n\t defineProperty: wrappedDefineProperty\n\t });\n\n\t // eslint-disable-next-line max-statements\n\t module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n\t var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n\t var GETTER = 'get' + TYPE;\n\t var SETTER = 'set' + TYPE;\n\t var NativeTypedArrayConstructor = global_1[CONSTRUCTOR_NAME];\n\t var TypedArrayConstructor = NativeTypedArrayConstructor;\n\t var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n\t var exported = {};\n\n\t var getter = function (that, index) {\n\t var data = getInternalState(that);\n\t return data.view[GETTER](index * BYTES + data.byteOffset, true);\n\t };\n\n\t var setter = function (that, index, value) {\n\t var data = getInternalState(that);\n\t if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n\t data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n\t };\n\n\t var addElement = function (that, index) {\n\t nativeDefineProperty(that, index, {\n\t get: function () {\n\t return getter(this, index);\n\t },\n\t set: function (value) {\n\t return setter(this, index, value);\n\t },\n\t enumerable: true\n\t });\n\t };\n\n\t if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n\t TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n\t anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n\t var index = 0;\n\t var byteOffset = 0;\n\t var buffer, byteLength, length;\n\t if (!isObject(data)) {\n\t length = toIndex(data);\n\t byteLength = length * BYTES;\n\t buffer = new ArrayBuffer(byteLength);\n\t } else if (isArrayBuffer(data)) {\n\t buffer = data;\n\t byteOffset = toOffset(offset, BYTES);\n\t var $len = data.byteLength;\n\t if ($length === undefined) {\n\t if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n\t byteLength = $len - byteOffset;\n\t if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n\t } else {\n\t byteLength = toLength($length) * BYTES;\n\t if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n\t }\n\t length = byteLength / BYTES;\n\t } else if (isTypedArray(data)) {\n\t return fromList(TypedArrayConstructor, data);\n\t } else {\n\t return typedArrayFrom.call(TypedArrayConstructor, data);\n\t }\n\t setInternalState(that, {\n\t buffer: buffer,\n\t byteOffset: byteOffset,\n\t byteLength: byteLength,\n\t length: length,\n\t view: new DataView(buffer)\n\t });\n\t while (index < length) addElement(that, index++);\n\t });\n\n\t if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray);\n\t TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = objectCreate(TypedArrayPrototype);\n\t } else if (typedArraysConstructorsRequiresWrappers) {\n\t TypedArrayConstructor = wrapper(function (that, data, typedArrayOffset, $length) {\n\t anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n\t if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n\t if (isArrayBuffer(data)) return $length !== undefined\n\t ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n\t : typedArrayOffset !== undefined\n\t ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n\t : new NativeTypedArrayConstructor(data);\n\t if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n\t return typedArrayFrom.call(TypedArrayConstructor, data);\n\t });\n\n\t if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray);\n\t forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n\t if (!(key in TypedArrayConstructor)) hide(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n\t });\n\t TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n\t }\n\n\t if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n\t hide(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n\t }\n\n\t if (TYPED_ARRAY_TAG) hide(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n\n\t exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n\t _export({\n\t global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n\t }, exported);\n\n\t if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n\t hide(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n\t }\n\n\t if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n\t hide(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n\t }\n\n\t setSpecies(CONSTRUCTOR_NAME);\n\t };\n\t} else module.exports = function () { /* empty */ };\n\t});\n\n\t// `Uint16Array` constructor\n\t// https://tc39.github.io/ecma262/#sec-typedarray-objects\n\ttypedArrayConstructor('Uint16', 2, function (init) {\n\t return function Uint16Array(data, byteOffset, length) {\n\t return init(this, data, byteOffset, length);\n\t };\n\t});\n\n\t// `Array.prototype.copyWithin` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\n\tvar arrayCopyWithin = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n\t var O = toObject(this);\n\t var len = toLength(O.length);\n\t var to = toAbsoluteIndex(target, len);\n\t var from = toAbsoluteIndex(start, len);\n\t var end = arguments.length > 2 ? arguments[2] : undefined;\n\t var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n\t var inc = 1;\n\t if (from < to && to < from + count) {\n\t inc = -1;\n\t from += count - 1;\n\t to += count - 1;\n\t }\n\t while (count-- > 0) {\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t to += inc;\n\t from += inc;\n\t } return O;\n\t};\n\n\tvar aTypedArray$1 = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.copyWithin` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\n\tarrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n\t return arrayCopyWithin.call(aTypedArray$1(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n\t});\n\n\tvar arrayEvery = arrayMethods(4);\n\tvar aTypedArray$2 = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.every` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\n\tarrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n\t return arrayEvery(aTypedArray$2(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$3 = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.fill` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n\t// eslint-disable-next-line no-unused-vars\n\tarrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n\t return arrayFill.apply(aTypedArray$3(this), arguments);\n\t});\n\n\tvar arrayFilter = arrayMethods(2);\n\tvar aTypedArray$4 = arrayBufferViewCore.aTypedArray;\n\tvar aTypedArrayConstructor$2 = arrayBufferViewCore.aTypedArrayConstructor;\n\n\t// `%TypedArray%.prototype.filter` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\n\tarrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n\t var list = arrayFilter(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t var C = speciesConstructor(this, this.constructor);\n\t var index = 0;\n\t var length = list.length;\n\t var result = new (aTypedArrayConstructor$2(C))(length);\n\t while (length > index) result[index] = list[index++];\n\t return result;\n\t});\n\n\tvar arrayFind = arrayMethods(5);\n\tvar aTypedArray$5 = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.find` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\n\tarrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n\t return arrayFind(aTypedArray$5(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar arrayFindIndex = arrayMethods(6);\n\tvar aTypedArray$6 = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.findIndex` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\n\tarrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n\t return arrayFindIndex(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar arrayForEach$1 = arrayMethods(0);\n\tvar aTypedArray$7 = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.forEach` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\n\tarrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n\t arrayForEach$1(aTypedArray$7(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$8 = arrayBufferViewCore.aTypedArray;\n\tvar arrayIncludes$1 = arrayIncludes(true);\n\n\t// `%TypedArray%.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\n\tarrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n\t return arrayIncludes$1(aTypedArray$8(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$9 = arrayBufferViewCore.aTypedArray;\n\tvar arrayIndexOf$1 = arrayIncludes(false);\n\n\t// `%TypedArray%.prototype.indexOf` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\n\tarrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n\t return arrayIndexOf$1(aTypedArray$9(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar ITERATOR$8 = wellKnownSymbol('iterator');\n\tvar Uint8Array = global_1.Uint8Array;\n\tvar arrayValues = es_array_iterator.values;\n\tvar arrayKeys = es_array_iterator.keys;\n\tvar arrayEntries = es_array_iterator.entries;\n\tvar aTypedArray$a = arrayBufferViewCore.aTypedArray;\n\tvar exportProto$1 = arrayBufferViewCore.exportProto;\n\tvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR$8];\n\n\tvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n\t && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\n\tvar typedArrayValues = function values() {\n\t return arrayValues.call(aTypedArray$a(this));\n\t};\n\n\t// `%TypedArray%.prototype.entries` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\n\texportProto$1('entries', function entries() {\n\t return arrayEntries.call(aTypedArray$a(this));\n\t});\n\t// `%TypedArray%.prototype.keys` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\n\texportProto$1('keys', function keys() {\n\t return arrayKeys.call(aTypedArray$a(this));\n\t});\n\t// `%TypedArray%.prototype.values` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\n\texportProto$1('values', typedArrayValues, !CORRECT_ITER_NAME);\n\t// `%TypedArray%.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\n\texportProto$1(ITERATOR$8, typedArrayValues, !CORRECT_ITER_NAME);\n\n\tvar aTypedArray$b = arrayBufferViewCore.aTypedArray;\n\tvar arrayJoin = [].join;\n\n\t// `%TypedArray%.prototype.join` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n\t// eslint-disable-next-line no-unused-vars\n\tarrayBufferViewCore.exportProto('join', function join(separator) {\n\t return arrayJoin.apply(aTypedArray$b(this), arguments);\n\t});\n\n\tvar aTypedArray$c = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.lastIndexOf` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n\t// eslint-disable-next-line no-unused-vars\n\tarrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n\t return arrayLastIndexOf.apply(aTypedArray$c(this), arguments);\n\t});\n\n\tvar aTypedArray$d = arrayBufferViewCore.aTypedArray;\n\tvar aTypedArrayConstructor$3 = arrayBufferViewCore.aTypedArrayConstructor;\n\n\tvar internalTypedArrayMap = arrayMethods(1, function (O, length) {\n\t return new (aTypedArrayConstructor$3(speciesConstructor(O, O.constructor)))(length);\n\t});\n\n\t// `%TypedArray%.prototype.map` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\n\tarrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n\t return internalTypedArrayMap(aTypedArray$d(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$e = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.reduce` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\n\tarrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n\t return arrayReduce(aTypedArray$e(this), callbackfn, arguments.length, arguments[1], false);\n\t});\n\n\tvar aTypedArray$f = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.reduceRicht` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\n\tarrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n\t return arrayReduce(aTypedArray$f(this), callbackfn, arguments.length, arguments[1], true);\n\t});\n\n\tvar aTypedArray$g = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.reverse` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\n\tarrayBufferViewCore.exportProto('reverse', function reverse() {\n\t var that = this;\n\t var length = aTypedArray$g(that).length;\n\t var middle = Math.floor(length / 2);\n\t var index = 0;\n\t var value;\n\t while (index < middle) {\n\t value = that[index];\n\t that[index++] = that[--length];\n\t that[length] = value;\n\t } return that;\n\t});\n\n\tvar aTypedArray$h = arrayBufferViewCore.aTypedArray;\n\n\tvar FORCED$3 = fails(function () {\n\t // eslint-disable-next-line no-undef\n\t new Int8Array(1).set({});\n\t});\n\n\t// `%TypedArray%.prototype.set` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\n\tarrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n\t aTypedArray$h(this);\n\t var offset = toOffset(arguments[1], 1);\n\t var length = this.length;\n\t var src = toObject(arrayLike);\n\t var len = toLength(src.length);\n\t var index = 0;\n\t if (len + offset > length) throw RangeError('Wrong length');\n\t while (index < len) this[offset + index] = src[index++];\n\t}, FORCED$3);\n\n\tvar aTypedArray$i = arrayBufferViewCore.aTypedArray;\n\tvar aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor;\n\tvar arraySlice = [].slice;\n\n\tvar FORCED$4 = fails(function () {\n\t // eslint-disable-next-line no-undef\n\t new Int8Array(1).slice();\n\t});\n\n\t// `%TypedArray%.prototype.slice` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\n\tarrayBufferViewCore.exportProto('slice', function slice(start, end) {\n\t var list = arraySlice.call(aTypedArray$i(this), start, end);\n\t var C = speciesConstructor(this, this.constructor);\n\t var index = 0;\n\t var length = list.length;\n\t var result = new (aTypedArrayConstructor$4(C))(length);\n\t while (length > index) result[index] = list[index++];\n\t return result;\n\t}, FORCED$4);\n\n\tvar arraySome = arrayMethods(3);\n\tvar aTypedArray$j = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.some` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\n\tarrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n\t return arraySome(aTypedArray$j(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$k = arrayBufferViewCore.aTypedArray;\n\tvar arraySort = [].sort;\n\n\t// `%TypedArray%.prototype.sort` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\n\tarrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n\t return arraySort.call(aTypedArray$k(this), comparefn);\n\t});\n\n\tvar aTypedArray$l = arrayBufferViewCore.aTypedArray;\n\n\t// `%TypedArray%.prototype.subarray` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\n\tarrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n\t var O = aTypedArray$l(this);\n\t var length = O.length;\n\t var beginIndex = toAbsoluteIndex(begin, length);\n\t return new (speciesConstructor(O, O.constructor))(\n\t O.buffer,\n\t O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n\t toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n\t );\n\t});\n\n\tvar Int8Array$3 = global_1.Int8Array;\n\tvar aTypedArray$m = arrayBufferViewCore.aTypedArray;\n\tvar arrayToLocaleString = [].toLocaleString;\n\tvar arraySlice$1 = [].slice;\n\n\t// iOS Safari 6.x fails here\n\tvar TO_LOCALE_BUG = !!Int8Array$3 && fails(function () {\n\t arrayToLocaleString.call(new Int8Array$3(1));\n\t});\n\tvar FORCED$5 = fails(function () {\n\t return [1, 2].toLocaleString() != new Int8Array$3([1, 2]).toLocaleString();\n\t}) || !fails(function () {\n\t Int8Array$3.prototype.toLocaleString.call([1, 2]);\n\t});\n\n\t// `%TypedArray%.prototype.toLocaleString` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\n\tarrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n\t return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice$1.call(aTypedArray$m(this)) : aTypedArray$m(this), arguments);\n\t}, FORCED$5);\n\n\tvar Uint8Array$1 = global_1.Uint8Array;\n\tvar Uint8ArrayPrototype = Uint8Array$1 && Uint8Array$1.prototype;\n\tvar arrayToString = [].toString;\n\tvar arrayJoin$1 = [].join;\n\n\tif (fails(function () { arrayToString.call({}); })) {\n\t arrayToString = function toString() {\n\t return arrayJoin$1.call(this);\n\t };\n\t}\n\n\t// `%TypedArray%.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\n\tarrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n\n\tvar stringify_1 = createCommonjsModule(function (module, exports) {\n\t /*\n\t json-stringify-safe\n\t Like JSON.stringify, but doesn't throw on circular references.\n\t \n\t Originally forked from https://github.com/isaacs/json-stringify-safe\n\t version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n\t and IE8 compatibility. Tests for this are in test/vendor.\n\t \n\t ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n\t */\n\t exports = module.exports = stringify;\n\t exports.getSerialize = serializer;\n\n\t function indexOf(haystack, needle) {\n\t for (var i = 0; i < haystack.length; ++i) {\n\t if (haystack[i] === needle) return i;\n\t }\n\n\t return -1;\n\t }\n\n\t function stringify(obj, replacer, spaces, cycleReplacer) {\n\t return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n\t } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\n\n\n\t function stringifyError(value) {\n\t var err = {\n\t // These properties are implemented as magical getters and don't show up in for in\n\t stack: value.stack,\n\t message: value.message,\n\t name: value.name\n\t };\n\n\t for (var i in value) {\n\t if (Object.prototype.hasOwnProperty.call(value, i)) {\n\t err[i] = value[i];\n\t }\n\t }\n\n\t return err;\n\t }\n\n\t function serializer(replacer, cycleReplacer) {\n\t var stack = [];\n\t var keys = [];\n\n\t if (cycleReplacer == null) {\n\t cycleReplacer = function cycleReplacer(key, value) {\n\t if (stack[0] === value) {\n\t return '[Circular ~]';\n\t }\n\n\t return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n\t };\n\t }\n\n\t return function (key, value) {\n\t if (stack.length > 0) {\n\t var thisPos = indexOf(stack, this);\n\t ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n\t ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n\t if (~indexOf(stack, value)) {\n\t value = cycleReplacer.call(this, key, value);\n\t }\n\t } else {\n\t stack.push(value);\n\t }\n\n\t return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value);\n\t };\n\t }\n\t});\n\tvar stringify_2 = stringify_1.getSerialize;\n\n\tvar _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\tfunction isObject$1(what) {\n\t return _typeof(what) === 'object' && what !== null;\n\t} // Yanked from https://git.io/vS8DV re-used under CC0\n\t// with some tiny modifications\n\n\n\tfunction isError(value) {\n\t switch (Object.prototype.toString.call(value)) {\n\t case '[object Error]':\n\t return true;\n\n\t case '[object Exception]':\n\t return true;\n\n\t case '[object DOMException]':\n\t return true;\n\n\t default:\n\t return value instanceof Error;\n\t }\n\t}\n\n\tfunction isErrorEvent(value) {\n\t return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n\t}\n\n\tfunction isDOMError(value) {\n\t return Object.prototype.toString.call(value) === '[object DOMError]';\n\t}\n\n\tfunction isDOMException(value) {\n\t return Object.prototype.toString.call(value) === '[object DOMException]';\n\t}\n\n\tfunction isUndefined(what) {\n\t return what === void 0;\n\t}\n\n\tfunction isFunction(what) {\n\t return typeof what === 'function';\n\t}\n\n\tfunction isPlainObject(what) {\n\t return Object.prototype.toString.call(what) === '[object Object]';\n\t}\n\n\tfunction isString(what) {\n\t return Object.prototype.toString.call(what) === '[object String]';\n\t}\n\n\tfunction isArray$1(what) {\n\t return Object.prototype.toString.call(what) === '[object Array]';\n\t}\n\n\tfunction isEmptyObject(what) {\n\t if (!isPlainObject(what)) return false;\n\n\t for (var _ in what) {\n\t if (what.hasOwnProperty(_)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t}\n\n\tfunction supportsErrorEvent() {\n\t try {\n\t new ErrorEvent(''); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsDOMError() {\n\t try {\n\t new DOMError(''); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsDOMException() {\n\t try {\n\t new DOMException(''); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsFetch() {\n\t if (!('fetch' in _window)) return false;\n\n\t try {\n\t new Headers(); // eslint-disable-line no-new\n\n\t new Request(''); // eslint-disable-line no-new\n\n\t new Response(); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t} // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t// https://caniuse.com/#feat=referrer-policy\n\t// It doesn't. And it throw exception instead of ignoring this parameter...\n\t// REF: https://github.com/getsentry/raven-js/issues/1233\n\n\n\tfunction supportsReferrerPolicy() {\n\t if (!supportsFetch()) return false;\n\n\t try {\n\t // eslint-disable-next-line no-new\n\t new Request('pickleRick', {\n\t referrerPolicy: 'origin'\n\t });\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsPromiseRejectionEvent() {\n\t return typeof PromiseRejectionEvent === 'function';\n\t}\n\n\tfunction wrappedCallback(callback) {\n\t function dataCallback(data, original) {\n\t var normalizedData = callback(data) || data;\n\n\t if (original) {\n\t return original(normalizedData) || normalizedData;\n\t }\n\n\t return normalizedData;\n\t }\n\n\t return dataCallback;\n\t}\n\n\tfunction each(obj, callback) {\n\t var i, j;\n\n\t if (isUndefined(obj.length)) {\n\t for (i in obj) {\n\t if (hasKey(obj, i)) {\n\t callback.call(null, i, obj[i]);\n\t }\n\t }\n\t } else {\n\t j = obj.length;\n\n\t if (j) {\n\t for (i = 0; i < j; i++) {\n\t callback.call(null, i, obj[i]);\n\t }\n\t }\n\t }\n\t}\n\n\tfunction objectMerge(obj1, obj2) {\n\t if (!obj2) {\n\t return obj1;\n\t }\n\n\t each(obj2, function (key, value) {\n\t obj1[key] = value;\n\t });\n\t return obj1;\n\t}\n\t/**\n\t * This function is only used for react-native.\n\t * react-native freezes object that have already been sent over the\n\t * js bridge. We need this function in order to check if the object is frozen.\n\t * So it's ok that objectFrozen returns false if Object.isFrozen is not\n\t * supported because it's not relevant for other \"platforms\". See related issue:\n\t * https://github.com/getsentry/react-native-sentry/issues/57\n\t */\n\n\n\tfunction objectFrozen(obj) {\n\t if (!Object.isFrozen) {\n\t return false;\n\t }\n\n\t return Object.isFrozen(obj);\n\t}\n\n\tfunction truncate(str, max) {\n\t if (typeof max !== 'number') {\n\t throw new Error('2nd argument to `truncate` function should be a number');\n\t }\n\n\t if (typeof str !== 'string' || max === 0) {\n\t return str;\n\t }\n\n\t return str.length <= max ? str : str.substr(0, max) + \"\\u2026\";\n\t}\n\t/**\n\t * hasKey, a better form of hasOwnProperty\n\t * Example: hasKey(MainHostObject, property) === true/false\n\t *\n\t * @param {Object} host object to check property\n\t * @param {string} key to check\n\t */\n\n\n\tfunction hasKey(object, key) {\n\t return Object.prototype.hasOwnProperty.call(object, key);\n\t}\n\n\tfunction joinRegExp(patterns) {\n\t // Combine an array of regular expressions and strings into one large regexp\n\t // Be mad.\n\t var sources = [],\n\t i = 0,\n\t len = patterns.length,\n\t pattern;\n\n\t for (; i < len; i++) {\n\t pattern = patterns[i];\n\n\t if (isString(pattern)) {\n\t // If it's a string, we need to escape it\n\t // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n\t sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n\t } else if (pattern && pattern.source) {\n\t // If it's a regexp already, we want to extract the source\n\t sources.push(pattern.source);\n\t } // Intentionally skip other cases\n\n\t }\n\n\t return new RegExp(sources.join('|'), 'i');\n\t}\n\n\tfunction urlencode(o) {\n\t var pairs = [];\n\t each(o, function (key, value) {\n\t pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n\t });\n\t return pairs.join('&');\n\t} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n\t// intentionally using regex and not <a/> href parsing trick because React Native and other\n\t// environments where DOM might not be available\n\n\n\tfunction parseUrl(url) {\n\t if (typeof url !== 'string') return {};\n\t var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined'\n\n\t var query = match[6] || '';\n\t var fragment = match[8] || '';\n\t return {\n\t protocol: match[2],\n\t host: match[4],\n\t path: match[5],\n\t relative: match[5] + query + fragment // everything minus origin\n\n\t };\n\t}\n\n\tfunction uuid4() {\n\t var crypto = _window.crypto || _window.msCrypto;\n\n\t if (!isUndefined(crypto) && crypto.getRandomValues) {\n\t // Use window.crypto API if available\n\t // eslint-disable-next-line no-undef\n\t var arr = new Uint16Array(8);\n\t crypto.getRandomValues(arr); // set 4 in byte 7\n\n\t arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10'\n\n\t arr[4] = arr[4] & 0x3fff | 0x8000;\n\n\t var pad = function pad(num) {\n\t var v = num.toString(16);\n\n\t while (v.length < 4) {\n\t v = '0' + v;\n\t }\n\n\t return v;\n\t };\n\n\t return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]);\n\t } else {\n\t // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n\t return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t var r = Math.random() * 16 | 0,\n\t v = c === 'x' ? r : r & 0x3 | 0x8;\n\t return v.toString(16);\n\t });\n\t }\n\t}\n\t/**\n\t * Given a child DOM element, returns a query-selector statement describing that\n\t * and its ancestors\n\t * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n\t * @param elem\n\t * @returns {string}\n\t */\n\n\n\tfunction htmlTreeAsString(elem) {\n\t /* eslint no-extra-parens:0*/\n\t var MAX_TRAVERSE_HEIGHT = 5,\n\t MAX_OUTPUT_LEN = 80,\n\t out = [],\n\t height = 0,\n\t len = 0,\n\t separator = ' > ',\n\t sepLength = separator.length,\n\t nextStr;\n\n\t while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n\t nextStr = htmlElementAsString(elem); // bail out if\n\t // - nextStr is the 'html' element\n\t // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n\t // (ignore this limit if we are on the first iteration)\n\n\t if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) {\n\t break;\n\t }\n\n\t out.push(nextStr);\n\t len += nextStr.length;\n\t elem = elem.parentNode;\n\t }\n\n\t return out.reverse().join(separator);\n\t}\n\t/**\n\t * Returns a simple, query-selector representation of a DOM element\n\t * e.g. [HTMLElement] => input#foo.btn[name=baz]\n\t * @param HTMLElement\n\t * @returns {string}\n\t */\n\n\n\tfunction htmlElementAsString(elem) {\n\t var out = [],\n\t className,\n\t classes,\n\t key,\n\t attr,\n\t i;\n\n\t if (!elem || !elem.tagName) {\n\t return '';\n\t }\n\n\t out.push(elem.tagName.toLowerCase());\n\n\t if (elem.id) {\n\t out.push('#' + elem.id);\n\t }\n\n\t className = elem.className;\n\n\t if (className && isString(className)) {\n\t classes = className.split(/\\s+/);\n\n\t for (i = 0; i < classes.length; i++) {\n\t out.push('.' + classes[i]);\n\t }\n\t }\n\n\t var attrWhitelist = ['type', 'name', 'title', 'alt'];\n\n\t for (i = 0; i < attrWhitelist.length; i++) {\n\t key = attrWhitelist[i];\n\t attr = elem.getAttribute(key);\n\n\t if (attr) {\n\t out.push('[' + key + '=\"' + attr + '\"]');\n\t }\n\t }\n\n\t return out.join('');\n\t}\n\t/**\n\t * Returns true if either a OR b is truthy, but not both\n\t */\n\n\n\tfunction isOnlyOneTruthy(a, b) {\n\t return !!(!!a ^ !!b);\n\t}\n\t/**\n\t * Returns true if both parameters are undefined\n\t */\n\n\n\tfunction isBothUndefined(a, b) {\n\t return isUndefined(a) && isUndefined(b);\n\t}\n\t/**\n\t * Returns true if the two input exception interfaces have the same content\n\t */\n\n\n\tfunction isSameException(ex1, ex2) {\n\t if (isOnlyOneTruthy(ex1, ex2)) return false;\n\t ex1 = ex1.values[0];\n\t ex2 = ex2.values[0];\n\t if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false\n\n\t if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\t return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n\t}\n\t/**\n\t * Returns true if the two input stack trace interfaces have the same content\n\t */\n\n\n\tfunction isSameStacktrace(stack1, stack2) {\n\t if (isOnlyOneTruthy(stack1, stack2)) return false;\n\t var frames1 = stack1.frames;\n\t var frames2 = stack2.frames; // Exit early if stacktrace is malformed\n\n\t if (frames1 === undefined || frames2 === undefined) return false; // Exit early if frame count differs\n\n\t if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs\n\n\t var a, b;\n\n\t for (var i = 0; i < frames1.length; i++) {\n\t a = frames1[i];\n\t b = frames2[i];\n\t if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false;\n\t }\n\n\t return true;\n\t}\n\t/**\n\t * Polyfill a method\n\t * @param obj object e.g. `document`\n\t * @param name method name present on object e.g. `addEventListener`\n\t * @param replacement replacement function\n\t * @param track {optional} record instrumentation to an array\n\t */\n\n\n\tfunction fill(obj, name, replacement, track) {\n\t if (obj == null) return;\n\t var orig = obj[name];\n\t obj[name] = replacement(orig);\n\t obj[name].__raven__ = true;\n\t obj[name].__orig__ = orig;\n\n\t if (track) {\n\t track.push([obj, name, orig]);\n\t }\n\t}\n\t/**\n\t * Join values in array\n\t * @param input array of values to be joined together\n\t * @param delimiter string to be placed in-between values\n\t * @returns {string}\n\t */\n\n\n\tfunction safeJoin(input, delimiter) {\n\t if (!isArray$1(input)) return '';\n\t var output = [];\n\n\t for (var i = 0; i < input.length; i++) {\n\t try {\n\t output.push(String(input[i]));\n\t } catch (e) {\n\t output.push('[value cannot be serialized]');\n\t }\n\t }\n\n\t return output.join(delimiter);\n\t} // Default Node.js REPL depth\n\n\n\tvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3; // 50kB, as 100kB is max payload size, so half sounds reasonable\n\n\tvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\n\tvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\n\tfunction utf8Length(value) {\n\t return ~-encodeURI(value).split(/%..|./).length;\n\t}\n\n\tfunction jsonSize(value) {\n\t return utf8Length(JSON.stringify(value));\n\t}\n\n\tfunction serializeValue(value) {\n\t if (typeof value === 'string') {\n\t var maxLength = 40;\n\t return truncate(value, maxLength);\n\t } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'undefined') {\n\t return value;\n\t }\n\n\t var type = Object.prototype.toString.call(value); // Node.js REPL notation\n\n\t if (type === '[object Object]') return '[Object]';\n\t if (type === '[object Array]') return '[Array]';\n\t if (type === '[object Function]') return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\t return value;\n\t}\n\n\tfunction serializeObject(value, depth) {\n\t if (depth === 0) return serializeValue(value);\n\n\t if (isPlainObject(value)) {\n\t return Object.keys(value).reduce(function (acc, key) {\n\t acc[key] = serializeObject(value[key], depth - 1);\n\t return acc;\n\t }, {});\n\t } else if (Array.isArray(value)) {\n\t return value.map(function (val) {\n\t return serializeObject(val, depth - 1);\n\t });\n\t }\n\n\t return serializeValue(value);\n\t}\n\n\tfunction serializeException(ex, depth, maxSize) {\n\t if (!isPlainObject(ex)) return ex;\n\t depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n\t maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\t var serialized = serializeObject(ex, depth);\n\n\t if (jsonSize(stringify_1(serialized)) > maxSize) {\n\t return serializeException(ex, depth - 1);\n\t }\n\n\t return serialized;\n\t}\n\n\tfunction serializeKeysForMessage(keys, maxLength) {\n\t if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n\t if (!Array.isArray(keys)) return '';\n\t keys = keys.filter(function (key) {\n\t return typeof key === 'string';\n\t });\n\t if (keys.length === 0) return '[object has no keys]';\n\t maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n\t if (keys[0].length >= maxLength) return keys[0];\n\n\t for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n\t var serialized = keys.slice(0, usedKeys).join(', ');\n\t if (serialized.length > maxLength) continue;\n\t if (usedKeys === keys.length) return serialized;\n\t return serialized + \"\\u2026\";\n\t }\n\n\t return '';\n\t}\n\n\tfunction sanitize(input, sanitizeKeys) {\n\t if (!isArray$1(sanitizeKeys) || isArray$1(sanitizeKeys) && sanitizeKeys.length === 0) return input;\n\t var sanitizeRegExp = joinRegExp(sanitizeKeys);\n\t var sanitizeMask = '********';\n\t var safeInput;\n\n\t try {\n\t safeInput = JSON.parse(stringify_1(input));\n\t } catch (o_O) {\n\t return input;\n\t }\n\n\t function sanitizeWorker(workerInput) {\n\t if (isArray$1(workerInput)) {\n\t return workerInput.map(function (val) {\n\t return sanitizeWorker(val);\n\t });\n\t }\n\n\t if (isPlainObject(workerInput)) {\n\t return Object.keys(workerInput).reduce(function (acc, k) {\n\t if (sanitizeRegExp.test(k)) {\n\t acc[k] = sanitizeMask;\n\t } else {\n\t acc[k] = sanitizeWorker(workerInput[k]);\n\t }\n\n\t return acc;\n\t }, {});\n\t }\n\n\t return workerInput;\n\t }\n\n\t return sanitizeWorker(safeInput);\n\t}\n\n\tvar utils = {\n\t isObject: isObject$1,\n\t isError: isError,\n\t isErrorEvent: isErrorEvent,\n\t isDOMError: isDOMError,\n\t isDOMException: isDOMException,\n\t isUndefined: isUndefined,\n\t isFunction: isFunction,\n\t isPlainObject: isPlainObject,\n\t isString: isString,\n\t isArray: isArray$1,\n\t isEmptyObject: isEmptyObject,\n\t supportsErrorEvent: supportsErrorEvent,\n\t supportsDOMError: supportsDOMError,\n\t supportsDOMException: supportsDOMException,\n\t supportsFetch: supportsFetch,\n\t supportsReferrerPolicy: supportsReferrerPolicy,\n\t supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n\t wrappedCallback: wrappedCallback,\n\t each: each,\n\t objectMerge: objectMerge,\n\t truncate: truncate,\n\t objectFrozen: objectFrozen,\n\t hasKey: hasKey,\n\t joinRegExp: joinRegExp,\n\t urlencode: urlencode,\n\t uuid4: uuid4,\n\t htmlTreeAsString: htmlTreeAsString,\n\t htmlElementAsString: htmlElementAsString,\n\t isSameException: isSameException,\n\t isSameStacktrace: isSameStacktrace,\n\t parseUrl: parseUrl,\n\t fill: fill,\n\t safeJoin: safeJoin,\n\t serializeException: serializeException,\n\t serializeKeysForMessage: serializeKeysForMessage,\n\t sanitize: sanitize\n\t};\n\n\t/*\n\t TraceKit - Cross brower stack traces\n\n\t This was originally forked from github.com/occ/TraceKit, but has since been\n\t largely re-written and is now maintained as part of raven-js. Tests for\n\t this are in test/vendor.\n\n\t MIT license\n\t*/\n\n\tvar TraceKit = {\n\t collectWindowErrors: true,\n\t debug: false\n\t}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\n\tvar _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice\n\n\n\tvar _slice = [].slice;\n\tvar UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\n\n\tvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\n\tfunction getLocationHref() {\n\t if (typeof document === 'undefined' || document.location == null) return '';\n\t return document.location.href;\n\t}\n\n\tfunction getLocationOrigin() {\n\t if (typeof document === 'undefined' || document.location == null) return ''; // Oh dear IE10...\n\n\t if (!document.location.origin) {\n\t return document.location.protocol + '//' + document.location.hostname + (document.location.port ? ':' + document.location.port : '');\n\t }\n\n\t return document.location.origin;\n\t}\n\t/**\n\t * TraceKit.report: cross-browser processing of unhandled exceptions\n\t *\n\t * Syntax:\n\t * TraceKit.report.subscribe(function(stackInfo) { ... })\n\t * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n\t * TraceKit.report(exception)\n\t * try { ...code... } catch(ex) { TraceKit.report(ex); }\n\t *\n\t * Supports:\n\t * - Firefox: full stack trace with line numbers, plus column number\n\t * on top frame; column number is not guaranteed\n\t * - Opera: full stack trace with line and column numbers\n\t * - Chrome: full stack trace with line and column numbers\n\t * - Safari: line and column number for the top frame only; some frames\n\t * may be missing, and column number is not guaranteed\n\t * - IE: line and column number for the top frame only; some frames\n\t * may be missing, and column number is not guaranteed\n\t *\n\t * In theory, TraceKit should work on all of the following versions:\n\t * - IE5.5+ (only 8.0 tested)\n\t * - Firefox 0.9+ (only 3.5+ tested)\n\t * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n\t * Exceptions Have Stacktrace to be enabled in opera:config)\n\t * - Safari 3+ (only 4+ tested)\n\t * - Chrome 1+ (only 5+ tested)\n\t * - Konqueror 3.5+ (untested)\n\t *\n\t * Requires TraceKit.computeStackTrace.\n\t *\n\t * Tries to catch all unhandled exceptions and report them to the\n\t * subscribed handlers. Please note that TraceKit.report will rethrow the\n\t * exception. This is REQUIRED in order to get a useful stack trace in IE.\n\t * If the exception does not reach the top of the browser, you will only\n\t * get a stack trace from the point where TraceKit.report was called.\n\t *\n\t * Handlers receive a stackInfo object as described in the\n\t * TraceKit.computeStackTrace docs.\n\t */\n\n\n\tTraceKit.report = function reportModuleWrapper() {\n\t var handlers = [],\n\t lastArgs = null,\n\t lastException = null,\n\t lastExceptionStack = null;\n\t /**\n\t * Add a crash handler.\n\t * @param {Function} handler\n\t */\n\n\t function subscribe(handler) {\n\t installGlobalHandler();\n\t handlers.push(handler);\n\t }\n\t /**\n\t * Remove a crash handler.\n\t * @param {Function} handler\n\t */\n\n\n\t function unsubscribe(handler) {\n\t for (var i = handlers.length - 1; i >= 0; --i) {\n\t if (handlers[i] === handler) {\n\t handlers.splice(i, 1);\n\t }\n\t }\n\t }\n\t /**\n\t * Remove all crash handlers.\n\t */\n\n\n\t function unsubscribeAll() {\n\t uninstallGlobalHandler();\n\t handlers = [];\n\t }\n\t /**\n\t * Dispatch stack information to all handlers.\n\t * @param {Object.<string, *>} stack\n\t */\n\n\n\t function notifyHandlers(stack, isWindowError) {\n\t var exception = null;\n\n\t if (isWindowError && !TraceKit.collectWindowErrors) {\n\t return;\n\t }\n\n\t for (var i in handlers) {\n\t if (handlers.hasOwnProperty(i)) {\n\t try {\n\t handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n\t } catch (inner) {\n\t exception = inner;\n\t }\n\t }\n\t }\n\n\t if (exception) {\n\t throw exception;\n\t }\n\t }\n\n\t var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\t /**\n\t * Ensures all global unhandled exceptions are recorded.\n\t * Supported by Gecko and IE.\n\t * @param {string} msg Error message.\n\t * @param {string} url URL of script that generated the exception.\n\t * @param {(number|string)} lineNo The line number at which the error\n\t * occurred.\n\t * @param {?(number|string)} colNo The column number at which the error\n\t * occurred.\n\t * @param {?Error} ex The actual Error object.\n\t */\n\n\n\t function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n\t var stack = null; // If 'ex' is ErrorEvent, get real Error from inside\n\n\t var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside\n\n\t var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n\t if (lastExceptionStack) {\n\t TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n\t processLastException();\n\t } else if (exception && utils.isError(exception)) {\n\t // non-string `exception` arg; attempt to extract stack trace\n\t // New chrome and blink send along a real error object\n\t // Let's just report that like a normal error.\n\t // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n\t stack = TraceKit.computeStackTrace(exception);\n\t notifyHandlers(stack, true);\n\t } else {\n\t var location = {\n\t url: url,\n\t line: lineNo,\n\t column: colNo\n\t };\n\t var name = undefined;\n\t var groups;\n\n\t if ({}.toString.call(message) === '[object String]') {\n\t var groups = message.match(ERROR_TYPES_RE);\n\n\t if (groups) {\n\t name = groups[1];\n\t message = groups[2];\n\t }\n\t }\n\n\t location.func = UNKNOWN_FUNCTION;\n\t stack = {\n\t name: name,\n\t message: message,\n\t url: getLocationHref(),\n\t stack: [location]\n\t };\n\t notifyHandlers(stack, true);\n\t }\n\n\t if (_oldOnerrorHandler) {\n\t return _oldOnerrorHandler.apply(this, arguments);\n\t }\n\n\t return false;\n\t }\n\n\t function installGlobalHandler() {\n\t if (_onErrorHandlerInstalled) {\n\t return;\n\t }\n\n\t _oldOnerrorHandler = _window$1.onerror;\n\t _window$1.onerror = traceKitWindowOnError;\n\t _onErrorHandlerInstalled = true;\n\t }\n\n\t function uninstallGlobalHandler() {\n\t if (!_onErrorHandlerInstalled) {\n\t return;\n\t }\n\n\t _window$1.onerror = _oldOnerrorHandler;\n\t _onErrorHandlerInstalled = false;\n\t _oldOnerrorHandler = undefined;\n\t }\n\n\t function processLastException() {\n\t var _lastExceptionStack = lastExceptionStack,\n\t _lastArgs = lastArgs;\n\t lastArgs = null;\n\t lastExceptionStack = null;\n\t lastException = null;\n\t notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n\t }\n\t /**\n\t * Reports an unhandled Error to TraceKit.\n\t * @param {Error} ex\n\t * @param {?boolean} rethrow If false, do not re-throw the exception.\n\t * Only used for window.onerror to not cause an infinite loop of\n\t * rethrowing.\n\t */\n\n\n\t function report(ex, rethrow) {\n\t var args = _slice.call(arguments, 1);\n\n\t if (lastExceptionStack) {\n\t if (lastException === ex) {\n\t return; // already caught by an inner catch block, ignore\n\t } else {\n\t processLastException();\n\t }\n\t }\n\n\t var stack = TraceKit.computeStackTrace(ex);\n\t lastExceptionStack = stack;\n\t lastException = ex;\n\t lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for\n\t // slow slow IE to see if onerror occurs or not before reporting\n\t // this exception; otherwise, we will end up with an incomplete\n\t // stack trace\n\n\t setTimeout(function () {\n\t if (lastException === ex) {\n\t processLastException();\n\t }\n\t }, stack.incomplete ? 2000 : 0);\n\n\t if (rethrow !== false) {\n\t throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n\t }\n\t }\n\n\t report.subscribe = subscribe;\n\t report.unsubscribe = unsubscribe;\n\t report.uninstall = unsubscribeAll;\n\t return report;\n\t}();\n\t/**\n\t * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n\t *\n\t * Syntax:\n\t * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n\t * Returns:\n\t * s.name - exception name\n\t * s.message - exception message\n\t * s.stack[i].url - JavaScript or HTML file URL\n\t * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n\t * s.stack[i].args - arguments passed to the function, if known\n\t * s.stack[i].line - line number, if known\n\t * s.stack[i].column - column number, if known\n\t *\n\t * Supports:\n\t * - Firefox: full stack trace with line numbers and unreliable column\n\t * number on top frame\n\t * - Opera 10: full stack trace with line and column numbers\n\t * - Opera 9-: full stack trace with line numbers\n\t * - Chrome: full stack trace with line and column numbers\n\t * - Safari: line and column number for the topmost stacktrace element\n\t * only\n\t * - IE: no line numbers whatsoever\n\t *\n\t * Tries to guess names of anonymous functions by looking for assignments\n\t * in the source code. In IE and Safari, we have to guess source file names\n\t * by searching for function bodies inside all page scripts. This will not\n\t * work for scripts that are loaded cross-domain.\n\t * Here be dragons: some function names may be guessed incorrectly, and\n\t * duplicate functions may be mismatched.\n\t *\n\t * TraceKit.computeStackTrace should only be used for tracing purposes.\n\t * Logging of unhandled exceptions should be done with TraceKit.report,\n\t * which builds on top of TraceKit.computeStackTrace and provides better\n\t * IE support by utilizing the window.onerror event to retrieve information\n\t * about the top of the stack.\n\t *\n\t * Note: In IE and Safari, no stack trace is recorded on the Error object,\n\t * so computeStackTrace instead walks its *own* chain of callers.\n\t * This means that:\n\t * * in Safari, some methods may be missing from the stack trace;\n\t * * in IE, the topmost function in the stack trace will always be the\n\t * caller of computeStackTrace.\n\t *\n\t * This is okay for tracing (because you are likely to be calling\n\t * computeStackTrace from the function you want to be the topmost element\n\t * of the stack trace anyway), but not okay for logging unhandled\n\t * exceptions (because your catch block will likely be far away from the\n\t * inner function that actually caused the exception).\n\t *\n\t */\n\n\n\tTraceKit.computeStackTrace = function computeStackTraceWrapper() {\n\t // Contents of Exception in various browsers.\n\t //\n\t // SAFARI:\n\t // ex.message = Can't find variable: qq\n\t // ex.line = 59\n\t // ex.sourceId = 580238192\n\t // ex.sourceURL = http://...\n\t // ex.expressionBeginOffset = 96\n\t // ex.expressionCaretOffset = 98\n\t // ex.expressionEndOffset = 98\n\t // ex.name = ReferenceError\n\t //\n\t // FIREFOX:\n\t // ex.message = qq is not defined\n\t // ex.fileName = http://...\n\t // ex.lineNumber = 59\n\t // ex.columnNumber = 69\n\t // ex.stack = ...stack trace... (see the example below)\n\t // ex.name = ReferenceError\n\t //\n\t // CHROME:\n\t // ex.message = qq is not defined\n\t // ex.name = ReferenceError\n\t // ex.type = not_defined\n\t // ex.arguments = ['aa']\n\t // ex.stack = ...stack trace...\n\t //\n\t // INTERNET EXPLORER:\n\t // ex.message = ...\n\t // ex.name = ReferenceError\n\t //\n\t // OPERA:\n\t // ex.message = ...message... (see the example below)\n\t // ex.name = ReferenceError\n\t // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n\t // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n\t /**\n\t * Computes stack trace information from the stack property.\n\t * Chrome and Gecko use this property.\n\t * @param {Error} ex\n\t * @return {?Object.<string, *>} Stack trace information.\n\t */\n\t function computeStackTraceFromStackProp(ex) {\n\t if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\t var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\t var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i; // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n\t // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n\n\t var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i; // Used to additionally parse URL/line/column from eval frames\n\n\t var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\t var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\t var lines = ex.stack.split('\\n');\n\t var stack = [];\n\t var submatch;\n\t var parts;\n\t var element;\n\t var reference = /^(.*) is undefined$/.exec(ex.message);\n\n\t for (var i = 0, j = lines.length; i < j; ++i) {\n\t if (parts = chrome.exec(lines[i])) {\n\t var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n\t var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n\t if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n\t // throw out eval line/column and use top-most line/column number\n\t parts[2] = submatch[1]; // url\n\n\t parts[3] = submatch[2]; // line\n\n\t parts[4] = submatch[3]; // column\n\t }\n\n\t element = {\n\t url: !isNative ? parts[2] : null,\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: isNative ? [parts[2]] : [],\n\t line: parts[3] ? +parts[3] : null,\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if (parts = winjs.exec(lines[i])) {\n\t element = {\n\t url: parts[2],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: [],\n\t line: +parts[3],\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if (parts = gecko.exec(lines[i])) {\n\t var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\n\t if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n\t // throw out eval line/column and use top-most line number\n\t parts[3] = submatch[1];\n\t parts[4] = submatch[2];\n\t parts[5] = null; // no column when eval\n\t } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n\t // FireFox uses this awesome columnNumber property for its top frame\n\t // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n\t // so adding 1\n\t // NOTE: this hack doesn't work if top-most frame is eval\n\t stack[0].column = ex.columnNumber + 1;\n\t }\n\n\t element = {\n\t url: parts[3],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: parts[2] ? parts[2].split(',') : [],\n\t line: parts[4] ? +parts[4] : null,\n\t column: parts[5] ? +parts[5] : null\n\t };\n\t } else {\n\t continue;\n\t }\n\n\t if (!element.func && element.line) {\n\t element.func = UNKNOWN_FUNCTION;\n\t }\n\n\t if (element.url && element.url.substr(0, 5) === 'blob:') {\n\t // Special case for handling JavaScript loaded into a blob.\n\t // We use a synchronous AJAX request here as a blob is already in\n\t // memory - it's not making a network request. This will generate a warning\n\t // in the browser console, but there has already been an error so that's not\n\t // that much of an issue.\n\t var xhr = new XMLHttpRequest();\n\t xhr.open('GET', element.url, false);\n\t xhr.send(null); // If we failed to download the source, skip this patch\n\n\t if (xhr.status === 200) {\n\t var source = xhr.responseText || ''; // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n\t // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n\n\t source = source.slice(-300); // Now we dig out the source map URL\n\n\t var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/); // If we don't find a source map comment or we find more than one, continue on to the next element.\n\n\t if (sourceMaps) {\n\t var sourceMapAddress = sourceMaps[1]; // Now we check to see if it's a relative URL.\n\t // If it is, convert it to an absolute one.\n\n\t if (sourceMapAddress.charAt(0) === '~') {\n\t sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n\t } // Now we strip the '.map' off of the end of the URL and update the\n\t // element so that Sentry can match the map to the blob.\n\n\n\t element.url = sourceMapAddress.slice(0, -4);\n\t }\n\t }\n\t }\n\n\t stack.push(element);\n\t }\n\n\t if (!stack.length) {\n\t return null;\n\t }\n\n\t return {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref(),\n\t stack: stack\n\t };\n\t }\n\t /**\n\t * Adds information about the first frame to incomplete stack traces.\n\t * Safari and IE require this to get complete data on the first frame.\n\t * @param {Object.<string, *>} stackInfo Stack trace information from\n\t * one of the compute* methods.\n\t * @param {string} url The URL of the script that caused an error.\n\t * @param {(number|string)} lineNo The line number of the script that\n\t * caused an error.\n\t * @param {string=} message The error generated by the browser, which\n\t * hopefully contains the name of the object that caused the error.\n\t * @return {boolean} Whether or not the stack information was\n\t * augmented.\n\t */\n\n\n\t function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n\t var initial = {\n\t url: url,\n\t line: lineNo\n\t };\n\n\t if (initial.url && initial.line) {\n\t stackInfo.incomplete = false;\n\n\t if (!initial.func) {\n\t initial.func = UNKNOWN_FUNCTION;\n\t }\n\n\t if (stackInfo.stack.length > 0) {\n\t if (stackInfo.stack[0].url === initial.url) {\n\t if (stackInfo.stack[0].line === initial.line) {\n\t return false; // already in stack trace\n\t } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {\n\t stackInfo.stack[0].line = initial.line;\n\t return false;\n\t }\n\t }\n\t }\n\n\t stackInfo.stack.unshift(initial);\n\t stackInfo.partial = true;\n\t return true;\n\t } else {\n\t stackInfo.incomplete = true;\n\t }\n\n\t return false;\n\t }\n\t /**\n\t * Computes stack trace information by walking the arguments.caller\n\t * chain at the time the exception occurred. This will cause earlier\n\t * frames to be missed but is the only way to get any stack trace in\n\t * Safari and IE. The top frame is restored by\n\t * {@link augmentStackTraceWithInitialElement}.\n\t * @param {Error} ex\n\t * @return {?Object.<string, *>} Stack trace information.\n\t */\n\n\n\t function computeStackTraceByWalkingCallerChain(ex, depth) {\n\t var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n\t stack = [],\n\t funcs = {},\n\t recursion = false,\n\t parts,\n\t item;\n\n\t for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {\n\t if (curr === computeStackTrace || curr === TraceKit.report) {\n\t // console.log('skipping internal function');\n\t continue;\n\t }\n\n\t item = {\n\t url: null,\n\t func: UNKNOWN_FUNCTION,\n\t line: null,\n\t column: null\n\t };\n\n\t if (curr.name) {\n\t item.func = curr.name;\n\t } else if (parts = functionName.exec(curr.toString())) {\n\t item.func = parts[1];\n\t }\n\n\t if (typeof item.func === 'undefined') {\n\t try {\n\t item.func = parts.input.substring(0, parts.input.indexOf('{'));\n\t } catch (e) {}\n\t }\n\n\t if (funcs['' + curr]) {\n\t recursion = true;\n\t } else {\n\t funcs['' + curr] = true;\n\t }\n\n\t stack.push(item);\n\t }\n\n\t if (depth) {\n\t // console.log('depth is ' + depth);\n\t // console.log('stack is ' + stack.length);\n\t stack.splice(0, depth);\n\t }\n\n\t var result = {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref(),\n\t stack: stack\n\t };\n\t augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);\n\t return result;\n\t }\n\t /**\n\t * Computes a stack trace for an exception.\n\t * @param {Error} ex\n\t * @param {(string|number)=} depth\n\t */\n\n\n\t function computeStackTrace(ex, depth) {\n\t var stack = null;\n\t depth = depth == null ? 0 : +depth;\n\n\t try {\n\t stack = computeStackTraceFromStackProp(ex);\n\n\t if (stack) {\n\t return stack;\n\t }\n\t } catch (e) {\n\t if (TraceKit.debug) {\n\t throw e;\n\t }\n\t }\n\n\t try {\n\t stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n\n\t if (stack) {\n\t return stack;\n\t }\n\t } catch (e) {\n\t if (TraceKit.debug) {\n\t throw e;\n\t }\n\t }\n\n\t return {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref()\n\t };\n\t }\n\n\t computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n\t computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\t return computeStackTrace;\n\t}();\n\n\tvar tracekit = TraceKit;\n\n\t/*\n\t * JavaScript MD5\n\t * https://github.com/blueimp/JavaScript-MD5\n\t *\n\t * Copyright 2011, Sebastian Tschan\n\t * https://blueimp.net\n\t *\n\t * Licensed under the MIT license:\n\t * https://opensource.org/licenses/MIT\n\t *\n\t * Based on\n\t * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n\t * Digest Algorithm, as defined in RFC 1321.\n\t * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t * Distributed under the BSD License\n\t * See http://pajhome.org.uk/crypt/md5 for more info.\n\t */\n\n\t/*\n\t* Add integers, wrapping at 2^32. This uses 16-bit operations internally\n\t* to work around bugs in some JS interpreters.\n\t*/\n\tfunction safeAdd(x, y) {\n\t var lsw = (x & 0xffff) + (y & 0xffff);\n\t var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n\t return msw << 16 | lsw & 0xffff;\n\t}\n\t/*\n\t* Bitwise rotate a 32-bit number to the left.\n\t*/\n\n\n\tfunction bitRotateLeft(num, cnt) {\n\t return num << cnt | num >>> 32 - cnt;\n\t}\n\t/*\n\t* These functions implement the four basic operations the algorithm uses.\n\t*/\n\n\n\tfunction md5cmn(q, a, b, x, s, t) {\n\t return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n\t}\n\n\tfunction md5ff(a, b, c, d, x, s, t) {\n\t return md5cmn(b & c | ~b & d, a, b, x, s, t);\n\t}\n\n\tfunction md5gg(a, b, c, d, x, s, t) {\n\t return md5cmn(b & d | c & ~d, a, b, x, s, t);\n\t}\n\n\tfunction md5hh(a, b, c, d, x, s, t) {\n\t return md5cmn(b ^ c ^ d, a, b, x, s, t);\n\t}\n\n\tfunction md5ii(a, b, c, d, x, s, t) {\n\t return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n\t}\n\t/*\n\t* Calculate the MD5 of an array of little-endian words, and a bit length.\n\t*/\n\n\n\tfunction binlMD5(x, len) {\n\t /* append padding */\n\t x[len >> 5] |= 0x80 << len % 32;\n\t x[(len + 64 >>> 9 << 4) + 14] = len;\n\t var i;\n\t var olda;\n\t var oldb;\n\t var oldc;\n\t var oldd;\n\t var a = 1732584193;\n\t var b = -271733879;\n\t var c = -1732584194;\n\t var d = 271733878;\n\n\t for (i = 0; i < x.length; i += 16) {\n\t olda = a;\n\t oldb = b;\n\t oldc = c;\n\t oldd = d;\n\t a = md5ff(a, b, c, d, x[i], 7, -680876936);\n\t d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n\t c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n\t b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n\t a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n\t d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n\t c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n\t b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n\t a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n\t d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n\t c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n\t b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n\t a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n\t d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n\t c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n\t b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\t a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n\t d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n\t c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n\t b = md5gg(b, c, d, a, x[i], 20, -373897302);\n\t a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n\t d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n\t c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n\t b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n\t a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n\t d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n\t c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n\t b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n\t a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n\t d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n\t c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n\t b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\t a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n\t d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n\t c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n\t b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n\t a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n\t d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n\t c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n\t b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n\t a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n\t d = md5hh(d, a, b, c, x[i], 11, -358537222);\n\t c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n\t b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n\t a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n\t d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n\t c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n\t b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\t a = md5ii(a, b, c, d, x[i], 6, -198630844);\n\t d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n\t c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n\t b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n\t a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n\t d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n\t c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n\t b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n\t a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n\t d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n\t c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n\t b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n\t a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n\t d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n\t c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n\t b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\t a = safeAdd(a, olda);\n\t b = safeAdd(b, oldb);\n\t c = safeAdd(c, oldc);\n\t d = safeAdd(d, oldd);\n\t }\n\n\t return [a, b, c, d];\n\t}\n\t/*\n\t* Convert an array of little-endian words to a string\n\t*/\n\n\n\tfunction binl2rstr(input) {\n\t var i;\n\t var output = '';\n\t var length32 = input.length * 32;\n\n\t for (i = 0; i < length32; i += 8) {\n\t output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff);\n\t }\n\n\t return output;\n\t}\n\t/*\n\t* Convert a raw string to an array of little-endian words\n\t* Characters >255 have their high-byte silently ignored.\n\t*/\n\n\n\tfunction rstr2binl(input) {\n\t var i;\n\t var output = [];\n\t output[(input.length >> 2) - 1] = undefined;\n\n\t for (i = 0; i < output.length; i += 1) {\n\t output[i] = 0;\n\t }\n\n\t var length8 = input.length * 8;\n\n\t for (i = 0; i < length8; i += 8) {\n\t output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;\n\t }\n\n\t return output;\n\t}\n\t/*\n\t* Calculate the MD5 of a raw string\n\t*/\n\n\n\tfunction rstrMD5(s) {\n\t return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n\t}\n\t/*\n\t* Calculate the HMAC-MD5, of a key and some data (raw strings)\n\t*/\n\n\n\tfunction rstrHMACMD5(key, data) {\n\t var i;\n\t var bkey = rstr2binl(key);\n\t var ipad = [];\n\t var opad = [];\n\t var hash;\n\t ipad[15] = opad[15] = undefined;\n\n\t if (bkey.length > 16) {\n\t bkey = binlMD5(bkey, key.length * 8);\n\t }\n\n\t for (i = 0; i < 16; i += 1) {\n\t ipad[i] = bkey[i] ^ 0x36363636;\n\t opad[i] = bkey[i] ^ 0x5c5c5c5c;\n\t }\n\n\t hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n\t return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n\t}\n\t/*\n\t* Convert a raw string to a hex string\n\t*/\n\n\n\tfunction rstr2hex(input) {\n\t var hexTab = '0123456789abcdef';\n\t var output = '';\n\t var x;\n\t var i;\n\n\t for (i = 0; i < input.length; i += 1) {\n\t x = input.charCodeAt(i);\n\t output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f);\n\t }\n\n\t return output;\n\t}\n\t/*\n\t* Encode a string as utf-8\n\t*/\n\n\n\tfunction str2rstrUTF8(input) {\n\t return unescape(encodeURIComponent(input));\n\t}\n\t/*\n\t* Take string arguments and return either raw or hex encoded strings\n\t*/\n\n\n\tfunction rawMD5(s) {\n\t return rstrMD5(str2rstrUTF8(s));\n\t}\n\n\tfunction hexMD5(s) {\n\t return rstr2hex(rawMD5(s));\n\t}\n\n\tfunction rawHMACMD5(k, d) {\n\t return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n\t}\n\n\tfunction hexHMACMD5(k, d) {\n\t return rstr2hex(rawHMACMD5(k, d));\n\t}\n\n\tfunction md5(string, key, raw) {\n\t if (!key) {\n\t if (!raw) {\n\t return hexMD5(string);\n\t }\n\n\t return rawMD5(string);\n\t }\n\n\t if (!raw) {\n\t return hexHMACMD5(key, string);\n\t }\n\n\t return rawHMACMD5(key, string);\n\t}\n\n\tvar md5_1 = md5;\n\n\tfunction RavenConfigError(message) {\n\t this.name = 'RavenConfigError';\n\t this.message = message;\n\t}\n\n\tRavenConfigError.prototype = new Error();\n\tRavenConfigError.prototype.constructor = RavenConfigError;\n\tvar configError = RavenConfigError;\n\n\tvar wrapMethod = function wrapMethod(console, level, callback) {\n\t var originalConsoleLevel = console[level];\n\t var originalConsole = console;\n\n\t if (!(level in console)) {\n\t return;\n\t }\n\n\t var sentryLevel = level === 'warn' ? 'warning' : level;\n\n\t console[level] = function () {\n\t var args = [].slice.call(arguments);\n\t var msg = utils.safeJoin(args, ' ');\n\t var data = {\n\t level: sentryLevel,\n\t logger: 'console',\n\t extra: {\n\t arguments: args\n\t }\n\t };\n\n\t if (level === 'assert') {\n\t if (args[0] === false) {\n\t // Default browsers message\n\t msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');\n\t data.extra.arguments = args.slice(1);\n\t callback && callback(msg, data);\n\t }\n\t } else {\n\t callback && callback(msg, data);\n\t } // this fails for some browsers. :(\n\n\n\t if (originalConsoleLevel) {\n\t // IE9 doesn't allow calling apply on console functions directly\n\t // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n\t Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n\t }\n\t };\n\t};\n\n\tvar console$1 = {\n\t wrapMethod: wrapMethod\n\t};\n\n\t/*global XDomainRequest:false */\n\n\tvar isErrorEvent$1 = utils.isErrorEvent;\n\tvar isDOMError$1 = utils.isDOMError;\n\tvar isDOMException$1 = utils.isDOMException;\n\tvar isError$1 = utils.isError;\n\tvar isObject$2 = utils.isObject;\n\tvar isPlainObject$1 = utils.isPlainObject;\n\tvar isUndefined$1 = utils.isUndefined;\n\tvar isFunction$1 = utils.isFunction;\n\tvar isString$1 = utils.isString;\n\tvar isArray$2 = utils.isArray;\n\tvar isEmptyObject$1 = utils.isEmptyObject;\n\tvar each$1 = utils.each;\n\tvar objectMerge$1 = utils.objectMerge;\n\tvar truncate$1 = utils.truncate;\n\tvar objectFrozen$1 = utils.objectFrozen;\n\tvar hasKey$1 = utils.hasKey;\n\tvar joinRegExp$1 = utils.joinRegExp;\n\tvar urlencode$1 = utils.urlencode;\n\tvar uuid4$1 = utils.uuid4;\n\tvar htmlTreeAsString$1 = utils.htmlTreeAsString;\n\tvar isSameException$1 = utils.isSameException;\n\tvar isSameStacktrace$1 = utils.isSameStacktrace;\n\tvar parseUrl$1 = utils.parseUrl;\n\tvar fill$1 = utils.fill;\n\tvar supportsFetch$1 = utils.supportsFetch;\n\tvar supportsReferrerPolicy$1 = utils.supportsReferrerPolicy;\n\tvar serializeKeysForMessage$1 = utils.serializeKeysForMessage;\n\tvar serializeException$1 = utils.serializeException;\n\tvar sanitize$1 = utils.sanitize;\n\tvar wrapConsoleMethod = console$1.wrapMethod;\n\tvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n\t dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\n\tfunction now() {\n\t return +new Date();\n\t} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\n\n\tvar _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\tvar _document = _window$2.document;\n\tvar _navigator = _window$2.navigator;\n\n\tfunction keepOriginalCallback(original, callback) {\n\t return isFunction$1(callback) ? function (data) {\n\t return callback(data, original);\n\t } : callback;\n\t} // First, check for JSON support\n\t// If there is no JSON, we no-op the core features of Raven\n\t// since JSON is required to encode the payload\n\n\n\tfunction Raven() {\n\t this._hasJSON = !!((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native)\n\n\t this._hasDocument = !isUndefined$1(_document);\n\t this._hasNavigator = !isUndefined$1(_navigator);\n\t this._lastCapturedException = null;\n\t this._lastData = null;\n\t this._lastEventId = null;\n\t this._globalServer = null;\n\t this._globalKey = null;\n\t this._globalProject = null;\n\t this._globalContext = {};\n\t this._globalOptions = {\n\t // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin\n\t release: _window$2.SENTRY_RELEASE && _window$2.SENTRY_RELEASE.id,\n\t logger: 'javascript',\n\t ignoreErrors: [],\n\t ignoreUrls: [],\n\t whitelistUrls: [],\n\t includePaths: [],\n\t headers: null,\n\t collectWindowErrors: true,\n\t captureUnhandledRejections: true,\n\t maxMessageLength: 0,\n\t // By default, truncates URL values to 250 chars\n\t maxUrlLength: 250,\n\t stackTraceLimit: 50,\n\t autoBreadcrumbs: true,\n\t instrument: true,\n\t sampleRate: 1,\n\t sanitizeKeys: []\n\t };\n\t this._fetchDefaults = {\n\t method: 'POST',\n\t // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t // https://caniuse.com/#feat=referrer-policy\n\t // It doesn't. And it throw exception instead of ignoring this parameter...\n\t // REF: https://github.com/getsentry/raven-js/issues/1233\n\t referrerPolicy: supportsReferrerPolicy$1() ? 'origin' : ''\n\t };\n\t this._ignoreOnError = 0;\n\t this._isRavenInstalled = false;\n\t this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first\n\t // before the console plugin has a chance to monkey patch\n\n\t this._originalConsole = _window$2.console || {};\n\t this._originalConsoleMethods = {};\n\t this._plugins = [];\n\t this._startTime = now();\n\t this._wrappedBuiltIns = [];\n\t this._breadcrumbs = [];\n\t this._lastCapturedEvent = null;\n\t this._keypressTimeout;\n\t this._location = _window$2.location;\n\t this._lastHref = this._location && this._location.href;\n\n\t this._resetBackoff(); // eslint-disable-next-line guard-for-in\n\n\n\t for (var method in this._originalConsole) {\n\t this._originalConsoleMethods[method] = this._originalConsole[method];\n\t }\n\t}\n\t/*\n\t * The core Raven singleton\n\t *\n\t * @this {Raven}\n\t */\n\n\n\tRaven.prototype = {\n\t // Hardcode version string so that raven source can be loaded directly via\n\t // webpack (using a build step causes webpack #1617). Grunt verifies that\n\t // this value matches package.json during build.\n\t // See: https://github.com/getsentry/raven-js/issues/465\n\t VERSION: '3.27.1',\n\t debug: false,\n\t TraceKit: tracekit,\n\t // alias to TraceKit\n\n\t /*\n\t * Configure Raven with a DSN and extra options\n\t *\n\t * @param {string} dsn The public Sentry DSN\n\t * @param {object} options Set of global options [optional]\n\t * @return {Raven}\n\t */\n\t config: function config(dsn, options) {\n\t var self = this;\n\n\t if (self._globalServer) {\n\t this._logDebug('error', 'Error: Raven has already been configured');\n\n\t return self;\n\t }\n\n\t if (!dsn) return self;\n\t var globalOptions = self._globalOptions; // merge in options\n\n\t if (options) {\n\t each$1(options, function (key, value) {\n\t // tags and extra are special and need to be put into context\n\t if (key === 'tags' || key === 'extra' || key === 'user') {\n\t self._globalContext[key] = value;\n\t } else {\n\t globalOptions[key] = value;\n\t }\n\t });\n\t }\n\n\t self.setDSN(dsn); // \"Script error.\" is hard coded into browsers for errors that it can't read.\n\t // this is the result of a script being pulled in from an external domain and CORS.\n\n\t globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n\t globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/); // join regexp rules into one big rule\n\n\t globalOptions.ignoreErrors = joinRegExp$1(globalOptions.ignoreErrors);\n\t globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp$1(globalOptions.ignoreUrls) : false;\n\t globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp$1(globalOptions.whitelistUrls) : false;\n\t globalOptions.includePaths = joinRegExp$1(globalOptions.includePaths);\n\t globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100\n\n\t var autoBreadcrumbDefaults = {\n\t xhr: true,\n\t console: true,\n\t dom: true,\n\t location: true,\n\t sentry: true\n\t };\n\t var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n\n\t if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n\t autoBreadcrumbs = objectMerge$1(autoBreadcrumbDefaults, autoBreadcrumbs);\n\t } else if (autoBreadcrumbs !== false) {\n\t autoBreadcrumbs = autoBreadcrumbDefaults;\n\t }\n\n\t globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\t var instrumentDefaults = {\n\t tryCatch: true\n\t };\n\t var instrument = globalOptions.instrument;\n\n\t if ({}.toString.call(instrument) === '[object Object]') {\n\t instrument = objectMerge$1(instrumentDefaults, instrument);\n\t } else if (instrument !== false) {\n\t instrument = instrumentDefaults;\n\t }\n\n\t globalOptions.instrument = instrument;\n\t tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining\n\n\t return self;\n\t },\n\n\t /*\n\t * Installs a global window.onerror error handler\n\t * to capture and report uncaught exceptions.\n\t * At this point, install() is required to be called due\n\t * to the way TraceKit is set up.\n\t *\n\t * @return {Raven}\n\t */\n\t install: function install() {\n\t var self = this;\n\n\t if (self.isSetup() && !self._isRavenInstalled) {\n\t tracekit.report.subscribe(function () {\n\t self._handleOnErrorStackInfo.apply(self, arguments);\n\t });\n\n\t if (self._globalOptions.captureUnhandledRejections) {\n\t self._attachPromiseRejectionHandler();\n\t }\n\n\t self._patchFunctionToString();\n\n\t if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n\t self._instrumentTryCatch();\n\t }\n\n\t if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins\n\n\t self._drainPlugins();\n\n\t self._isRavenInstalled = true;\n\t }\n\n\t Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n\t return this;\n\t },\n\n\t /*\n\t * Set the DSN (can be called multiple time unlike config)\n\t *\n\t * @param {string} dsn The public Sentry DSN\n\t */\n\t setDSN: function setDSN(dsn) {\n\t var self = this,\n\t uri = self._parseDSN(dsn),\n\t lastSlash = uri.path.lastIndexOf('/'),\n\t path = uri.path.substr(1, lastSlash);\n\n\t self._dsn = dsn;\n\t self._globalKey = uri.user;\n\t self._globalSecret = uri.pass && uri.pass.substr(1);\n\t self._globalProject = uri.path.substr(lastSlash + 1);\n\t self._globalServer = self._getGlobalServer(uri);\n\t self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a\n\t // new project/server\n\n\t this._resetBackoff();\n\t },\n\n\t /*\n\t * Wrap code within a context so Raven can capture errors\n\t * reliably across domains that is executed immediately.\n\t *\n\t * @param {object} options A specific set of options for this context [optional]\n\t * @param {function} func The callback to be immediately executed within the context\n\t * @param {array} args An array of arguments to be called with the callback [optional]\n\t */\n\t context: function context(options, func, args) {\n\t if (isFunction$1(options)) {\n\t args = func || [];\n\t func = options;\n\t options = {};\n\t }\n\n\t return this.wrap(options, func).apply(this, args);\n\t },\n\n\t /*\n\t * Wrap code within a context and returns back a new function to be executed\n\t *\n\t * @param {object} options A specific set of options for this context [optional]\n\t * @param {function} func The function to be wrapped in a new context\n\t * @param {function} _before A function to call before the try/catch wrapper [optional, private]\n\t * @return {function} The newly wrapped functions with a context\n\t */\n\t wrap: function wrap(options, func, _before) {\n\t var self = this; // 1 argument has been passed, and it's not a function\n\t // so just return it\n\n\t if (isUndefined$1(func) && !isFunction$1(options)) {\n\t return options;\n\t } // options is optional\n\n\n\t if (isFunction$1(options)) {\n\t func = options;\n\t options = undefined;\n\t } // At this point, we've passed along 2 arguments, and the second one\n\t // is not a function either, so we'll just return the second argument.\n\n\n\t if (!isFunction$1(func)) {\n\t return func;\n\t } // We don't wanna wrap it twice!\n\n\n\t try {\n\t if (func.__raven__) {\n\t return func;\n\t } // If this has already been wrapped in the past, return that\n\n\n\t if (func.__raven_wrapper__) {\n\t return func.__raven_wrapper__;\n\t }\n\t } catch (e) {\n\t // Just accessing custom props in some Selenium environments\n\t // can cause a \"Permission denied\" exception (see raven-js#495).\n\t // Bail on wrapping and return the function as-is (defers to window.onerror).\n\t return func;\n\t }\n\n\t function wrapped() {\n\t var args = [],\n\t i = arguments.length,\n\t deep = !options || options && options.deep !== false;\n\n\t if (_before && isFunction$1(_before)) {\n\t _before.apply(this, arguments);\n\t } // Recursively wrap all of a function's arguments that are\n\t // functions themselves.\n\n\n\t while (i--) {\n\t args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\t }\n\n\t try {\n\t // Attempt to invoke user-land function\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n\t // means Raven caught an error invoking your application code. This is\n\t // expected behavior and NOT indicative of a bug with Raven.js.\n\t return func.apply(this, args);\n\t } catch (e) {\n\t self._ignoreNextOnError();\n\n\t self.captureException(e, options);\n\t throw e;\n\t }\n\t } // copy over properties of the old function\n\n\n\t for (var property in func) {\n\t if (hasKey$1(func, property)) {\n\t wrapped[property] = func[property];\n\t }\n\t }\n\n\t wrapped.prototype = func.prototype;\n\t func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already\n\t // for both debugging and to prevent it to being wrapped/filled twice\n\n\t wrapped.__raven__ = true;\n\t wrapped.__orig__ = func;\n\t return wrapped;\n\t },\n\n\t /**\n\t * Uninstalls the global error handler.\n\t *\n\t * @return {Raven}\n\t */\n\t uninstall: function uninstall() {\n\t tracekit.report.uninstall();\n\n\t this._detachPromiseRejectionHandler();\n\n\t this._unpatchFunctionToString();\n\n\t this._restoreBuiltIns();\n\n\t this._restoreConsole();\n\n\t Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n\t this._isRavenInstalled = false;\n\t return this;\n\t },\n\n\t /**\n\t * Callback used for `unhandledrejection` event\n\t *\n\t * @param {PromiseRejectionEvent} event An object containing\n\t * promise: the Promise that was rejected\n\t * reason: the value with which the Promise was rejected\n\t * @return void\n\t */\n\t _promiseRejectionHandler: function _promiseRejectionHandler(event) {\n\t this._logDebug('debug', 'Raven caught unhandled promise rejection:', event);\n\n\t this.captureException(event.reason, {\n\t mechanism: {\n\t type: 'onunhandledrejection',\n\t handled: false\n\t }\n\t });\n\t },\n\n\t /**\n\t * Installs the global promise rejection handler.\n\t *\n\t * @return {raven}\n\t */\n\t _attachPromiseRejectionHandler: function _attachPromiseRejectionHandler() {\n\t this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this);\n\t _window$2.addEventListener && _window$2.addEventListener('unhandledrejection', this._promiseRejectionHandler);\n\t return this;\n\t },\n\n\t /**\n\t * Uninstalls the global promise rejection handler.\n\t *\n\t * @return {raven}\n\t */\n\t _detachPromiseRejectionHandler: function _detachPromiseRejectionHandler() {\n\t _window$2.removeEventListener && _window$2.removeEventListener('unhandledrejection', this._promiseRejectionHandler);\n\t return this;\n\t },\n\n\t /**\n\t * Manually capture an exception and send it over to Sentry\n\t *\n\t * @param {error} ex An exception to be logged\n\t * @param {object} options A specific set of options for this error [optional]\n\t * @return {Raven}\n\t */\n\t captureException: function captureException(ex, options) {\n\t options = objectMerge$1({\n\t trimHeadFrames: 0\n\t }, options ? options : {});\n\n\t if (isErrorEvent$1(ex) && ex.error) {\n\t // If it is an ErrorEvent with `error` property, extract it to get actual Error\n\t ex = ex.error;\n\t } else if (isDOMError$1(ex) || isDOMException$1(ex)) {\n\t // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n\t // then we just extract the name and message, as they don't provide anything else\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n\t var name = ex.name || (isDOMError$1(ex) ? 'DOMError' : 'DOMException');\n\t var message = ex.message ? name + ': ' + ex.message : name;\n\t return this.captureMessage(message, objectMerge$1(options, {\n\t // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well\n\t // but it's barely any overhead so we may at least try\n\t stacktrace: true,\n\t trimHeadFrames: options.trimHeadFrames + 1\n\t }));\n\t } else if (isError$1(ex)) {\n\t // we have a real Error object\n\t ex = ex;\n\t } else if (isPlainObject$1(ex)) {\n\t // If it is plain Object, serialize it manually and extract options\n\t // This will allow us to group events based on top-level keys\n\t // which is much better than creating new group when any key/value change\n\t options = this._getCaptureExceptionOptionsFromPlainObject(options, ex);\n\t ex = new Error(options.message);\n\t } else {\n\t // If none of previous checks were valid, then it means that\n\t // it's not a DOMError/DOMException\n\t // it's not a plain Object\n\t // it's not a valid ErrorEvent (one with an error property)\n\t // it's not an Error\n\t // So bail out and capture it as a simple message:\n\t return this.captureMessage(ex, objectMerge$1(options, {\n\t stacktrace: true,\n\t // if we fall back to captureMessage, default to attempting a new trace\n\t trimHeadFrames: options.trimHeadFrames + 1\n\t }));\n\t } // Store the raw exception object for potential debugging and introspection\n\n\n\t this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it,\n\t // which means you have to wrap it in try/catch. Instead, we\n\t // can wrap it here and only re-raise if TraceKit.report\n\t // raises an exception different from the one we asked to\n\t // report on.\n\n\t try {\n\t var stack = tracekit.computeStackTrace(ex);\n\n\t this._handleStackInfo(stack, options);\n\t } catch (ex1) {\n\t if (ex !== ex1) {\n\t throw ex1;\n\t }\n\t }\n\n\t return this;\n\t },\n\t _getCaptureExceptionOptionsFromPlainObject: function _getCaptureExceptionOptionsFromPlainObject(currentOptions, ex) {\n\t var exKeys = Object.keys(ex).sort();\n\t var options = objectMerge$1(currentOptions, {\n\t message: 'Non-Error exception captured with keys: ' + serializeKeysForMessage$1(exKeys),\n\t fingerprint: [md5_1(exKeys)],\n\t extra: currentOptions.extra || {}\n\t });\n\t options.extra.__serialized__ = serializeException$1(ex);\n\t return options;\n\t },\n\n\t /*\n\t * Manually send a message to Sentry\n\t *\n\t * @param {string} msg A plain message to be captured in Sentry\n\t * @param {object} options A specific set of options for this message [optional]\n\t * @return {Raven}\n\t */\n\t captureMessage: function captureMessage(msg, options) {\n\t // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n\t // early call; we'll error on the side of logging anything called before configuration since it's\n\t // probably something you should see:\n\t if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) {\n\t return;\n\t }\n\n\t options = options || {};\n\t msg = msg + ''; // Make sure it's actually a string\n\n\t var data = objectMerge$1({\n\t message: msg\n\t }, options);\n\t var ex; // Generate a \"synthetic\" stack trace from this point.\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n\t // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n\t // or if it catches a thrown object without a \"stack\" property.\n\n\t try {\n\t throw new Error(msg);\n\t } catch (ex1) {\n\t ex = ex1;\n\t } // null exception name so `Error` isn't prefixed to msg\n\n\n\t ex.name = null;\n\t var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n\n\t var initialCall = isArray$2(stack.stack) && stack.stack[1]; // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call\n\t // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd\n\t // initialCall => captureException(string) => captureMessage(string)\n\n\t if (initialCall && initialCall.func === 'Raven.captureException') {\n\t initialCall = stack.stack[2];\n\t }\n\n\t var fileurl = initialCall && initialCall.url || '';\n\n\t if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) {\n\t return;\n\t }\n\n\t if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) {\n\t return;\n\t } // Always attempt to get stacktrace if message is empty.\n\t // It's the only way to provide any helpful information to the user.\n\n\n\t if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n\t // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n\t data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\t options = objectMerge$1({\n\t trimHeadFrames: 0\n\t }, options); // Since we know this is a synthetic trace, the top frame (this function call)\n\t // MUST be from Raven.js, so mark it for trimming\n\t // We add to the trim counter so that callers can choose to trim extra frames, such\n\t // as utility functions.\n\n\t options.trimHeadFrames += 1;\n\n\t var frames = this._prepareFrames(stack, options);\n\n\t data.stacktrace = {\n\t // Sentry expects frames oldest to newest\n\t frames: frames.reverse()\n\t };\n\t } // Make sure that fingerprint is always wrapped in an array\n\n\n\t if (data.fingerprint) {\n\t data.fingerprint = isArray$2(data.fingerprint) ? data.fingerprint : [data.fingerprint];\n\t } // Fire away!\n\n\n\t this._send(data);\n\n\t return this;\n\t },\n\t captureBreadcrumb: function captureBreadcrumb(obj) {\n\t var crumb = objectMerge$1({\n\t timestamp: now() / 1000\n\t }, obj);\n\n\t if (isFunction$1(this._globalOptions.breadcrumbCallback)) {\n\t var result = this._globalOptions.breadcrumbCallback(crumb);\n\n\t if (isObject$2(result) && !isEmptyObject$1(result)) {\n\t crumb = result;\n\t } else if (result === false) {\n\t return this;\n\t }\n\t }\n\n\t this._breadcrumbs.push(crumb);\n\n\t if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n\t this._breadcrumbs.shift();\n\t }\n\n\t return this;\n\t },\n\t addPlugin: function addPlugin(plugin\n\t /*arg1, arg2, ... argN*/\n\t ) {\n\t var pluginArgs = [].slice.call(arguments, 1);\n\n\t this._plugins.push([plugin, pluginArgs]);\n\n\t if (this._isRavenInstalled) {\n\t this._drainPlugins();\n\t }\n\n\t return this;\n\t },\n\n\t /*\n\t * Set/clear a user to be sent along with the payload.\n\t *\n\t * @param {object} user An object representing user data [optional]\n\t * @return {Raven}\n\t */\n\t setUserContext: function setUserContext(user) {\n\t // Intentionally do not merge here since that's an unexpected behavior.\n\t this._globalContext.user = user;\n\t return this;\n\t },\n\n\t /*\n\t * Merge extra attributes to be sent along with the payload.\n\t *\n\t * @param {object} extra An object representing extra data [optional]\n\t * @return {Raven}\n\t */\n\t setExtraContext: function setExtraContext(extra) {\n\t this._mergeContext('extra', extra);\n\n\t return this;\n\t },\n\n\t /*\n\t * Merge tags to be sent along with the payload.\n\t *\n\t * @param {object} tags An object representing tags [optional]\n\t * @return {Raven}\n\t */\n\t setTagsContext: function setTagsContext(tags) {\n\t this._mergeContext('tags', tags);\n\n\t return this;\n\t },\n\n\t /*\n\t * Clear all of the context.\n\t *\n\t * @return {Raven}\n\t */\n\t clearContext: function clearContext() {\n\t this._globalContext = {};\n\t return this;\n\t },\n\n\t /*\n\t * Get a copy of the current context. This cannot be mutated.\n\t *\n\t * @return {object} copy of context\n\t */\n\t getContext: function getContext() {\n\t // lol javascript\n\t return JSON.parse(stringify_1(this._globalContext));\n\t },\n\n\t /*\n\t * Set environment of application\n\t *\n\t * @param {string} environment Typically something like 'production'.\n\t * @return {Raven}\n\t */\n\t setEnvironment: function setEnvironment(environment) {\n\t this._globalOptions.environment = environment;\n\t return this;\n\t },\n\n\t /*\n\t * Set release version of application\n\t *\n\t * @param {string} release Typically something like a git SHA to identify version\n\t * @return {Raven}\n\t */\n\t setRelease: function setRelease(release) {\n\t this._globalOptions.release = release;\n\t return this;\n\t },\n\n\t /*\n\t * Set the dataCallback option\n\t *\n\t * @param {function} callback The callback to run which allows the\n\t * data blob to be mutated before sending\n\t * @return {Raven}\n\t */\n\t setDataCallback: function setDataCallback(callback) {\n\t var original = this._globalOptions.dataCallback;\n\t this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /*\n\t * Set the breadcrumbCallback option\n\t *\n\t * @param {function} callback The callback to run which allows filtering\n\t * or mutating breadcrumbs\n\t * @return {Raven}\n\t */\n\t setBreadcrumbCallback: function setBreadcrumbCallback(callback) {\n\t var original = this._globalOptions.breadcrumbCallback;\n\t this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /*\n\t * Set the shouldSendCallback option\n\t *\n\t * @param {function} callback The callback to run which allows\n\t * introspecting the blob before sending\n\t * @return {Raven}\n\t */\n\t setShouldSendCallback: function setShouldSendCallback(callback) {\n\t var original = this._globalOptions.shouldSendCallback;\n\t this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /**\n\t * Override the default HTTP transport mechanism that transmits data\n\t * to the Sentry server.\n\t *\n\t * @param {function} transport Function invoked instead of the default\n\t * `makeRequest` handler.\n\t *\n\t * @return {Raven}\n\t */\n\t setTransport: function setTransport(transport) {\n\t this._globalOptions.transport = transport;\n\t return this;\n\t },\n\n\t /*\n\t * Get the latest raw exception that was captured by Raven.\n\t *\n\t * @return {error}\n\t */\n\t lastException: function lastException() {\n\t return this._lastCapturedException;\n\t },\n\n\t /*\n\t * Get the last event id\n\t *\n\t * @return {string}\n\t */\n\t lastEventId: function lastEventId() {\n\t return this._lastEventId;\n\t },\n\n\t /*\n\t * Determine if Raven is setup and ready to go.\n\t *\n\t * @return {boolean}\n\t */\n\t isSetup: function isSetup() {\n\t if (!this._hasJSON) return false; // needs JSON support\n\n\t if (!this._globalServer) {\n\t if (!this.ravenNotConfiguredError) {\n\t this.ravenNotConfiguredError = true;\n\n\t this._logDebug('error', 'Error: Raven has not been configured.');\n\t }\n\n\t return false;\n\t }\n\n\t return true;\n\t },\n\t afterLoad: function afterLoad() {\n\t // TODO: remove window dependence?\n\t // Attempt to initialize Raven on load\n\t var RavenConfig = _window$2.RavenConfig;\n\n\t if (RavenConfig) {\n\t this.config(RavenConfig.dsn, RavenConfig.config).install();\n\t }\n\t },\n\t showReportDialog: function showReportDialog(options) {\n\t if (!_document // doesn't work without a document (React native)\n\t ) return;\n\t options = objectMerge$1({\n\t eventId: this.lastEventId(),\n\t dsn: this._dsn,\n\t user: this._globalContext.user || {}\n\t }, options);\n\n\t if (!options.eventId) {\n\t throw new configError('Missing eventId');\n\t }\n\n\t if (!options.dsn) {\n\t throw new configError('Missing DSN');\n\t }\n\n\t var encode = encodeURIComponent;\n\t var encodedOptions = [];\n\n\t for (var key in options) {\n\t if (key === 'user') {\n\t var user = options.user;\n\t if (user.name) encodedOptions.push('name=' + encode(user.name));\n\t if (user.email) encodedOptions.push('email=' + encode(user.email));\n\t } else {\n\t encodedOptions.push(encode(key) + '=' + encode(options[key]));\n\t }\n\t }\n\n\t var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n\t var script = _document.createElement('script');\n\n\t script.async = true;\n\t script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n\n\t (_document.head || _document.body).appendChild(script);\n\t },\n\n\t /**** Private functions ****/\n\t _ignoreNextOnError: function _ignoreNextOnError() {\n\t var self = this;\n\t this._ignoreOnError += 1;\n\t setTimeout(function () {\n\t // onerror should trigger before setTimeout\n\t self._ignoreOnError -= 1;\n\t });\n\t },\n\t _triggerEvent: function _triggerEvent(eventType, options) {\n\t // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n\t var evt, key;\n\t if (!this._hasDocument) return;\n\t options = options || {};\n\t eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n\t if (_document.createEvent) {\n\t evt = _document.createEvent('HTMLEvents');\n\t evt.initEvent(eventType, true, true);\n\t } else {\n\t evt = _document.createEventObject();\n\t evt.eventType = eventType;\n\t }\n\n\t for (key in options) {\n\t if (hasKey$1(options, key)) {\n\t evt[key] = options[key];\n\t }\n\t }\n\n\t if (_document.createEvent) {\n\t // IE9 if standards\n\t _document.dispatchEvent(evt);\n\t } else {\n\t // IE8 regardless of Quirks or Standards\n\t // IE9 if quirks\n\t try {\n\t _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n\t } catch (e) {// Do nothing\n\t }\n\t }\n\t },\n\n\t /**\n\t * Wraps addEventListener to capture UI breadcrumbs\n\t * @param evtName the event name (e.g. \"click\")\n\t * @returns {Function}\n\t * @private\n\t */\n\t _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) {\n\t var self = this;\n\t return function (evt) {\n\t // reset keypress timeout; e.g. triggering a 'click' after\n\t // a 'keypress' will reset the keypress debounce so that a new\n\t // set of keypresses can be recorded\n\t self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same\n\t // event (e.g. event propagation through node ancestors). Ignore if we've\n\t // already captured the event.\n\n\t if (self._lastCapturedEvent === evt) return;\n\t self._lastCapturedEvent = evt; // try/catch both:\n\t // - accessing evt.target (see getsentry/raven-js#838, #768)\n\t // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n\t // can throw an exception in some circumstances.\n\n\t var target;\n\n\t try {\n\t target = htmlTreeAsString$1(evt.target);\n\t } catch (e) {\n\t target = '<unknown>';\n\t }\n\n\t self.captureBreadcrumb({\n\t category: 'ui.' + evtName,\n\t // e.g. ui.click, ui.input\n\t message: target\n\t });\n\t };\n\t },\n\n\t /**\n\t * Wraps addEventListener to capture keypress UI events\n\t * @returns {Function}\n\t * @private\n\t */\n\t _keypressEventHandler: function _keypressEventHandler() {\n\t var self = this,\n\t debounceDuration = 1000; // milliseconds\n\t // TODO: if somehow user switches keypress target before\n\t // debounce timeout is triggered, we will only capture\n\t // a single breadcrumb from the FIRST target (acceptable?)\n\n\t return function (evt) {\n\t var target;\n\n\t try {\n\t target = evt.target;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\n\t var tagName = target && target.tagName; // only consider keypress events on actual input elements\n\t // this will disregard keypresses targeting body (e.g. tabbing\n\t // through elements, hotkeys, etc)\n\n\t if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent\n\t // keypresses until debounce clears\n\n\t var timeout = self._keypressTimeout;\n\n\t if (!timeout) {\n\t self._breadcrumbEventHandler('input')(evt);\n\t }\n\n\t clearTimeout(timeout);\n\t self._keypressTimeout = setTimeout(function () {\n\t self._keypressTimeout = null;\n\t }, debounceDuration);\n\t };\n\t },\n\n\t /**\n\t * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n\t * @param to the originating URL\n\t * @param from the target URL\n\t * @private\n\t */\n\t _captureUrlChange: function _captureUrlChange(from, to) {\n\t var parsedLoc = parseUrl$1(this._location.href);\n\t var parsedTo = parseUrl$1(to);\n\t var parsedFrom = parseUrl$1(from); // because onpopstate only tells you the \"new\" (to) value of location.href, and\n\t // not the previous (from) value, we need to track the value of the current URL\n\t // state ourselves\n\n\t this._lastHref = to; // Use only the path component of the URL if the URL matches the current\n\t // document (almost all the time when using pushState)\n\n\t if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative;\n\t if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative;\n\t this.captureBreadcrumb({\n\t category: 'navigation',\n\t data: {\n\t to: to,\n\t from: from\n\t }\n\t });\n\t },\n\t _patchFunctionToString: function _patchFunctionToString() {\n\t var self = this;\n\t self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native\n\n\t Function.prototype.toString = function () {\n\t if (typeof this === 'function' && this.__raven__) {\n\t return self._originalFunctionToString.apply(this.__orig__, arguments);\n\t }\n\n\t return self._originalFunctionToString.apply(this, arguments);\n\t };\n\t },\n\t _unpatchFunctionToString: function _unpatchFunctionToString() {\n\t if (this._originalFunctionToString) {\n\t // eslint-disable-next-line no-extend-native\n\t Function.prototype.toString = this._originalFunctionToString;\n\t }\n\t },\n\n\t /**\n\t * Wrap timer functions and event targets to catch errors and provide\n\t * better metadata.\n\t */\n\t _instrumentTryCatch: function _instrumentTryCatch() {\n\t var self = this;\n\t var wrappedBuiltIns = self._wrappedBuiltIns;\n\n\t function wrapTimeFn(orig) {\n\t return function (fn, t) {\n\t // preserve arity\n\t // Make a copy of the arguments to prevent deoptimization\n\t // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t var args = new Array(arguments.length);\n\n\t for (var i = 0; i < args.length; ++i) {\n\t args[i] = arguments[i];\n\t }\n\n\t var originalCallback = args[0];\n\n\t if (isFunction$1(originalCallback)) {\n\t args[0] = self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: orig.name || '<anonymous>'\n\t }\n\t }\n\t }, originalCallback);\n\t } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n\t // also supports only two arguments and doesn't care what this is, so we\n\t // can just call the original function directly.\n\n\n\t if (orig.apply) {\n\t return orig.apply(this, args);\n\t } else {\n\t return orig(args[0], args[1]);\n\t }\n\t };\n\t }\n\n\t var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n\t function wrapEventTarget(global) {\n\t var proto = _window$2[global] && _window$2[global].prototype;\n\n\t if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n\t fill$1(proto, 'addEventListener', function (orig) {\n\t return function (evtName, fn, capture, secure) {\n\t // preserve arity\n\t try {\n\t if (fn && fn.handleEvent) {\n\t fn.handleEvent = self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t target: global,\n\t function: 'handleEvent',\n\t handler: fn && fn.name || '<anonymous>'\n\t }\n\t }\n\t }, fn.handleEvent);\n\t }\n\t } catch (err) {} // can sometimes get 'Permission denied to access property \"handle Event'\n\t // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n\t // so that we don't have more than one wrapper function\n\n\n\t var before, clickHandler, keypressHandler;\n\n\t if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) {\n\t // NOTE: generating multiple handlers per addEventListener invocation, should\n\t // revisit and verify we can just use one (almost certainly)\n\t clickHandler = self._breadcrumbEventHandler('click');\n\t keypressHandler = self._keypressEventHandler();\n\n\t before = function before(evt) {\n\t // need to intercept every DOM event in `before` argument, in case that\n\t // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n\t // see #724\n\t if (!evt) return;\n\t var eventType;\n\n\t try {\n\t eventType = evt.type;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\n\t if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt);\n\t };\n\t }\n\n\t return orig.call(this, evtName, self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t target: global,\n\t function: 'addEventListener',\n\t handler: fn && fn.name || '<anonymous>'\n\t }\n\t }\n\t }, fn, before), capture, secure);\n\t };\n\t }, wrappedBuiltIns);\n\t fill$1(proto, 'removeEventListener', function (orig) {\n\t return function (evt, fn, capture, secure) {\n\t try {\n\t fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n\t } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n\t }\n\n\t return orig.call(this, evt, fn, capture, secure);\n\t };\n\t }, wrappedBuiltIns);\n\t }\n\t }\n\n\t fill$1(_window$2, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n\t fill$1(_window$2, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n\n\t if (_window$2.requestAnimationFrame) {\n\t fill$1(_window$2, 'requestAnimationFrame', function (orig) {\n\t return function (cb) {\n\t return orig(self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: 'requestAnimationFrame',\n\t handler: orig && orig.name || '<anonymous>'\n\t }\n\t }\n\t }, cb));\n\t };\n\t }, wrappedBuiltIns);\n\t } // event targets borrowed from bugsnag-js:\n\t // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n\n\n\t var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n\n\t for (var i = 0; i < eventTargets.length; i++) {\n\t wrapEventTarget(eventTargets[i]);\n\t }\n\t },\n\n\t /**\n\t * Instrument browser built-ins w/ breadcrumb capturing\n\t * - XMLHttpRequests\n\t * - DOM interactions (click/typing)\n\t * - window.location changes\n\t * - console\n\t *\n\t * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n\t */\n\t _instrumentBreadcrumbs: function _instrumentBreadcrumbs() {\n\t var self = this;\n\t var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\t var wrappedBuiltIns = self._wrappedBuiltIns;\n\n\t function wrapProp(prop, xhr) {\n\t if (prop in xhr && isFunction$1(xhr[prop])) {\n\t fill$1(xhr, prop, function (orig) {\n\t return self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: prop,\n\t handler: orig && orig.name || '<anonymous>'\n\t }\n\t }\n\t }, orig);\n\t }); // intentionally don't track filled methods on XHR instances\n\t }\n\t }\n\n\t if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$2) {\n\t var xhrproto = _window$2.XMLHttpRequest && _window$2.XMLHttpRequest.prototype;\n\t fill$1(xhrproto, 'open', function (origOpen) {\n\t return function (method, url) {\n\t // preserve arity\n\t // if Sentry key appears in URL, don't capture\n\t if (isString$1(url) && url.indexOf(self._globalKey) === -1) {\n\t this.__raven_xhr = {\n\t method: method,\n\t url: url,\n\t status_code: null\n\t };\n\t }\n\n\t return origOpen.apply(this, arguments);\n\t };\n\t }, wrappedBuiltIns);\n\t fill$1(xhrproto, 'send', function (origSend) {\n\t return function () {\n\t // preserve arity\n\t var xhr = this;\n\n\t function onreadystatechangeHandler() {\n\t if (xhr.__raven_xhr && xhr.readyState === 4) {\n\t try {\n\t // touching statusCode in some platforms throws\n\t // an exception\n\t xhr.__raven_xhr.status_code = xhr.status;\n\t } catch (e) {\n\t /* do nothing */\n\t }\n\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'xhr',\n\t data: xhr.__raven_xhr\n\t });\n\t }\n\t }\n\n\t var props = ['onload', 'onerror', 'onprogress'];\n\n\t for (var j = 0; j < props.length; j++) {\n\t wrapProp(props[j], xhr);\n\t }\n\n\t if ('onreadystatechange' in xhr && isFunction$1(xhr.onreadystatechange)) {\n\t fill$1(xhr, 'onreadystatechange', function (orig) {\n\t return self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: 'onreadystatechange',\n\t handler: orig && orig.name || '<anonymous>'\n\t }\n\t }\n\t }, orig, onreadystatechangeHandler);\n\t }\n\t /* intentionally don't track this instrumentation */\n\t );\n\t } else {\n\t // if onreadystatechange wasn't actually set by the page on this xhr, we\n\t // are free to set our own and capture the breadcrumb\n\t xhr.onreadystatechange = onreadystatechangeHandler;\n\t }\n\n\t return origSend.apply(this, arguments);\n\t };\n\t }, wrappedBuiltIns);\n\t }\n\n\t if (autoBreadcrumbs.xhr && supportsFetch$1()) {\n\t fill$1(_window$2, 'fetch', function (origFetch) {\n\t return function () {\n\t // preserve arity\n\t // Make a copy of the arguments to prevent deoptimization\n\t // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t var args = new Array(arguments.length);\n\n\t for (var i = 0; i < args.length; ++i) {\n\t args[i] = arguments[i];\n\t }\n\n\t var fetchInput = args[0];\n\t var method = 'GET';\n\t var url;\n\n\t if (typeof fetchInput === 'string') {\n\t url = fetchInput;\n\t } else if ('Request' in _window$2 && fetchInput instanceof _window$2.Request) {\n\t url = fetchInput.url;\n\n\t if (fetchInput.method) {\n\t method = fetchInput.method;\n\t }\n\t } else {\n\t url = '' + fetchInput;\n\t } // if Sentry key appears in URL, don't capture, as it's our own request\n\n\n\t if (url.indexOf(self._globalKey) !== -1) {\n\t return origFetch.apply(this, args);\n\t }\n\n\t if (args[1] && args[1].method) {\n\t method = args[1].method;\n\t }\n\n\t var fetchData = {\n\t method: method,\n\t url: url,\n\t status_code: null\n\t };\n\t return origFetch.apply(this, args).then(function (response) {\n\t fetchData.status_code = response.status;\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'fetch',\n\t data: fetchData\n\t });\n\t return response;\n\t })['catch'](function (err) {\n\t // if there is an error performing the request\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'fetch',\n\t data: fetchData,\n\t level: 'error'\n\t });\n\t throw err;\n\t });\n\t };\n\t }, wrappedBuiltIns);\n\t } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n\t // to the document. Do this before we instrument addEventListener.\n\n\n\t if (autoBreadcrumbs.dom && this._hasDocument) {\n\t if (_document.addEventListener) {\n\t _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n\n\t _document.addEventListener('keypress', self._keypressEventHandler(), false);\n\t } else if (_document.attachEvent) {\n\t // IE8 Compatibility\n\t _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n\n\t _document.attachEvent('onkeypress', self._keypressEventHandler());\n\t }\n\t } // record navigation (URL) changes\n\t // NOTE: in Chrome App environment, touching history.pushState, *even inside\n\t // a try/catch block*, will cause Chrome to output an error to console.error\n\t // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n\n\n\t var chrome = _window$2.chrome;\n\t var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n\t var hasPushAndReplaceState = !isChromePackagedApp && _window$2.history && _window$2.history.pushState && _window$2.history.replaceState;\n\n\t if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n\t // TODO: remove onpopstate handler on uninstall()\n\t var oldOnPopState = _window$2.onpopstate;\n\n\t _window$2.onpopstate = function () {\n\t var currentHref = self._location.href;\n\n\t self._captureUrlChange(self._lastHref, currentHref);\n\n\t if (oldOnPopState) {\n\t return oldOnPopState.apply(this, arguments);\n\t }\n\t };\n\n\t var historyReplacementFunction = function historyReplacementFunction(origHistFunction) {\n\t // note history.pushState.length is 0; intentionally not declaring\n\t // params to preserve 0 arity\n\t return function ()\n\t /* state, title, url */\n\t {\n\t var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional\n\n\t if (url) {\n\t // coerce to string (this is what pushState does)\n\t self._captureUrlChange(self._lastHref, url + '');\n\t }\n\n\t return origHistFunction.apply(this, arguments);\n\t };\n\t };\n\n\t fill$1(_window$2.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n\t fill$1(_window$2.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n\t }\n\n\t if (autoBreadcrumbs.console && 'console' in _window$2 && console.log) {\n\t // console\n\t var consoleMethodCallback = function consoleMethodCallback(msg, data) {\n\t self.captureBreadcrumb({\n\t message: msg,\n\t level: data.level,\n\t category: 'console'\n\t });\n\t };\n\n\t each$1(['debug', 'info', 'warn', 'error', 'log'], function (_, level) {\n\t wrapConsoleMethod(console, level, consoleMethodCallback);\n\t });\n\t }\n\t },\n\t _restoreBuiltIns: function _restoreBuiltIns() {\n\t // restore any wrapped builtins\n\t var builtin;\n\n\t while (this._wrappedBuiltIns.length) {\n\t builtin = this._wrappedBuiltIns.shift();\n\t var obj = builtin[0],\n\t name = builtin[1],\n\t orig = builtin[2];\n\t obj[name] = orig;\n\t }\n\t },\n\t _restoreConsole: function _restoreConsole() {\n\t // eslint-disable-next-line guard-for-in\n\t for (var method in this._originalConsoleMethods) {\n\t this._originalConsole[method] = this._originalConsoleMethods[method];\n\t }\n\t },\n\t _drainPlugins: function _drainPlugins() {\n\t var self = this; // FIX ME TODO\n\n\t each$1(this._plugins, function (_, plugin) {\n\t var installer = plugin[0];\n\t var args = plugin[1];\n\t installer.apply(self, [self].concat(args));\n\t });\n\t },\n\t _parseDSN: function _parseDSN(str) {\n\t var m = dsnPattern.exec(str),\n\t dsn = {},\n\t i = 7;\n\n\t try {\n\t while (i--) {\n\t dsn[dsnKeys[i]] = m[i] || '';\n\t }\n\t } catch (e) {\n\t throw new configError('Invalid DSN: ' + str);\n\t }\n\n\t if (dsn.pass && !this._globalOptions.allowSecretKey) {\n\t throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key');\n\t }\n\n\t return dsn;\n\t },\n\t _getGlobalServer: function _getGlobalServer(uri) {\n\t // assemble the endpoint from the uri pieces\n\t var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n\t if (uri.protocol) {\n\t globalServer = uri.protocol + ':' + globalServer;\n\t }\n\n\t return globalServer;\n\t },\n\t _handleOnErrorStackInfo: function _handleOnErrorStackInfo(stackInfo, options) {\n\t options = options || {};\n\t options.mechanism = options.mechanism || {\n\t type: 'onerror',\n\t handled: false\n\t }; // if we are intentionally ignoring errors via onerror, bail out\n\n\t if (!this._ignoreOnError) {\n\t this._handleStackInfo(stackInfo, options);\n\t }\n\t },\n\t _handleStackInfo: function _handleStackInfo(stackInfo, options) {\n\t var frames = this._prepareFrames(stackInfo, options);\n\n\t this._triggerEvent('handle', {\n\t stackInfo: stackInfo,\n\t options: options\n\t });\n\n\t this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options);\n\t },\n\t _prepareFrames: function _prepareFrames(stackInfo, options) {\n\t var self = this;\n\t var frames = [];\n\n\t if (stackInfo.stack && stackInfo.stack.length) {\n\t each$1(stackInfo.stack, function (i, stack) {\n\t var frame = self._normalizeFrame(stack, stackInfo.url);\n\n\t if (frame) {\n\t frames.push(frame);\n\t }\n\t }); // e.g. frames captured via captureMessage throw\n\n\t if (options && options.trimHeadFrames) {\n\t for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n\t frames[j].in_app = false;\n\t }\n\t }\n\t }\n\n\t frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n\t return frames;\n\t },\n\t _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) {\n\t // normalize the frames data\n\t var normalized = {\n\t filename: frame.url,\n\t lineno: frame.line,\n\t colno: frame.column,\n\t function: frame.func || '?'\n\t }; // Case when we don't have any information about the error\n\t // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n\t // Generating synthetic error doesn't add any value here\n\t //\n\t // We should probably somehow let a user know that they should fix their code\n\n\t if (!frame.url) {\n\t normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n\t }\n\n\t normalized.in_app = !( // determine if an exception came from outside of our app\n\t // first we check the global includePaths list.\n\t !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit\n\t /(Raven|TraceKit)\\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js\n\t /raven\\.(min\\.)?js$/.test(normalized.filename));\n\t return normalized;\n\t },\n\t _processException: function _processException(type, message, fileurl, lineno, frames, options) {\n\t var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n\n\t if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) {\n\t return;\n\t }\n\n\t var stacktrace;\n\n\t if (frames && frames.length) {\n\t fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest\n\t // and JS sends them as newest to oldest\n\n\t frames.reverse();\n\t stacktrace = {\n\t frames: frames\n\t };\n\t } else if (fileurl) {\n\t stacktrace = {\n\t frames: [{\n\t filename: fileurl,\n\t lineno: lineno,\n\t in_app: true\n\t }]\n\t };\n\t }\n\n\t if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) {\n\t return;\n\t }\n\n\t if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) {\n\t return;\n\t }\n\n\t var data = objectMerge$1({\n\t // sentry.interfaces.Exception\n\t exception: {\n\t values: [{\n\t type: type,\n\t value: message,\n\t stacktrace: stacktrace\n\t }]\n\t },\n\t transaction: fileurl\n\t }, options);\n\t var ex = data.exception.values[0];\n\n\t if (ex.type == null && ex.value === '') {\n\t ex.value = 'Unrecoverable error caught';\n\t } // Move mechanism from options to exception interface\n\t // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n\t // too much\n\n\n\t if (!data.exception.mechanism && data.mechanism) {\n\t data.exception.mechanism = data.mechanism;\n\t delete data.mechanism;\n\t }\n\n\t data.exception.mechanism = objectMerge$1({\n\t type: 'generic',\n\t handled: true\n\t }, data.exception.mechanism || {}); // Fire away!\n\n\t this._send(data);\n\t },\n\t _trimPacket: function _trimPacket(data) {\n\t // For now, we only want to truncate the two different messages\n\t // but this could/should be expanded to just trim everything\n\t var max = this._globalOptions.maxMessageLength;\n\n\t if (data.message) {\n\t data.message = truncate$1(data.message, max);\n\t }\n\n\t if (data.exception) {\n\t var exception = data.exception.values[0];\n\t exception.value = truncate$1(exception.value, max);\n\t }\n\n\t var request = data.request;\n\n\t if (request) {\n\t if (request.url) {\n\t request.url = truncate$1(request.url, this._globalOptions.maxUrlLength);\n\t }\n\n\t if (request.Referer) {\n\t request.Referer = truncate$1(request.Referer, this._globalOptions.maxUrlLength);\n\t }\n\t }\n\n\t if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs);\n\t return data;\n\t },\n\n\t /**\n\t * Truncate breadcrumb values (right now just URLs)\n\t */\n\t _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) {\n\t // known breadcrumb properties with urls\n\t // TODO: also consider arbitrary prop values that start with (https?)?://\n\t var urlProps = ['to', 'from', 'url'],\n\t urlProp,\n\t crumb,\n\t data;\n\n\t for (var i = 0; i < breadcrumbs.values.length; ++i) {\n\t crumb = breadcrumbs.values[i];\n\t if (!crumb.hasOwnProperty('data') || !isObject$2(crumb.data) || objectFrozen$1(crumb.data)) continue;\n\t data = objectMerge$1({}, crumb.data);\n\n\t for (var j = 0; j < urlProps.length; ++j) {\n\t urlProp = urlProps[j];\n\n\t if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n\t data[urlProp] = truncate$1(data[urlProp], this._globalOptions.maxUrlLength);\n\t }\n\t }\n\n\t breadcrumbs.values[i].data = data;\n\t }\n\t },\n\t _getHttpData: function _getHttpData() {\n\t if (!this._hasNavigator && !this._hasDocument) return;\n\t var httpData = {};\n\n\t if (this._hasNavigator && _navigator.userAgent) {\n\t httpData.headers = {\n\t 'User-Agent': _navigator.userAgent\n\t };\n\t } // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n\n\n\t if (_window$2.location && _window$2.location.href) {\n\t httpData.url = _window$2.location.href;\n\t }\n\n\t if (this._hasDocument && _document.referrer) {\n\t if (!httpData.headers) httpData.headers = {};\n\t httpData.headers.Referer = _document.referrer;\n\t }\n\n\t return httpData;\n\t },\n\t _resetBackoff: function _resetBackoff() {\n\t this._backoffDuration = 0;\n\t this._backoffStart = null;\n\t },\n\t _shouldBackoff: function _shouldBackoff() {\n\t return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n\t },\n\n\t /**\n\t * Returns true if the in-process data payload matches the signature\n\t * of the previously-sent data\n\t *\n\t * NOTE: This has to be done at this level because TraceKit can generate\n\t * data from window.onerror WITHOUT an exception object (IE8, IE9,\n\t * other old browsers). This can take the form of an \"exception\"\n\t * data object with a single frame (derived from the onerror args).\n\t */\n\t _isRepeatData: function _isRepeatData(current) {\n\t var last = this._lastData;\n\t if (!last || current.message !== last.message || // defined for captureMessage\n\t current.transaction !== last.transaction // defined for captureException/onerror\n\t ) return false; // Stacktrace interface (i.e. from captureMessage)\n\n\t if (current.stacktrace || last.stacktrace) {\n\t return isSameStacktrace$1(current.stacktrace, last.stacktrace);\n\t } else if (current.exception || last.exception) {\n\t // Exception interface (i.e. from captureException/onerror)\n\t return isSameException$1(current.exception, last.exception);\n\t } else if (current.fingerprint || last.fingerprint) {\n\t return Boolean(current.fingerprint && last.fingerprint) && JSON.stringify(current.fingerprint) === JSON.stringify(last.fingerprint);\n\t }\n\n\t return true;\n\t },\n\t _setBackoffState: function _setBackoffState(request) {\n\t // If we are already in a backoff state, don't change anything\n\t if (this._shouldBackoff()) {\n\t return;\n\t }\n\n\t var status = request.status; // 400 - project_id doesn't exist or some other fatal\n\t // 401 - invalid/revoked dsn\n\t // 429 - too many requests\n\n\t if (!(status === 400 || status === 401 || status === 429)) return;\n\t var retry;\n\n\t try {\n\t // If Retry-After is not in Access-Control-Expose-Headers, most\n\t // browsers will throw an exception trying to access it\n\t if (supportsFetch$1()) {\n\t retry = request.headers.get('Retry-After');\n\t } else {\n\t retry = request.getResponseHeader('Retry-After');\n\t } // Retry-After is returned in seconds\n\n\n\t retry = parseInt(retry, 10) * 1000;\n\t } catch (e) {\n\t /* eslint no-empty:0 */\n\t }\n\n\t this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it\n\t retry : // Otherwise, double the last backoff duration (starts at 1 sec)\n\t this._backoffDuration * 2 || 1000;\n\t this._backoffStart = now();\n\t },\n\t _send: function _send(data) {\n\t var globalOptions = this._globalOptions;\n\n\t var baseData = {\n\t project: this._globalProject,\n\t logger: globalOptions.logger,\n\t platform: 'javascript'\n\t },\n\t httpData = this._getHttpData();\n\n\t if (httpData) {\n\t baseData.request = httpData;\n\t } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n\n\n\t if (data.trimHeadFrames) delete data.trimHeadFrames;\n\t data = objectMerge$1(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n\n\t data.tags = objectMerge$1(objectMerge$1({}, this._globalContext.tags), data.tags);\n\t data.extra = objectMerge$1(objectMerge$1({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra\n\n\t data.extra['session:duration'] = now() - this._startTime;\n\n\t if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n\t // intentionally make shallow copy so that additions\n\t // to breadcrumbs aren't accidentally sent in this request\n\t data.breadcrumbs = {\n\t values: [].slice.call(this._breadcrumbs, 0)\n\t };\n\t }\n\n\t if (this._globalContext.user) {\n\t // sentry.interfaces.User\n\t data.user = this._globalContext.user;\n\t } // Include the environment if it's defined in globalOptions\n\n\n\t if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions\n\n\t if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions\n\n\t if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\t data = this._sanitizeData(data); // Cleanup empty properties before sending them to the server\n\n\t Object.keys(data).forEach(function (key) {\n\t if (data[key] == null || data[key] === '' || isEmptyObject$1(data[key])) {\n\t delete data[key];\n\t }\n\t });\n\n\t if (isFunction$1(globalOptions.dataCallback)) {\n\t data = globalOptions.dataCallback(data) || data;\n\t } // Why??????????\n\n\n\t if (!data || isEmptyObject$1(data)) {\n\t return;\n\t } // Check if the request should be filtered or not\n\n\n\t if (isFunction$1(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) {\n\t return;\n\t } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n\t // so drop requests until \"cool-off\" period has elapsed.\n\n\n\t if (this._shouldBackoff()) {\n\t this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n\n\t return;\n\t }\n\n\t if (typeof globalOptions.sampleRate === 'number') {\n\t if (Math.random() < globalOptions.sampleRate) {\n\t this._sendProcessedPayload(data);\n\t }\n\t } else {\n\t this._sendProcessedPayload(data);\n\t }\n\t },\n\t _sanitizeData: function _sanitizeData(data) {\n\t return sanitize$1(data, this._globalOptions.sanitizeKeys);\n\t },\n\t _getUuid: function _getUuid() {\n\t return uuid4$1();\n\t },\n\t _sendProcessedPayload: function _sendProcessedPayload(data, callback) {\n\t var self = this;\n\t var globalOptions = this._globalOptions;\n\t if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values\n\n\t data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n\t // but this would require copying an un-truncated copy of the data packet, which can be\n\t // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n\n\t if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n\t this._logDebug('warn', 'Raven dropped repeat event: ', data);\n\n\t return;\n\t } // Send along an event_id if not explicitly passed.\n\t // This event_id can be used to reference the error within Sentry itself.\n\t // Set lastEventId after we know the error should actually be sent\n\n\n\t this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim\n\n\t this._lastData = data;\n\n\t this._logDebug('debug', 'Raven about to send:', data);\n\n\t var auth = {\n\t sentry_version: '7',\n\t sentry_client: 'raven-js/' + this.VERSION,\n\t sentry_key: this._globalKey\n\t };\n\n\t if (this._globalSecret) {\n\t auth.sentry_secret = this._globalSecret;\n\t }\n\n\t var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n\n\t if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) {\n\t this.captureBreadcrumb({\n\t category: 'sentry',\n\t message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message,\n\t event_id: data.event_id,\n\t level: data.level || 'error' // presume error unless specified\n\n\t });\n\t }\n\n\t var url = this._globalEndpoint;\n\n\t (globalOptions.transport || this._makeRequest).call(this, {\n\t url: url,\n\t auth: auth,\n\t data: data,\n\t options: globalOptions,\n\t onSuccess: function success() {\n\t self._resetBackoff();\n\n\t self._triggerEvent('success', {\n\t data: data,\n\t src: url\n\t });\n\n\t callback && callback();\n\t },\n\t onError: function failure(error) {\n\t self._logDebug('error', 'Raven transport failed to send: ', error);\n\n\t if (error.request) {\n\t self._setBackoffState(error.request);\n\t }\n\n\t self._triggerEvent('failure', {\n\t data: data,\n\t src: url\n\t });\n\n\t error = error || new Error('Raven send failed (no additional details provided)');\n\t callback && callback(error);\n\t }\n\t });\n\t },\n\t _makeRequest: function _makeRequest(opts) {\n\t // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n\t var url = opts.url + '?' + urlencode$1(opts.auth);\n\t var evaluatedHeaders = null;\n\t var evaluatedFetchParameters = {};\n\n\t if (opts.options.headers) {\n\t evaluatedHeaders = this._evaluateHash(opts.options.headers);\n\t }\n\n\t if (opts.options.fetchParameters) {\n\t evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n\t }\n\n\t if (supportsFetch$1()) {\n\t evaluatedFetchParameters.body = stringify_1(opts.data);\n\t var defaultFetchOptions = objectMerge$1({}, this._fetchDefaults);\n\t var fetchOptions = objectMerge$1(defaultFetchOptions, evaluatedFetchParameters);\n\n\t if (evaluatedHeaders) {\n\t fetchOptions.headers = evaluatedHeaders;\n\t }\n\n\t return _window$2.fetch(url, fetchOptions).then(function (response) {\n\t if (response.ok) {\n\t opts.onSuccess && opts.onSuccess();\n\t } else {\n\t var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface\n\t // and not add more redundant checks in setBackoffState method\n\n\t error.request = response;\n\t opts.onError && opts.onError(error);\n\t }\n\t })['catch'](function () {\n\t opts.onError && opts.onError(new Error('Sentry error code: network unavailable'));\n\t });\n\t }\n\n\t var request = _window$2.XMLHttpRequest && new _window$2.XMLHttpRequest();\n\t if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck\n\n\t var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\t if (!hasCORS) return;\n\n\t if ('withCredentials' in request) {\n\t request.onreadystatechange = function () {\n\t if (request.readyState !== 4) {\n\t return;\n\t } else if (request.status === 200) {\n\t opts.onSuccess && opts.onSuccess();\n\t } else if (opts.onError) {\n\t var err = new Error('Sentry error code: ' + request.status);\n\t err.request = request;\n\t opts.onError(err);\n\t }\n\t };\n\t } else {\n\t request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa),\n\t // so always use protocol relative\n\n\t url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest\n\n\t if (opts.onSuccess) {\n\t request.onload = opts.onSuccess;\n\t }\n\n\t if (opts.onError) {\n\t request.onerror = function () {\n\t var err = new Error('Sentry error code: XDomainRequest');\n\t err.request = request;\n\t opts.onError(err);\n\t };\n\t }\n\t }\n\n\t request.open('POST', url);\n\n\t if (evaluatedHeaders) {\n\t each$1(evaluatedHeaders, function (key, value) {\n\t request.setRequestHeader(key, value);\n\t });\n\t }\n\n\t request.send(stringify_1(opts.data));\n\t },\n\t _evaluateHash: function _evaluateHash(hash) {\n\t var evaluated = {};\n\n\t for (var key in hash) {\n\t if (hash.hasOwnProperty(key)) {\n\t var value = hash[key];\n\t evaluated[key] = typeof value === 'function' ? value() : value;\n\t }\n\t }\n\n\t return evaluated;\n\t },\n\t _logDebug: function _logDebug(level) {\n\t // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n\t if (this._originalConsoleMethods[level] && (this.debug || this._globalOptions.debug)) {\n\t // In IE<10 console methods do not have their own 'apply' method\n\t Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1));\n\t }\n\t },\n\t _mergeContext: function _mergeContext(key, context) {\n\t if (isUndefined$1(context)) {\n\t delete this._globalContext[key];\n\t } else {\n\t this._globalContext[key] = objectMerge$1(this._globalContext[key] || {}, context);\n\t }\n\t }\n\t}; // Deprecations\n\n\tRaven.prototype.setUser = Raven.prototype.setUserContext;\n\tRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\tvar raven = Raven;\n\n\t/**\n\t * Enforces a single instance of the Raven client, and the\n\t * main entry point for Raven. If you are a consumer of the\n\t * Raven library, you SHOULD load this file (vs raven.js).\n\t **/\n\t// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\n\tvar _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\tvar _Raven = _window$3.Raven;\n\tvar Raven$1 = new raven();\n\t/*\n\t * Allow multiple versions of Raven to be installed.\n\t * Strip Raven from the global context and returns the instance.\n\t *\n\t * @return {Raven}\n\t */\n\n\tRaven$1.noConflict = function () {\n\t _window$3.Raven = _Raven;\n\t return Raven$1;\n\t};\n\n\tRaven$1.afterLoad();\n\tvar singleton = Raven$1;\n\t/**\n\t * DISCLAIMER:\n\t *\n\t * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n\t * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n\t * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n\t *\n\t * It's called `Client' to be in-line with Raven Node implementation.\n\t *\n\t * HOWTO:\n\t *\n\t * import Raven from 'raven-js';\n\t *\n\t * const someAppReporter = new Raven.Client();\n\t * const someOtherAppReporter = new Raven.Client();\n\t *\n\t * someAppReporter.config('__DSN__', {\n\t * ...config goes here\n\t * });\n\t *\n\t * someOtherAppReporter.config('__OTHER_DSN__', {\n\t * ...config goes here\n\t * });\n\t *\n\t * someAppReporter.captureMessage(...);\n\t * someAppReporter.captureException(...);\n\t * someAppReporter.captureBreadcrumb(...);\n\t *\n\t * someOtherAppReporter.captureMessage(...);\n\t * someOtherAppReporter.captureException(...);\n\t * someOtherAppReporter.captureBreadcrumb(...);\n\t *\n\t * It should \"just work\".\n\t */\n\n\tvar Client = raven;\n\tsingleton.Client = Client;\n\n\tvar internalFind = arrayMethods(5);\n\tvar FIND = 'find';\n\tvar SKIPS_HOLES = true;\n\n\t// Shouldn't skip holes\n\tif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n\t// `Array.prototype.find` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t_export({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n\t find: function find(callbackfn /* , that = undefined */) {\n\t return internalFind(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables(FIND);\n\n\t// a string of all valid unicode whitespaces\n\t// eslint-disable-next-line max-len\n\tvar whitespaces = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\tvar whitespace = '[' + whitespaces + ']';\n\tvar ltrim = RegExp('^' + whitespace + whitespace + '*');\n\tvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n\t// 1 -> String#trimStart\n\t// 2 -> String#trimEnd\n\t// 3 -> String#trim\n\tvar stringTrim = function (string, TYPE) {\n\t string = String(requireObjectCoercible(string));\n\t if (TYPE & 1) string = string.replace(ltrim, '');\n\t if (TYPE & 2) string = string.replace(rtrim, '');\n\t return string;\n\t};\n\n\tvar getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;\n\tvar getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f;\n\tvar defineProperty$6 = objectDefineProperty.f;\n\n\n\tvar NUMBER = 'Number';\n\tvar NativeNumber = global_1[NUMBER];\n\tvar NumberPrototype = NativeNumber.prototype;\n\n\t// Opera ~12 has broken Object#toString\n\tvar BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER;\n\tvar NATIVE_TRIM = 'trim' in String.prototype;\n\n\t// `ToNumber` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tonumber\n\tvar toNumber = function (argument) {\n\t var it = toPrimitive(argument, false);\n\t var first, third, radix, maxCode, digits, length, i, code;\n\t if (typeof it == 'string' && it.length > 2) {\n\t it = NATIVE_TRIM ? it.trim() : stringTrim(it, 3);\n\t first = it.charCodeAt(0);\n\t if (first === 43 || first === 45) {\n\t third = it.charCodeAt(2);\n\t if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n\t } else if (first === 48) {\n\t switch (it.charCodeAt(1)) {\n\t case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n\t case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n\t default: return +it;\n\t }\n\t digits = it.slice(2);\n\t length = digits.length;\n\t for (i = 0; i < length; i++) {\n\t code = digits.charCodeAt(i);\n\t // parseInt parses a string to a first unavailable symbol\n\t // but ToNumber should return NaN if a string contains unavailable symbols\n\t if (code < 48 || code > maxCode) return NaN;\n\t } return parseInt(digits, radix);\n\t }\n\t } return +it;\n\t};\n\n\t// `Number` constructor\n\t// https://tc39.github.io/ecma262/#sec-number-constructor\n\tif (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n\t var NumberWrapper = function Number(value) {\n\t var it = arguments.length < 1 ? 0 : value;\n\t var that = this;\n\t return that instanceof NumberWrapper\n\t // check on 1..constructor(foo) case\n\t && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(that); }) : classofRaw(that) != NUMBER)\n\t ? inheritIfRequired(new NativeNumber(toNumber(it)), that, NumberWrapper) : toNumber(it);\n\t };\n\t for (var keys$2 = descriptors ? getOwnPropertyNames$1(NativeNumber) : (\n\t // ES3:\n\t 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n\t // ES2015 (in case, if modules with ES2015 Number statics required before):\n\t 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n\t 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n\t ).split(','), j = 0, key; keys$2.length > j; j++) {\n\t if (has(NativeNumber, key = keys$2[j]) && !has(NumberWrapper, key)) {\n\t defineProperty$6(NumberWrapper, key, getOwnPropertyDescriptor$3(NativeNumber, key));\n\t }\n\t }\n\t NumberWrapper.prototype = NumberPrototype;\n\t NumberPrototype.constructor = NumberWrapper;\n\t redefine(global_1, NUMBER, NumberWrapper);\n\t}\n\n\t// `Number.isNaN` method\n\t// https://tc39.github.io/ecma262/#sec-number.isnan\n\t_export({ target: 'Number', stat: true }, {\n\t isNaN: function isNaN(number) {\n\t // eslint-disable-next-line no-self-compare\n\t return number != number;\n\t }\n\t});\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\t_export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, {\n\t assign: objectAssign\n\t});\n\n\tvar propertyIsEnumerable = objectPropertyIsEnumerable.f;\n\n\t// TO_ENTRIES: true -> Object.entries\n\t// TO_ENTRIES: false -> Object.values\n\tvar objectToArray = function (it, TO_ENTRIES) {\n\t var O = toIndexedObject(it);\n\t var keys = objectKeys(O);\n\t var length = keys.length;\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t while (length > i) {\n\t key = keys[i++];\n\t if (!descriptors || propertyIsEnumerable.call(O, key)) {\n\t result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n\t }\n\t }\n\t return result;\n\t};\n\n\t// `Object.entries` method\n\t// https://tc39.github.io/ecma262/#sec-object.entries\n\t_export({ target: 'Object', stat: true }, {\n\t entries: function entries(O) {\n\t return objectToArray(O, true);\n\t }\n\t});\n\n\tfunction _classCallCheck$1(e, t) {\n\t if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n\t}\n\n\tfunction _defineProperties$1(e, t) {\n\t for (var n = 0; n < t.length; n++) {\n\t var r = t[n];\n\t r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n\t }\n\t}\n\n\tfunction _createClass$1(e, t, n) {\n\t return t && _defineProperties$1(e.prototype, t), n && _defineProperties$1(e, n), e;\n\t}\n\n\tfunction _defineProperty$1(e, t, n) {\n\t return t in e ? Object.defineProperty(e, t, {\n\t value: n,\n\t enumerable: !0,\n\t configurable: !0,\n\t writable: !0\n\t }) : e[t] = n, e;\n\t}\n\n\tfunction _slicedToArray$1(e, t) {\n\t return _arrayWithHoles$1(e) || _iterableToArrayLimit$1(e, t) || _nonIterableRest$1();\n\t}\n\n\tfunction _arrayWithHoles$1(e) {\n\t if (Array.isArray(e)) return e;\n\t}\n\n\tfunction _iterableToArrayLimit$1(e, t) {\n\t var n = [],\n\t r = !0,\n\t o = !1,\n\t i = void 0;\n\n\t try {\n\t for (var s, a = e[Symbol.iterator](); !(r = (s = a.next()).done) && (n.push(s.value), !t || n.length !== t); r = !0) {\n\t ;\n\t }\n\t } catch (e) {\n\t o = !0, i = e;\n\t } finally {\n\t try {\n\t r || null == a.return || a.return();\n\t } finally {\n\t if (o) throw i;\n\t }\n\t }\n\n\t return n;\n\t}\n\n\tfunction _nonIterableRest$1() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t}\n\n\tvar getConstructor = function getConstructor(e) {\n\t return null != e ? e.constructor : null;\n\t},\n\t instanceOf = function instanceOf(e, t) {\n\t return !!(e && t && e instanceof t);\n\t},\n\t isNullOrUndefined = function isNullOrUndefined(e) {\n\t return null == e;\n\t},\n\t isObject$3 = function isObject(e) {\n\t return getConstructor(e) === Object;\n\t},\n\t isNumber = function isNumber(e) {\n\t return getConstructor(e) === Number && !Number.isNaN(e);\n\t},\n\t isString$2 = function isString(e) {\n\t return getConstructor(e) === String;\n\t},\n\t isBoolean = function isBoolean(e) {\n\t return getConstructor(e) === Boolean;\n\t},\n\t isFunction$2 = function isFunction(e) {\n\t return getConstructor(e) === Function;\n\t},\n\t isArray$3 = function isArray(e) {\n\t return Array.isArray(e);\n\t},\n\t isNodeList = function isNodeList(e) {\n\t return instanceOf(e, NodeList);\n\t},\n\t isElement = function isElement(e) {\n\t return instanceOf(e, Element);\n\t},\n\t isEvent = function isEvent(e) {\n\t return instanceOf(e, Event);\n\t},\n\t isEmpty = function isEmpty(e) {\n\t return isNullOrUndefined(e) || (isString$2(e) || isArray$3(e) || isNodeList(e)) && !e.length || isObject$3(e) && !Object.keys(e).length;\n\t},\n\t is = {\n\t nullOrUndefined: isNullOrUndefined,\n\t object: isObject$3,\n\t number: isNumber,\n\t string: isString$2,\n\t boolean: isBoolean,\n\t function: isFunction$2,\n\t array: isArray$3,\n\t nodeList: isNodeList,\n\t element: isElement,\n\t event: isEvent,\n\t empty: isEmpty\n\t},\n\t constants = {\n\t facebook: {\n\t domain: \"facebook.com\",\n\t url: function url(e) {\n\t return \"https://graph.facebook.com/?id=\".concat(e, \"&fields=og_object{engagement}\");\n\t },\n\t shareCount: function shareCount(e) {\n\t return e.og_object.engagement.count;\n\t },\n\t popup: {\n\t width: 640,\n\t height: 360\n\t }\n\t },\n\t twitter: {\n\t domain: \"twitter.com\",\n\t url: function url() {\n\t return null;\n\t },\n\t shareCount: function shareCount() {\n\t return null;\n\t },\n\t popup: {\n\t width: 640,\n\t height: 240\n\t }\n\t },\n\t pinterest: {\n\t domain: \"pinterest.com\",\n\t url: function url(e) {\n\t return \"https://widgets.pinterest.com/v1/urls/count.json?url=\".concat(e);\n\t },\n\t shareCount: function shareCount(e) {\n\t return e.count;\n\t },\n\t popup: {\n\t width: 830,\n\t height: 700\n\t }\n\t },\n\t github: {\n\t domain: \"github.com\",\n\t url: function url(e, t) {\n\t return \"https://api.github.com/repos/\".concat(e).concat(is.string(t) ? \"?access_token=\".concat(t) : \"\");\n\t },\n\t shareCount: function shareCount(e) {\n\t return e.data.stargazers_count;\n\t }\n\t },\n\t youtube: {\n\t domain: \"youtube.com\",\n\t url: function url(e, t) {\n\t return \"https://www.googleapis.com/youtube/v3/channels?part=statistics&id=\".concat(e, \"&key=\").concat(t);\n\t },\n\t shareCount: function shareCount(e) {\n\t if (!is.empty(e.error)) return null;\n\n\t var t = _slicedToArray$1(e.items, 1)[0];\n\n\t return is.empty(t) ? null : t.statistics.subscriberCount;\n\t }\n\t }\n\t},\n\t defaults = {\n\t debug: !1,\n\t wrapper: {\n\t className: \"shr\"\n\t },\n\t count: {\n\t className: \"shr__count\",\n\t displayZero: !1,\n\t format: !0,\n\t position: \"after\",\n\t increment: !0\n\t },\n\t tokens: {\n\t github: \"\",\n\t youtube: \"\"\n\t },\n\t storage: {\n\t enabled: !0,\n\t key: \"shr\",\n\t ttl: 3e5\n\t }\n\t};\n\n\tfunction getJSONP(e) {\n\t return new Promise(function (t, n) {\n\t var r = \"jsonp_callback_\".concat(Math.round(1e5 * Math.random())),\n\t o = document.createElement(\"script\");\n\t o.addEventListener(\"error\", function (e) {\n\t return n(e);\n\t }), window[r] = function (e) {\n\t delete window[r], document.body.removeChild(o), t(e);\n\t };\n\t var i = new URL(e);\n\t i.searchParams.set(\"callback\", r), o.setAttribute(\"src\", i.toString()), document.body.appendChild(o);\n\t });\n\t}\n\n\tvar noop = function noop() {},\n\t Console = function () {\n\t function e() {\n\t var t = !!(0 < arguments.length && void 0 !== arguments[0]) && arguments[0];\n\t _classCallCheck$1(this, e), this.enabled = window.console && t, this.enabled && this.log(\"Debugging enabled\");\n\t }\n\n\t return _createClass$1(e, [{\n\t key: \"log\",\n\t get: function get() {\n\t return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n\t }\n\t }, {\n\t key: \"warn\",\n\t get: function get() {\n\t return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n\t }\n\t }, {\n\t key: \"error\",\n\t get: function get() {\n\t return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n\t }\n\t }]), e;\n\t}();\n\n\tfunction matches(e, t) {\n\t return function () {\n\t return Array.from(document.querySelectorAll(t)).includes(this);\n\t }.call(e, t);\n\t}\n\n\tfunction wrap$1(e, t) {\n\t var n = e.length ? e : [e];\n\t Array.from(n).reverse().forEach(function (e, n) {\n\t var r = 0 < n ? t.cloneNode(!0) : t,\n\t o = e.parentNode,\n\t i = e.nextSibling;\n\t r.appendChild(e), i ? o.insertBefore(r, i) : o.appendChild(r);\n\t });\n\t}\n\n\tfunction setAttributes(e, t) {\n\t !is.element(e) || is.empty(t) || Object.entries(t).filter(function (e) {\n\t var t = _slicedToArray$1(e, 2)[1];\n\n\t return !is.nullOrUndefined(t);\n\t }).forEach(function (t) {\n\t var n = _slicedToArray$1(t, 2),\n\t r = n[0],\n\t o = n[1];\n\n\t return e.setAttribute(r, o);\n\t });\n\t}\n\n\tfunction createElement(e, t, n) {\n\t var r = document.createElement(e);\n\t return is.object(t) && setAttributes(r, t), is.string(n) && (r.innerText = n), r;\n\t}\n\n\tfunction formatNumber(e) {\n\t var t = /\\./.test(1.1.toLocaleString()) ? \".\" : \",\",\n\t n = new RegExp(\"\\\\\".concat(t, \"\\\\d+$\"));\n\t return Math.round(e).toLocaleString().replace(n, \"\");\n\t}\n\n\tfunction extend() {\n\t for (var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length, n = Array(1 < t ? t - 1 : 0), r = 1; r < t; r++) {\n\t n[r - 1] = arguments[r];\n\t }\n\n\t if (!n.length) return e;\n\t var o = n.shift();\n\t return is.object(o) ? (Object.keys(o).forEach(function (t) {\n\t is.object(o[t]) ? (!Object.keys(e).includes(t) && Object.assign(e, _defineProperty$1({}, t, {})), extend(e[t], o[t])) : Object.assign(e, _defineProperty$1({}, t, o[t]));\n\t }), extend.apply(void 0, [e].concat(n))) : e;\n\t}\n\n\tvar Storage = function () {\n\t function e(t, n) {\n\t var r = !(2 < arguments.length && void 0 !== arguments[2]) || arguments[2];\n\t _classCallCheck$1(this, e), this.enabled = r && e.supported, this.key = t, this.ttl = n;\n\t }\n\n\t return _createClass$1(e, [{\n\t key: \"get\",\n\t value: function value(t) {\n\t if (!e.supported || !this.enabled) return null;\n\t var n = window.localStorage.getItem(this.key);\n\t if (is.empty(n)) return null;\n\t var r = window.localStorage.getItem(\"\".concat(this.key, \"_ttl\"));\n\t if (is.empty(r) || r < Date.now()) return null;\n\t var o = JSON.parse(n);\n\t return is.string(t) && t.length ? o[t] : o;\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function value(t) {\n\t if (e.supported && this.enabled && is.object(t)) {\n\t var n = this.get();\n\t is.empty(n) && (n = {}), extend(n, t), window.localStorage.setItem(this.key, JSON.stringify(n)), window.localStorage.setItem(\"\".concat(this.key, \"_ttl\"), Date.now() + this.ttl);\n\t }\n\t }\n\t }], [{\n\t key: \"supported\",\n\t get: function get() {\n\t try {\n\t return \"localStorage\" in window && (window.localStorage.setItem(\"___test\", \"___test\"), window.localStorage.removeItem(\"___test\"), !0);\n\t } catch (e) {\n\t return !1;\n\t }\n\t }\n\t }]), e;\n\t}();\n\n\tfunction getDomain(e) {\n\t var t = new URL(e).hostname,\n\t n = t.split(\".\"),\n\t r = n.length;\n\t return 2 < r && (t = \"\".concat(n[r - 2], \".\").concat(n[r - 1]), 2 === n[r - 2].length && 2 === n[r - 1].length && (t = \"\".concat(n[r - 3], \".\").concat(t))), t;\n\t}\n\n\tvar Shr = function () {\n\t function e(t, n) {\n\t var r = this;\n\t _classCallCheck$1(this, e), this.elements = {\n\t count: null,\n\t trigger: null,\n\t popup: null\n\t }, is.element(t) ? this.elements.trigger = t : is.string(t) && (this.elements.trigger = document.querySelector(t)), is.element(this.elements.trigger) && is.empty(this.elements.trigger.shr) && (this.config = extend({}, defaults, n, {\n\t networks: constants\n\t }), this.console = new Console(this.config.debug), this.storage = new Storage(this.config.storage.key, this.config.storage.ttl, this.config.storage.enabled), this.getCount().then(function (e) {\n\t return r.updateDisplay(e);\n\t }).catch(function () {}), this.listeners(!0), this.elements.trigger.shr = this);\n\t }\n\n\t return _createClass$1(e, [{\n\t key: \"destroy\",\n\t value: function value() {\n\t this.listeners(!1);\n\t }\n\t }, {\n\t key: \"listeners\",\n\t value: function value() {\n\t var e = this,\n\t t = !!(0 < arguments.length && void 0 !== arguments[0]) && arguments[0] ? \"addEventListener\" : \"removeEventListener\";\n\t this.elements.trigger[t](\"click\", function (t) {\n\t return e.share(t);\n\t }, !1);\n\t }\n\t }, {\n\t key: \"share\",\n\t value: function value(e) {\n\t var t = this;\n\t this.openPopup(e);\n\t var n = this.config.count.increment;\n\t this.getCount().then(function (e) {\n\t return t.updateDisplay(e, n);\n\t }).catch(function () {});\n\t }\n\t }, {\n\t key: \"openPopup\",\n\t value: function value(e) {\n\t if (!is.empty(this.network) && this.networkConfig.popup) {\n\t is.event(e) && e.preventDefault();\n\t var t = this.networkConfig.popup,\n\t n = t.width,\n\t r = t.height,\n\t o = \"shr-popup--\".concat(this.network);\n\t if (this.popup && !this.popup.closed) this.popup.focus(), this.console.log(\"Popup re-focused.\");else {\n\t var i = void 0 === window.screenLeft ? window.screen.left : window.screenLeft,\n\t s = void 0 === window.screenTop ? window.screen.top : window.screenTop,\n\t a = window.screen.width / 2 - n / 2 + i,\n\t c = window.screen.height / 2 - r / 2 + s;\n\t this.popup = window.open(this.href, o, \"top=\".concat(c, \",left=\").concat(a, \",width=\").concat(n, \",height=\").concat(r)), !this.popup || this.popup.closed || !is.boolean(this.popup.closed) ? this.console.error(\"Popup blocked.\") : (this.popup.focus(), this.console.log(\"Popup opened.\"));\n\t }\n\t }\n\t }\n\t }, {\n\t key: \"getCount\",\n\t value: function value() {\n\t var e = this,\n\t t = !(0 < arguments.length && void 0 !== arguments[0]) || arguments[0];\n\t return new Promise(function (n, r) {\n\t var o = e.apiUrl;\n\t if (is.empty(o)) r(new Error(\"No URL available for \".concat(e.network, \".\")));else {\n\t if (t) {\n\t var i = e.storage.get(e.target);\n\n\t if (!is.empty(i) && Object.keys(i).includes(e.network)) {\n\t var s = i[e.network];\n\t return n(is.number(s) ? s : 0), void e.console.log(\"getCount for '\".concat(e.target, \"' for '\").concat(e.network, \"' resolved from cache.\"));\n\t }\n\t }\n\n\t getJSONP(o).then(function (t) {\n\t var r = 0,\n\t o = e.elements.trigger.getAttribute(\"data-shr-display\");\n\t r = is.empty(o) ? e.networkConfig.shareCount(t) : t[o], is.empty(r) ? r = 0 : (r = parseInt(r, 10), !is.number(r) && (r = 0)), e.storage.set(_defineProperty$1({}, e.target, _defineProperty$1({}, e.network, r))), n(r);\n\t }).catch(r);\n\t }\n\t });\n\t }\n\t }, {\n\t key: \"updateDisplay\",\n\t value: function value(e) {\n\t var t = !!(1 < arguments.length && void 0 !== arguments[1]) && arguments[1],\n\t n = this.config,\n\t r = n.count,\n\t o = n.wrapper,\n\t i = t ? e + 1 : e,\n\t s = r.position.toLowerCase();\n\n\t if (0 < i || r.displayZero) {\n\t var a = function a(e) {\n\t return Math.round(i / e * 10) / 10;\n\t },\n\t c = formatNumber(i);\n\n\t r.format && (1e6 < i ? c = \"\".concat(a(1e6), \"M\") : 1e3 < i && (c = \"\".concat(a(1e3), \"K\"))), is.element(this.elements.count) ? this.elements.count.textContent = c : (wrap$1(this.elements.trigger, createElement(\"span\", {\n\t class: o.className\n\t })), this.elements.count = createElement(\"span\", {\n\t class: \"\".concat(r.className, \" \").concat(r.className, \"--\").concat(s)\n\t }, c), this.elements.trigger.insertAdjacentElement(\"after\" === s ? \"afterend\" : \"beforebegin\", this.elements.count));\n\t }\n\t }\n\t }, {\n\t key: \"href\",\n\t get: function get() {\n\t return is.element(this.elements.trigger) ? this.elements.trigger.href : null;\n\t }\n\t }, {\n\t key: \"network\",\n\t get: function get() {\n\t var e = this;\n\t if (!is.element(this.elements.trigger)) return null;\n\t var t = this.config.networks;\n\t return Object.keys(t).find(function (n) {\n\t return getDomain(e.href) === t[n].domain;\n\t });\n\t }\n\t }, {\n\t key: \"networkConfig\",\n\t get: function get() {\n\t return is.empty(this.network) ? null : this.config.networks[this.network];\n\t }\n\t }, {\n\t key: \"target\",\n\t get: function get() {\n\t if (is.empty(this.network)) return null;\n\t var e = new URL(this.href);\n\n\t switch (this.network) {\n\t case \"facebook\":\n\t return e.searchParams.get(\"u\");\n\n\t case \"github\":\n\t return e.pathname.substring(1);\n\n\t case \"youtube\":\n\t return e.pathname.split(\"/\").pop();\n\n\t default:\n\t return e.searchParams.get(\"url\");\n\t }\n\t }\n\t }, {\n\t key: \"apiUrl\",\n\t get: function get() {\n\t if (is.empty(this.network)) return null;\n\t var e = this.config.tokens;\n\n\t switch (this.network) {\n\t case \"github\":\n\t return this.networkConfig.url(this.target, e.github);\n\n\t case \"youtube\":\n\t return this.networkConfig.url(this.target, e.youtube);\n\n\t default:\n\t return this.networkConfig.url(encodeURIComponent(this.target));\n\t }\n\t }\n\t }], [{\n\t key: \"setup\",\n\t value: function value(t) {\n\t var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},\n\t r = null;\n\t if (is.string(t) ? r = Array.from(document.querySelectorAll(t)) : is.element(t) ? r = [t] : is.nodeList(t) ? r = Array.from(t) : is.array(t) && (r = t.filter(is.element)), is.empty(r)) return null;\n\t var o = Object.assign({}, defaults, n);\n\t is.string(t) && o.watch && new MutationObserver(function (n) {\n\t Array.from(n).forEach(function (n) {\n\t Array.from(n.addedNodes).forEach(function (n) {\n\t is.element(n) && matches(n, t) && new e(n, o);\n\t });\n\t });\n\t }).observe(document.body, {\n\t childList: !0,\n\t subtree: !0\n\t });\n\t return r.map(function (t) {\n\t return new e(t, n);\n\t });\n\t }\n\t }]), e;\n\t}();\n\n\tvar check$1 = function (it) {\n\t return it && it.Math == Math && it;\n\t};\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global_1$1 =\n\t // eslint-disable-next-line no-undef\n\t check$1(typeof globalThis == 'object' && globalThis) ||\n\t check$1(typeof window == 'object' && window) ||\n\t check$1(typeof self == 'object' && self) ||\n\t check$1(typeof commonjsGlobal == 'object' && commonjsGlobal) ||\n\t // eslint-disable-next-line no-new-func\n\t Function('return this')();\n\n\tvar fails$1 = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (error) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar descriptors$1 = !fails$1(function () {\n\t return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n\t});\n\n\tvar nativePropertyIsEnumerable$2 = {}.propertyIsEnumerable;\n\tvar getOwnPropertyDescriptor$4 = Object.getOwnPropertyDescriptor;\n\n\t// Nashorn ~ JDK8 bug\n\tvar NASHORN_BUG$1 = getOwnPropertyDescriptor$4 && !nativePropertyIsEnumerable$2.call({ 1: 2 }, 1);\n\n\t// `Object.prototype.propertyIsEnumerable` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\n\tvar f$8 = NASHORN_BUG$1 ? function propertyIsEnumerable(V) {\n\t var descriptor = getOwnPropertyDescriptor$4(this, V);\n\t return !!descriptor && descriptor.enumerable;\n\t} : nativePropertyIsEnumerable$2;\n\n\tvar objectPropertyIsEnumerable$1 = {\n\t\tf: f$8\n\t};\n\n\tvar createPropertyDescriptor$1 = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar toString$2 = {}.toString;\n\n\tvar classofRaw$1 = function (it) {\n\t return toString$2.call(it).slice(8, -1);\n\t};\n\n\tvar split$1 = ''.split;\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar indexedObject$1 = fails$1(function () {\n\t // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n\t // eslint-disable-next-line no-prototype-builtins\n\t return !Object('z').propertyIsEnumerable(0);\n\t}) ? function (it) {\n\t return classofRaw$1(it) == 'String' ? split$1.call(it, '') : Object(it);\n\t} : Object;\n\n\t// `RequireObjectCoercible` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\n\tvar requireObjectCoercible$1 = function (it) {\n\t if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n\t// toObject with fallback for non-array-like ES3 strings\n\n\n\n\tvar toIndexedObject$1 = function (it) {\n\t return indexedObject$1(requireObjectCoercible$1(it));\n\t};\n\n\tvar isObject$4 = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\t// `ToPrimitive` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toprimitive\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar toPrimitive$1 = function (input, PREFERRED_STRING) {\n\t if (!isObject$4(input)) return input;\n\t var fn, val;\n\t if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$4(val = fn.call(input))) return val;\n\t if (typeof (fn = input.valueOf) == 'function' && !isObject$4(val = fn.call(input))) return val;\n\t if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$4(val = fn.call(input))) return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar hasOwnProperty$1 = {}.hasOwnProperty;\n\n\tvar has$2 = function (it, key) {\n\t return hasOwnProperty$1.call(it, key);\n\t};\n\n\tvar document$4 = global_1$1.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar EXISTS = isObject$4(document$4) && isObject$4(document$4.createElement);\n\n\tvar documentCreateElement$1 = function (it) {\n\t return EXISTS ? document$4.createElement(it) : {};\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar ie8DomDefine$1 = !descriptors$1 && !fails$1(function () {\n\t return Object.defineProperty(documentCreateElement$1('div'), 'a', {\n\t get: function () { return 7; }\n\t }).a != 7;\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor;\n\n\t// `Object.getOwnPropertyDescriptor` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\tvar f$9 = descriptors$1 ? nativeGetOwnPropertyDescriptor$2 : function getOwnPropertyDescriptor(O, P) {\n\t O = toIndexedObject$1(O);\n\t P = toPrimitive$1(P, true);\n\t if (ie8DomDefine$1) try {\n\t return nativeGetOwnPropertyDescriptor$2(O, P);\n\t } catch (error) { /* empty */ }\n\t if (has$2(O, P)) return createPropertyDescriptor$1(!objectPropertyIsEnumerable$1.f.call(O, P), O[P]);\n\t};\n\n\tvar objectGetOwnPropertyDescriptor$1 = {\n\t\tf: f$9\n\t};\n\n\tvar anObject$1 = function (it) {\n\t if (!isObject$4(it)) {\n\t throw TypeError(String(it) + ' is not an object');\n\t } return it;\n\t};\n\n\tvar nativeDefineProperty$2 = Object.defineProperty;\n\n\t// `Object.defineProperty` method\n\t// https://tc39.github.io/ecma262/#sec-object.defineproperty\n\tvar f$a = descriptors$1 ? nativeDefineProperty$2 : function defineProperty(O, P, Attributes) {\n\t anObject$1(O);\n\t P = toPrimitive$1(P, true);\n\t anObject$1(Attributes);\n\t if (ie8DomDefine$1) try {\n\t return nativeDefineProperty$2(O, P, Attributes);\n\t } catch (error) { /* empty */ }\n\t if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n\t if ('value' in Attributes) O[P] = Attributes.value;\n\t return O;\n\t};\n\n\tvar objectDefineProperty$1 = {\n\t\tf: f$a\n\t};\n\n\tvar createNonEnumerableProperty = descriptors$1 ? function (object, key, value) {\n\t return objectDefineProperty$1.f(object, key, createPropertyDescriptor$1(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar setGlobal$1 = function (key, value) {\n\t try {\n\t createNonEnumerableProperty(global_1$1, key, value);\n\t } catch (error) {\n\t global_1$1[key] = value;\n\t } return value;\n\t};\n\n\tvar SHARED = '__core-js_shared__';\n\tvar store$2 = global_1$1[SHARED] || setGlobal$1(SHARED, {});\n\n\tvar sharedStore = store$2;\n\n\tvar functionToString$1 = Function.toString;\n\n\t// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\n\tif (typeof sharedStore.inspectSource != 'function') {\n\t sharedStore.inspectSource = function (it) {\n\t return functionToString$1.call(it);\n\t };\n\t}\n\n\tvar inspectSource = sharedStore.inspectSource;\n\n\tvar WeakMap$3 = global_1$1.WeakMap;\n\n\tvar nativeWeakMap$1 = typeof WeakMap$3 === 'function' && /native code/.test(inspectSource(WeakMap$3));\n\n\tvar isPure$1 = false;\n\n\tvar shared$1 = createCommonjsModule(function (module) {\n\t(module.exports = function (key, value) {\n\t return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: '3.6.4',\n\t mode: 'global',\n\t copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar id$1 = 0;\n\tvar postfix$1 = Math.random();\n\n\tvar uid$1 = function (key) {\n\t return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id$1 + postfix$1).toString(36);\n\t};\n\n\tvar keys$3 = shared$1('keys');\n\n\tvar sharedKey$1 = function (key) {\n\t return keys$3[key] || (keys$3[key] = uid$1(key));\n\t};\n\n\tvar hiddenKeys$2 = {};\n\n\tvar WeakMap$4 = global_1$1.WeakMap;\n\tvar set$2, get$1, has$3;\n\n\tvar enforce$1 = function (it) {\n\t return has$3(it) ? get$1(it) : set$2(it, {});\n\t};\n\n\tvar getterFor$1 = function (TYPE) {\n\t return function (it) {\n\t var state;\n\t if (!isObject$4(it) || (state = get$1(it)).type !== TYPE) {\n\t throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n\t } return state;\n\t };\n\t};\n\n\tif (nativeWeakMap$1) {\n\t var store$3 = new WeakMap$4();\n\t var wmget$1 = store$3.get;\n\t var wmhas$1 = store$3.has;\n\t var wmset$1 = store$3.set;\n\t set$2 = function (it, metadata) {\n\t wmset$1.call(store$3, it, metadata);\n\t return metadata;\n\t };\n\t get$1 = function (it) {\n\t return wmget$1.call(store$3, it) || {};\n\t };\n\t has$3 = function (it) {\n\t return wmhas$1.call(store$3, it);\n\t };\n\t} else {\n\t var STATE$1 = sharedKey$1('state');\n\t hiddenKeys$2[STATE$1] = true;\n\t set$2 = function (it, metadata) {\n\t createNonEnumerableProperty(it, STATE$1, metadata);\n\t return metadata;\n\t };\n\t get$1 = function (it) {\n\t return has$2(it, STATE$1) ? it[STATE$1] : {};\n\t };\n\t has$3 = function (it) {\n\t return has$2(it, STATE$1);\n\t };\n\t}\n\n\tvar internalState$1 = {\n\t set: set$2,\n\t get: get$1,\n\t has: has$3,\n\t enforce: enforce$1,\n\t getterFor: getterFor$1\n\t};\n\n\tvar redefine$1 = createCommonjsModule(function (module) {\n\tvar getInternalState = internalState$1.get;\n\tvar enforceInternalState = internalState$1.enforce;\n\tvar TEMPLATE = String(String).split('String');\n\n\t(module.exports = function (O, key, value, options) {\n\t var unsafe = options ? !!options.unsafe : false;\n\t var simple = options ? !!options.enumerable : false;\n\t var noTargetGet = options ? !!options.noTargetGet : false;\n\t if (typeof value == 'function') {\n\t if (typeof key == 'string' && !has$2(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n\t enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n\t }\n\t if (O === global_1$1) {\n\t if (simple) O[key] = value;\n\t else setGlobal$1(key, value);\n\t return;\n\t } else if (!unsafe) {\n\t delete O[key];\n\t } else if (!noTargetGet && O[key]) {\n\t simple = true;\n\t }\n\t if (simple) O[key] = value;\n\t else createNonEnumerableProperty(O, key, value);\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, 'toString', function toString() {\n\t return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n\t});\n\t});\n\n\tvar path$1 = global_1$1;\n\n\tvar aFunction$2 = function (variable) {\n\t return typeof variable == 'function' ? variable : undefined;\n\t};\n\n\tvar getBuiltIn$1 = function (namespace, method) {\n\t return arguments.length < 2 ? aFunction$2(path$1[namespace]) || aFunction$2(global_1$1[namespace])\n\t : path$1[namespace] && path$1[namespace][method] || global_1$1[namespace] && global_1$1[namespace][method];\n\t};\n\n\tvar ceil$1 = Math.ceil;\n\tvar floor$3 = Math.floor;\n\n\t// `ToInteger` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tointeger\n\tvar toInteger$1 = function (argument) {\n\t return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor$3 : ceil$1)(argument);\n\t};\n\n\tvar min$5 = Math.min;\n\n\t// `ToLength` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tolength\n\tvar toLength$1 = function (argument) {\n\t return argument > 0 ? min$5(toInteger$1(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n\t};\n\n\tvar max$4 = Math.max;\n\tvar min$6 = Math.min;\n\n\t// Helper for a popular repeating case of the spec:\n\t// Let integer be ? ToInteger(index).\n\t// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\n\tvar toAbsoluteIndex$1 = function (index, length) {\n\t var integer = toInteger$1(index);\n\t return integer < 0 ? max$4(integer + length, 0) : min$6(integer, length);\n\t};\n\n\t// `Array.prototype.{ indexOf, includes }` methods implementation\n\tvar createMethod = function (IS_INCLUDES) {\n\t return function ($this, el, fromIndex) {\n\t var O = toIndexedObject$1($this);\n\t var length = toLength$1(O.length);\n\t var index = toAbsoluteIndex$1(fromIndex, length);\n\t var value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t // eslint-disable-next-line no-self-compare\n\t if (IS_INCLUDES && el != el) while (length > index) {\n\t value = O[index++];\n\t // eslint-disable-next-line no-self-compare\n\t if (value != value) return true;\n\t // Array#indexOf ignores holes, Array#includes - not\n\t } else for (;length > index; index++) {\n\t if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n\tvar arrayIncludes$2 = {\n\t // `Array.prototype.includes` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t includes: createMethod(true),\n\t // `Array.prototype.indexOf` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t indexOf: createMethod(false)\n\t};\n\n\tvar indexOf = arrayIncludes$2.indexOf;\n\n\n\tvar objectKeysInternal$1 = function (object, names) {\n\t var O = toIndexedObject$1(object);\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t for (key in O) !has$2(hiddenKeys$2, key) && has$2(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while (names.length > i) if (has$2(O, key = names[i++])) {\n\t ~indexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n\t// IE8- don't enum bug keys\n\tvar enumBugKeys$1 = [\n\t 'constructor',\n\t 'hasOwnProperty',\n\t 'isPrototypeOf',\n\t 'propertyIsEnumerable',\n\t 'toLocaleString',\n\t 'toString',\n\t 'valueOf'\n\t];\n\n\tvar hiddenKeys$3 = enumBugKeys$1.concat('length', 'prototype');\n\n\t// `Object.getOwnPropertyNames` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\tvar f$b = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n\t return objectKeysInternal$1(O, hiddenKeys$3);\n\t};\n\n\tvar objectGetOwnPropertyNames$1 = {\n\t\tf: f$b\n\t};\n\n\tvar f$c = Object.getOwnPropertySymbols;\n\n\tvar objectGetOwnPropertySymbols$1 = {\n\t\tf: f$c\n\t};\n\n\t// all object keys, includes non-enumerable and symbols\n\tvar ownKeys$2 = getBuiltIn$1('Reflect', 'ownKeys') || function ownKeys(it) {\n\t var keys = objectGetOwnPropertyNames$1.f(anObject$1(it));\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols$1.f;\n\t return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n\t};\n\n\tvar copyConstructorProperties$1 = function (target, source) {\n\t var keys = ownKeys$2(source);\n\t var defineProperty = objectDefineProperty$1.f;\n\t var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor$1.f;\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t if (!has$2(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n\t }\n\t};\n\n\tvar replacement$1 = /#|\\.prototype\\./;\n\n\tvar isForced$1 = function (feature, detection) {\n\t var value = data$1[normalize$1(feature)];\n\t return value == POLYFILL$1 ? true\n\t : value == NATIVE$1 ? false\n\t : typeof detection == 'function' ? fails$1(detection)\n\t : !!detection;\n\t};\n\n\tvar normalize$1 = isForced$1.normalize = function (string) {\n\t return String(string).replace(replacement$1, '.').toLowerCase();\n\t};\n\n\tvar data$1 = isForced$1.data = {};\n\tvar NATIVE$1 = isForced$1.NATIVE = 'N';\n\tvar POLYFILL$1 = isForced$1.POLYFILL = 'P';\n\n\tvar isForced_1$1 = isForced$1;\n\n\tvar getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor$1.f;\n\n\n\n\n\n\n\t/*\n\t options.target - name of the target object\n\t options.global - target is the global object\n\t options.stat - export as static methods of target\n\t options.proto - export as prototype methods of target\n\t options.real - real prototype method for the `pure` version\n\t options.forced - export even if the native feature is available\n\t options.bind - bind methods to the target, required for the `pure` version\n\t options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n\t options.unsafe - use the simple assignment of property instead of delete + defineProperty\n\t options.sham - add a flag to not completely full polyfills\n\t options.enumerable - export as enumerable property\n\t options.noTargetGet - prevent calling a getter on target\n\t*/\n\tvar _export$1 = function (options, source) {\n\t var TARGET = options.target;\n\t var GLOBAL = options.global;\n\t var STATIC = options.stat;\n\t var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\t if (GLOBAL) {\n\t target = global_1$1;\n\t } else if (STATIC) {\n\t target = global_1$1[TARGET] || setGlobal$1(TARGET, {});\n\t } else {\n\t target = (global_1$1[TARGET] || {}).prototype;\n\t }\n\t if (target) for (key in source) {\n\t sourceProperty = source[key];\n\t if (options.noTargetGet) {\n\t descriptor = getOwnPropertyDescriptor$5(target, key);\n\t targetProperty = descriptor && descriptor.value;\n\t } else targetProperty = target[key];\n\t FORCED = isForced_1$1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n\t // contained in target\n\t if (!FORCED && targetProperty !== undefined) {\n\t if (typeof sourceProperty === typeof targetProperty) continue;\n\t copyConstructorProperties$1(sourceProperty, targetProperty);\n\t }\n\t // add a flag to not completely full polyfills\n\t if (options.sham || (targetProperty && targetProperty.sham)) {\n\t createNonEnumerableProperty(sourceProperty, 'sham', true);\n\t }\n\t // extend global\n\t redefine$1(target, key, sourceProperty, options);\n\t }\n\t};\n\n\t// `IsArray` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isarray\n\tvar isArray$4 = Array.isArray || function isArray(arg) {\n\t return classofRaw$1(arg) == 'Array';\n\t};\n\n\t// `ToObject` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toobject\n\tvar toObject$1 = function (argument) {\n\t return Object(requireObjectCoercible$1(argument));\n\t};\n\n\tvar createProperty$1 = function (object, key, value) {\n\t var propertyKey = toPrimitive$1(key);\n\t if (propertyKey in object) objectDefineProperty$1.f(object, propertyKey, createPropertyDescriptor$1(0, value));\n\t else object[propertyKey] = value;\n\t};\n\n\tvar nativeSymbol$1 = !!Object.getOwnPropertySymbols && !fails$1(function () {\n\t // Chrome 38 Symbol has incorrect toString conversion\n\t // eslint-disable-next-line no-undef\n\t return !String(Symbol());\n\t});\n\n\tvar useSymbolAsUid = nativeSymbol$1\n\t // eslint-disable-next-line no-undef\n\t && !Symbol.sham\n\t // eslint-disable-next-line no-undef\n\t && typeof Symbol.iterator == 'symbol';\n\n\tvar WellKnownSymbolsStore$1 = shared$1('wks');\n\tvar Symbol$2 = global_1$1.Symbol;\n\tvar createWellKnownSymbol = useSymbolAsUid ? Symbol$2 : Symbol$2 && Symbol$2.withoutSetter || uid$1;\n\n\tvar wellKnownSymbol$1 = function (name) {\n\t if (!has$2(WellKnownSymbolsStore$1, name)) {\n\t if (nativeSymbol$1 && has$2(Symbol$2, name)) WellKnownSymbolsStore$1[name] = Symbol$2[name];\n\t else WellKnownSymbolsStore$1[name] = createWellKnownSymbol('Symbol.' + name);\n\t } return WellKnownSymbolsStore$1[name];\n\t};\n\n\tvar SPECIES$7 = wellKnownSymbol$1('species');\n\n\t// `ArraySpeciesCreate` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\n\tvar arraySpeciesCreate$1 = function (originalArray, length) {\n\t var C;\n\t if (isArray$4(originalArray)) {\n\t C = originalArray.constructor;\n\t // cross-realm fallback\n\t if (typeof C == 'function' && (C === Array || isArray$4(C.prototype))) C = undefined;\n\t else if (isObject$4(C)) {\n\t C = C[SPECIES$7];\n\t if (C === null) C = undefined;\n\t }\n\t } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n\t};\n\n\tvar engineUserAgent = getBuiltIn$1('navigator', 'userAgent') || '';\n\n\tvar process$3 = global_1$1.process;\n\tvar versions$1 = process$3 && process$3.versions;\n\tvar v8$1 = versions$1 && versions$1.v8;\n\tvar match, version;\n\n\tif (v8$1) {\n\t match = v8$1.split('.');\n\t version = match[0] + match[1];\n\t} else if (engineUserAgent) {\n\t match = engineUserAgent.match(/Edge\\/(\\d+)/);\n\t if (!match || match[1] >= 74) {\n\t match = engineUserAgent.match(/Chrome\\/(\\d+)/);\n\t if (match) version = match[1];\n\t }\n\t}\n\n\tvar engineV8Version = version && +version;\n\n\tvar SPECIES$8 = wellKnownSymbol$1('species');\n\n\tvar arrayMethodHasSpeciesSupport$1 = function (METHOD_NAME) {\n\t // We can't use this feature detection in V8 since it causes\n\t // deoptimization and serious performance degradation\n\t // https://github.com/zloirock/core-js/issues/677\n\t return engineV8Version >= 51 || !fails$1(function () {\n\t var array = [];\n\t var constructor = array.constructor = {};\n\t constructor[SPECIES$8] = function () {\n\t return { foo: 1 };\n\t };\n\t return array[METHOD_NAME](Boolean).foo !== 1;\n\t });\n\t};\n\n\tvar IS_CONCAT_SPREADABLE$1 = wellKnownSymbol$1('isConcatSpreadable');\n\tvar MAX_SAFE_INTEGER$2 = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_INDEX_EXCEEDED$1 = 'Maximum allowed index exceeded';\n\n\t// We can't use this feature detection in V8 since it causes\n\t// deoptimization and serious performance degradation\n\t// https://github.com/zloirock/core-js/issues/679\n\tvar IS_CONCAT_SPREADABLE_SUPPORT$1 = engineV8Version >= 51 || !fails$1(function () {\n\t var array = [];\n\t array[IS_CONCAT_SPREADABLE$1] = false;\n\t return array.concat()[0] !== array;\n\t});\n\n\tvar SPECIES_SUPPORT$5 = arrayMethodHasSpeciesSupport$1('concat');\n\n\tvar isConcatSpreadable$1 = function (O) {\n\t if (!isObject$4(O)) return false;\n\t var spreadable = O[IS_CONCAT_SPREADABLE$1];\n\t return spreadable !== undefined ? !!spreadable : isArray$4(O);\n\t};\n\n\tvar FORCED$6 = !IS_CONCAT_SPREADABLE_SUPPORT$1 || !SPECIES_SUPPORT$5;\n\n\t// `Array.prototype.concat` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n\t// with adding support of @@isConcatSpreadable and @@species\n\t_export$1({ target: 'Array', proto: true, forced: FORCED$6 }, {\n\t concat: function concat(arg) { // eslint-disable-line no-unused-vars\n\t var O = toObject$1(this);\n\t var A = arraySpeciesCreate$1(O, 0);\n\t var n = 0;\n\t var i, k, length, len, E;\n\t for (i = -1, length = arguments.length; i < length; i++) {\n\t E = i === -1 ? O : arguments[i];\n\t if (isConcatSpreadable$1(E)) {\n\t len = toLength$1(E.length);\n\t if (n + len > MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED$1);\n\t for (k = 0; k < len; k++, n++) if (k in E) createProperty$1(A, n, E[k]);\n\t } else {\n\t if (n >= MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED$1);\n\t createProperty$1(A, n++, E);\n\t }\n\t }\n\t A.length = n;\n\t return A;\n\t }\n\t});\n\n\tvar aFunction$3 = function (it) {\n\t if (typeof it != 'function') {\n\t throw TypeError(String(it) + ' is not a function');\n\t } return it;\n\t};\n\n\t// optional / simple context binding\n\tvar functionBindContext = function (fn, that, length) {\n\t aFunction$3(fn);\n\t if (that === undefined) return fn;\n\t switch (length) {\n\t case 0: return function () {\n\t return fn.call(that);\n\t };\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar push = [].push;\n\n\t// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\n\tvar createMethod$1 = function (TYPE) {\n\t var IS_MAP = TYPE == 1;\n\t var IS_FILTER = TYPE == 2;\n\t var IS_SOME = TYPE == 3;\n\t var IS_EVERY = TYPE == 4;\n\t var IS_FIND_INDEX = TYPE == 6;\n\t var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n\t return function ($this, callbackfn, that, specificCreate) {\n\t var O = toObject$1($this);\n\t var self = indexedObject$1(O);\n\t var boundFunction = functionBindContext(callbackfn, that, 3);\n\t var length = toLength$1(self.length);\n\t var index = 0;\n\t var create = specificCreate || arraySpeciesCreate$1;\n\t var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n\t var value, result;\n\t for (;length > index; index++) if (NO_HOLES || index in self) {\n\t value = self[index];\n\t result = boundFunction(value, index, O);\n\t if (TYPE) {\n\t if (IS_MAP) target[index] = result; // map\n\t else if (result) switch (TYPE) {\n\t case 3: return true; // some\n\t case 5: return value; // find\n\t case 6: return index; // findIndex\n\t case 2: push.call(target, value); // filter\n\t } else if (IS_EVERY) return false; // every\n\t }\n\t }\n\t return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n\t };\n\t};\n\n\tvar arrayIteration = {\n\t // `Array.prototype.forEach` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t forEach: createMethod$1(0),\n\t // `Array.prototype.map` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t map: createMethod$1(1),\n\t // `Array.prototype.filter` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t filter: createMethod$1(2),\n\t // `Array.prototype.some` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t some: createMethod$1(3),\n\t // `Array.prototype.every` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.every\n\t every: createMethod$1(4),\n\t // `Array.prototype.find` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t find: createMethod$1(5),\n\t // `Array.prototype.findIndex` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\t findIndex: createMethod$1(6)\n\t};\n\n\tvar defineProperty$7 = Object.defineProperty;\n\tvar cache = {};\n\n\tvar thrower = function (it) { throw it; };\n\n\tvar arrayMethodUsesToLength = function (METHOD_NAME, options) {\n\t if (has$2(cache, METHOD_NAME)) return cache[METHOD_NAME];\n\t if (!options) options = {};\n\t var method = [][METHOD_NAME];\n\t var ACCESSORS = has$2(options, 'ACCESSORS') ? options.ACCESSORS : false;\n\t var argument0 = has$2(options, 0) ? options[0] : thrower;\n\t var argument1 = has$2(options, 1) ? options[1] : undefined;\n\n\t return cache[METHOD_NAME] = !!method && !fails$1(function () {\n\t if (ACCESSORS && !descriptors$1) return true;\n\t var O = { length: -1 };\n\n\t if (ACCESSORS) defineProperty$7(O, 1, { enumerable: true, get: thrower });\n\t else O[1] = 1;\n\n\t method.call(O, argument0, argument1);\n\t });\n\t};\n\n\tvar $filter = arrayIteration.filter;\n\n\n\n\tvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport$1('filter');\n\t// Edge 14- issue\n\tvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n\t// `Array.prototype.filter` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t// with adding support of @@species\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n\t filter: function filter(callbackfn /* , thisArg */) {\n\t return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\tvar objectKeys$1 = Object.keys || function keys(O) {\n\t return objectKeysInternal$1(O, enumBugKeys$1);\n\t};\n\n\t// `Object.defineProperties` method\n\t// https://tc39.github.io/ecma262/#sec-object.defineproperties\n\tvar objectDefineProperties$1 = descriptors$1 ? Object.defineProperties : function defineProperties(O, Properties) {\n\t anObject$1(O);\n\t var keys = objectKeys$1(Properties);\n\t var length = keys.length;\n\t var index = 0;\n\t var key;\n\t while (length > index) objectDefineProperty$1.f(O, key = keys[index++], Properties[key]);\n\t return O;\n\t};\n\n\tvar html$1 = getBuiltIn$1('document', 'documentElement');\n\n\tvar GT = '>';\n\tvar LT = '<';\n\tvar PROTOTYPE$2 = 'prototype';\n\tvar SCRIPT = 'script';\n\tvar IE_PROTO$2 = sharedKey$1('IE_PROTO');\n\n\tvar EmptyConstructor = function () { /* empty */ };\n\n\tvar scriptTag = function (content) {\n\t return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n\t};\n\n\t// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n\tvar NullProtoObjectViaActiveX = function (activeXDocument) {\n\t activeXDocument.write(scriptTag(''));\n\t activeXDocument.close();\n\t var temp = activeXDocument.parentWindow.Object;\n\t activeXDocument = null; // avoid memory leak\n\t return temp;\n\t};\n\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\n\tvar NullProtoObjectViaIFrame = function () {\n\t // Thrash, waste and sodomy: IE GC bug\n\t var iframe = documentCreateElement$1('iframe');\n\t var JS = 'java' + SCRIPT + ':';\n\t var iframeDocument;\n\t iframe.style.display = 'none';\n\t html$1.appendChild(iframe);\n\t // https://github.com/zloirock/core-js/issues/475\n\t iframe.src = String(JS);\n\t iframeDocument = iframe.contentWindow.document;\n\t iframeDocument.open();\n\t iframeDocument.write(scriptTag('document.F=Object'));\n\t iframeDocument.close();\n\t return iframeDocument.F;\n\t};\n\n\t// Check for document.domain and active x support\n\t// No need to use active x approach when document.domain is not set\n\t// see https://github.com/es-shims/es5-shim/issues/150\n\t// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n\t// avoid IE GC bug\n\tvar activeXDocument;\n\tvar NullProtoObject = function () {\n\t try {\n\t /* global ActiveXObject */\n\t activeXDocument = document.domain && new ActiveXObject('htmlfile');\n\t } catch (error) { /* ignore */ }\n\t NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n\t var length = enumBugKeys$1.length;\n\t while (length--) delete NullProtoObject[PROTOTYPE$2][enumBugKeys$1[length]];\n\t return NullProtoObject();\n\t};\n\n\thiddenKeys$2[IE_PROTO$2] = true;\n\n\t// `Object.create` method\n\t// https://tc39.github.io/ecma262/#sec-object.create\n\tvar objectCreate$1 = Object.create || function create(O, Properties) {\n\t var result;\n\t if (O !== null) {\n\t EmptyConstructor[PROTOTYPE$2] = anObject$1(O);\n\t result = new EmptyConstructor();\n\t EmptyConstructor[PROTOTYPE$2] = null;\n\t // add \"__proto__\" for Object.getPrototypeOf polyfill\n\t result[IE_PROTO$2] = O;\n\t } else result = NullProtoObject();\n\t return Properties === undefined ? result : objectDefineProperties$1(result, Properties);\n\t};\n\n\tvar UNSCOPABLES$1 = wellKnownSymbol$1('unscopables');\n\tvar ArrayPrototype$2 = Array.prototype;\n\n\t// Array.prototype[@@unscopables]\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\tif (ArrayPrototype$2[UNSCOPABLES$1] == undefined) {\n\t objectDefineProperty$1.f(ArrayPrototype$2, UNSCOPABLES$1, {\n\t configurable: true,\n\t value: objectCreate$1(null)\n\t });\n\t}\n\n\t// add a key to Array.prototype[@@unscopables]\n\tvar addToUnscopables$1 = function (key) {\n\t ArrayPrototype$2[UNSCOPABLES$1][key] = true;\n\t};\n\n\tvar $find = arrayIteration.find;\n\n\n\n\tvar FIND$1 = 'find';\n\tvar SKIPS_HOLES$1 = true;\n\n\tvar USES_TO_LENGTH$1 = arrayMethodUsesToLength(FIND$1);\n\n\t// Shouldn't skip holes\n\tif (FIND$1 in []) Array(1)[FIND$1](function () { SKIPS_HOLES$1 = false; });\n\n\t// `Array.prototype.find` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t_export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 || !USES_TO_LENGTH$1 }, {\n\t find: function find(callbackfn /* , that = undefined */) {\n\t return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1(FIND$1);\n\n\t// call something on iterator step with safe closing on error\n\tvar callWithSafeIterationClosing$1 = function (iterator, fn, value, ENTRIES) {\n\t try {\n\t return ENTRIES ? fn(anObject$1(value)[0], value[1]) : fn(value);\n\t // 7.4.6 IteratorClose(iterator, completion)\n\t } catch (error) {\n\t var returnMethod = iterator['return'];\n\t if (returnMethod !== undefined) anObject$1(returnMethod.call(iterator));\n\t throw error;\n\t }\n\t};\n\n\tvar iterators$1 = {};\n\n\tvar ITERATOR$9 = wellKnownSymbol$1('iterator');\n\tvar ArrayPrototype$3 = Array.prototype;\n\n\t// check on default Array iterator\n\tvar isArrayIteratorMethod$1 = function (it) {\n\t return it !== undefined && (iterators$1.Array === it || ArrayPrototype$3[ITERATOR$9] === it);\n\t};\n\n\tvar TO_STRING_TAG$5 = wellKnownSymbol$1('toStringTag');\n\tvar test$1 = {};\n\n\ttest$1[TO_STRING_TAG$5] = 'z';\n\n\tvar toStringTagSupport = String(test$1) === '[object z]';\n\n\tvar TO_STRING_TAG$6 = wellKnownSymbol$1('toStringTag');\n\t// ES3 wrong here\n\tvar CORRECT_ARGUMENTS$1 = classofRaw$1(function () { return arguments; }()) == 'Arguments';\n\n\t// fallback for IE11 Script Access Denied error\n\tvar tryGet$1 = function (it, key) {\n\t try {\n\t return it[key];\n\t } catch (error) { /* empty */ }\n\t};\n\n\t// getting tag from ES6+ `Object.prototype.toString`\n\tvar classof$1 = toStringTagSupport ? classofRaw$1 : function (it) {\n\t var O, tag, result;\n\t return it === undefined ? 'Undefined' : it === null ? 'Null'\n\t // @@toStringTag case\n\t : typeof (tag = tryGet$1(O = Object(it), TO_STRING_TAG$6)) == 'string' ? tag\n\t // builtinTag case\n\t : CORRECT_ARGUMENTS$1 ? classofRaw$1(O)\n\t // ES3 arguments fallback\n\t : (result = classofRaw$1(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n\t};\n\n\tvar ITERATOR$a = wellKnownSymbol$1('iterator');\n\n\tvar getIteratorMethod$1 = function (it) {\n\t if (it != undefined) return it[ITERATOR$a]\n\t || it['@@iterator']\n\t || iterators$1[classof$1(it)];\n\t};\n\n\t// `Array.from` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\tvar arrayFrom$1 = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n\t var O = toObject$1(arrayLike);\n\t var C = typeof this == 'function' ? this : Array;\n\t var argumentsLength = arguments.length;\n\t var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n\t var mapping = mapfn !== undefined;\n\t var iteratorMethod = getIteratorMethod$1(O);\n\t var index = 0;\n\t var length, result, step, iterator, next, value;\n\t if (mapping) mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n\t // if the target is not iterable or it's an array with the default iterator - use a simple case\n\t if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod$1(iteratorMethod))) {\n\t iterator = iteratorMethod.call(O);\n\t next = iterator.next;\n\t result = new C();\n\t for (;!(step = next.call(iterator)).done; index++) {\n\t value = mapping ? callWithSafeIterationClosing$1(iterator, mapfn, [step.value, index], true) : step.value;\n\t createProperty$1(result, index, value);\n\t }\n\t } else {\n\t length = toLength$1(O.length);\n\t result = new C(length);\n\t for (;length > index; index++) {\n\t value = mapping ? mapfn(O[index], index) : O[index];\n\t createProperty$1(result, index, value);\n\t }\n\t }\n\t result.length = index;\n\t return result;\n\t};\n\n\tvar ITERATOR$b = wellKnownSymbol$1('iterator');\n\tvar SAFE_CLOSING$1 = false;\n\n\ttry {\n\t var called$1 = 0;\n\t var iteratorWithReturn$1 = {\n\t next: function () {\n\t return { done: !!called$1++ };\n\t },\n\t 'return': function () {\n\t SAFE_CLOSING$1 = true;\n\t }\n\t };\n\t iteratorWithReturn$1[ITERATOR$b] = function () {\n\t return this;\n\t };\n\t // eslint-disable-next-line no-throw-literal\n\t Array.from(iteratorWithReturn$1, function () { throw 2; });\n\t} catch (error) { /* empty */ }\n\n\tvar checkCorrectnessOfIteration$1 = function (exec, SKIP_CLOSING) {\n\t if (!SKIP_CLOSING && !SAFE_CLOSING$1) return false;\n\t var ITERATION_SUPPORT = false;\n\t try {\n\t var object = {};\n\t object[ITERATOR$b] = function () {\n\t return {\n\t next: function () {\n\t return { done: ITERATION_SUPPORT = true };\n\t }\n\t };\n\t };\n\t exec(object);\n\t } catch (error) { /* empty */ }\n\t return ITERATION_SUPPORT;\n\t};\n\n\tvar INCORRECT_ITERATION$2 = !checkCorrectnessOfIteration$1(function (iterable) {\n\t Array.from(iterable);\n\t});\n\n\t// `Array.from` method\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\t_export$1({ target: 'Array', stat: true, forced: INCORRECT_ITERATION$2 }, {\n\t from: arrayFrom$1\n\t});\n\n\tvar $includes = arrayIncludes$2.includes;\n\n\n\n\tvar USES_TO_LENGTH$2 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n\t// `Array.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t_export$1({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$2 }, {\n\t includes: function includes(el /* , fromIndex = 0 */) {\n\t return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1('includes');\n\n\tvar correctPrototypeGetter$1 = !fails$1(function () {\n\t function F() { /* empty */ }\n\t F.prototype.constructor = null;\n\t return Object.getPrototypeOf(new F()) !== F.prototype;\n\t});\n\n\tvar IE_PROTO$3 = sharedKey$1('IE_PROTO');\n\tvar ObjectPrototype$4 = Object.prototype;\n\n\t// `Object.getPrototypeOf` method\n\t// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n\tvar objectGetPrototypeOf$1 = correctPrototypeGetter$1 ? Object.getPrototypeOf : function (O) {\n\t O = toObject$1(O);\n\t if (has$2(O, IE_PROTO$3)) return O[IE_PROTO$3];\n\t if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n\t return O.constructor.prototype;\n\t } return O instanceof Object ? ObjectPrototype$4 : null;\n\t};\n\n\tvar ITERATOR$c = wellKnownSymbol$1('iterator');\n\tvar BUGGY_SAFARI_ITERATORS$2 = false;\n\n\tvar returnThis$3 = function () { return this; };\n\n\t// `%IteratorPrototype%` object\n\t// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\n\tvar IteratorPrototype$3, PrototypeOfArrayIteratorPrototype$1, arrayIterator$1;\n\n\tif ([].keys) {\n\t arrayIterator$1 = [].keys();\n\t // Safari 8 has buggy iterators w/o `next`\n\t if (!('next' in arrayIterator$1)) BUGGY_SAFARI_ITERATORS$2 = true;\n\t else {\n\t PrototypeOfArrayIteratorPrototype$1 = objectGetPrototypeOf$1(objectGetPrototypeOf$1(arrayIterator$1));\n\t if (PrototypeOfArrayIteratorPrototype$1 !== Object.prototype) IteratorPrototype$3 = PrototypeOfArrayIteratorPrototype$1;\n\t }\n\t}\n\n\tif (IteratorPrototype$3 == undefined) IteratorPrototype$3 = {};\n\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\tif ( !has$2(IteratorPrototype$3, ITERATOR$c)) {\n\t createNonEnumerableProperty(IteratorPrototype$3, ITERATOR$c, returnThis$3);\n\t}\n\n\tvar iteratorsCore$1 = {\n\t IteratorPrototype: IteratorPrototype$3,\n\t BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$2\n\t};\n\n\tvar defineProperty$8 = objectDefineProperty$1.f;\n\n\n\n\tvar TO_STRING_TAG$7 = wellKnownSymbol$1('toStringTag');\n\n\tvar setToStringTag$1 = function (it, TAG, STATIC) {\n\t if (it && !has$2(it = STATIC ? it : it.prototype, TO_STRING_TAG$7)) {\n\t defineProperty$8(it, TO_STRING_TAG$7, { configurable: true, value: TAG });\n\t }\n\t};\n\n\tvar IteratorPrototype$4 = iteratorsCore$1.IteratorPrototype;\n\n\n\n\n\n\tvar returnThis$4 = function () { return this; };\n\n\tvar createIteratorConstructor$1 = function (IteratorConstructor, NAME, next) {\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t IteratorConstructor.prototype = objectCreate$1(IteratorPrototype$4, { next: createPropertyDescriptor$1(1, next) });\n\t setToStringTag$1(IteratorConstructor, TO_STRING_TAG, false);\n\t iterators$1[TO_STRING_TAG] = returnThis$4;\n\t return IteratorConstructor;\n\t};\n\n\tvar aPossiblePrototype = function (it) {\n\t if (!isObject$4(it) && it !== null) {\n\t throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n\t } return it;\n\t};\n\n\t// `Object.setPrototypeOf` method\n\t// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n\t// Works with __proto__ only. Old v8 can't work with null proto objects.\n\t/* eslint-disable no-proto */\n\tvar objectSetPrototypeOf$1 = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n\t var CORRECT_SETTER = false;\n\t var test = {};\n\t var setter;\n\t try {\n\t setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n\t setter.call(test, []);\n\t CORRECT_SETTER = test instanceof Array;\n\t } catch (error) { /* empty */ }\n\t return function setPrototypeOf(O, proto) {\n\t anObject$1(O);\n\t aPossiblePrototype(proto);\n\t if (CORRECT_SETTER) setter.call(O, proto);\n\t else O.__proto__ = proto;\n\t return O;\n\t };\n\t}() : undefined);\n\n\tvar IteratorPrototype$5 = iteratorsCore$1.IteratorPrototype;\n\tvar BUGGY_SAFARI_ITERATORS$3 = iteratorsCore$1.BUGGY_SAFARI_ITERATORS;\n\tvar ITERATOR$d = wellKnownSymbol$1('iterator');\n\tvar KEYS$1 = 'keys';\n\tvar VALUES$1 = 'values';\n\tvar ENTRIES$1 = 'entries';\n\n\tvar returnThis$5 = function () { return this; };\n\n\tvar defineIterator$1 = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n\t createIteratorConstructor$1(IteratorConstructor, NAME, next);\n\n\t var getIterationMethod = function (KIND) {\n\t if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n\t if (!BUGGY_SAFARI_ITERATORS$3 && KIND in IterablePrototype) return IterablePrototype[KIND];\n\t switch (KIND) {\n\t case KEYS$1: return function keys() { return new IteratorConstructor(this, KIND); };\n\t case VALUES$1: return function values() { return new IteratorConstructor(this, KIND); };\n\t case ENTRIES$1: return function entries() { return new IteratorConstructor(this, KIND); };\n\t } return function () { return new IteratorConstructor(this); };\n\t };\n\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t var INCORRECT_VALUES_NAME = false;\n\t var IterablePrototype = Iterable.prototype;\n\t var nativeIterator = IterablePrototype[ITERATOR$d]\n\t || IterablePrototype['@@iterator']\n\t || DEFAULT && IterablePrototype[DEFAULT];\n\t var defaultIterator = !BUGGY_SAFARI_ITERATORS$3 && nativeIterator || getIterationMethod(DEFAULT);\n\t var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n\t var CurrentIteratorPrototype, methods, KEY;\n\n\t // fix native\n\t if (anyNativeIterator) {\n\t CurrentIteratorPrototype = objectGetPrototypeOf$1(anyNativeIterator.call(new Iterable()));\n\t if (IteratorPrototype$5 !== Object.prototype && CurrentIteratorPrototype.next) {\n\t if ( objectGetPrototypeOf$1(CurrentIteratorPrototype) !== IteratorPrototype$5) {\n\t if (objectSetPrototypeOf$1) {\n\t objectSetPrototypeOf$1(CurrentIteratorPrototype, IteratorPrototype$5);\n\t } else if (typeof CurrentIteratorPrototype[ITERATOR$d] != 'function') {\n\t createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$d, returnThis$5);\n\t }\n\t }\n\t // Set @@toStringTag to native iterators\n\t setToStringTag$1(CurrentIteratorPrototype, TO_STRING_TAG, true);\n\t }\n\t }\n\n\t // fix Array#{values, @@iterator}.name in V8 / FF\n\t if (DEFAULT == VALUES$1 && nativeIterator && nativeIterator.name !== VALUES$1) {\n\t INCORRECT_VALUES_NAME = true;\n\t defaultIterator = function values() { return nativeIterator.call(this); };\n\t }\n\n\t // define iterator\n\t if ( IterablePrototype[ITERATOR$d] !== defaultIterator) {\n\t createNonEnumerableProperty(IterablePrototype, ITERATOR$d, defaultIterator);\n\t }\n\t iterators$1[NAME] = defaultIterator;\n\n\t // export additional methods\n\t if (DEFAULT) {\n\t methods = {\n\t values: getIterationMethod(VALUES$1),\n\t keys: IS_SET ? defaultIterator : getIterationMethod(KEYS$1),\n\t entries: getIterationMethod(ENTRIES$1)\n\t };\n\t if (FORCED) for (KEY in methods) {\n\t if (BUGGY_SAFARI_ITERATORS$3 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n\t redefine$1(IterablePrototype, KEY, methods[KEY]);\n\t }\n\t } else _export$1({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$3 || INCORRECT_VALUES_NAME }, methods);\n\t }\n\n\t return methods;\n\t};\n\n\tvar ARRAY_ITERATOR$1 = 'Array Iterator';\n\tvar setInternalState$6 = internalState$1.set;\n\tvar getInternalState$4 = internalState$1.getterFor(ARRAY_ITERATOR$1);\n\n\t// `Array.prototype.entries` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n\t// `Array.prototype.keys` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n\t// `Array.prototype.values` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.values\n\t// `Array.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n\t// `CreateArrayIterator` internal method\n\t// https://tc39.github.io/ecma262/#sec-createarrayiterator\n\tvar es_array_iterator$1 = defineIterator$1(Array, 'Array', function (iterated, kind) {\n\t setInternalState$6(this, {\n\t type: ARRAY_ITERATOR$1,\n\t target: toIndexedObject$1(iterated), // target\n\t index: 0, // next index\n\t kind: kind // kind\n\t });\n\t// `%ArrayIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n\t}, function () {\n\t var state = getInternalState$4(this);\n\t var target = state.target;\n\t var kind = state.kind;\n\t var index = state.index++;\n\t if (!target || index >= target.length) {\n\t state.target = undefined;\n\t return { value: undefined, done: true };\n\t }\n\t if (kind == 'keys') return { value: index, done: false };\n\t if (kind == 'values') return { value: target[index], done: false };\n\t return { value: [index, target[index]], done: false };\n\t}, 'values');\n\n\t// argumentsList[@@iterator] is %ArrayProto_values%\n\t// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n\t// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\n\titerators$1.Arguments = iterators$1.Array;\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1('keys');\n\taddToUnscopables$1('values');\n\taddToUnscopables$1('entries');\n\n\tvar arrayMethodIsStrict = function (METHOD_NAME, argument) {\n\t var method = [][METHOD_NAME];\n\t return !!method && fails$1(function () {\n\t // eslint-disable-next-line no-useless-call,no-throw-literal\n\t method.call(null, argument || function () { throw 1; }, 1);\n\t });\n\t};\n\n\tvar nativeJoin$1 = [].join;\n\n\tvar ES3_STRINGS$1 = indexedObject$1 != Object;\n\tvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n\t// `Array.prototype.join` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.join\n\t_export$1({ target: 'Array', proto: true, forced: ES3_STRINGS$1 || !STRICT_METHOD }, {\n\t join: function join(separator) {\n\t return nativeJoin$1.call(toIndexedObject$1(this), separator === undefined ? ',' : separator);\n\t }\n\t});\n\n\tvar $map = arrayIteration.map;\n\n\n\n\tvar HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('map');\n\t// FF49- issue\n\tvar USES_TO_LENGTH$3 = arrayMethodUsesToLength('map');\n\n\t// `Array.prototype.map` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t// with adding support of @@species\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$3 }, {\n\t map: function map(callbackfn /* , thisArg */) {\n\t return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// makes subclassing work correct for wrapped built-ins\n\tvar inheritIfRequired$1 = function ($this, dummy, Wrapper) {\n\t var NewTarget, NewTargetPrototype;\n\t if (\n\t // it can work only with native `setPrototypeOf`\n\t objectSetPrototypeOf$1 &&\n\t // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n\t typeof (NewTarget = dummy.constructor) == 'function' &&\n\t NewTarget !== Wrapper &&\n\t isObject$4(NewTargetPrototype = NewTarget.prototype) &&\n\t NewTargetPrototype !== Wrapper.prototype\n\t ) objectSetPrototypeOf$1($this, NewTargetPrototype);\n\t return $this;\n\t};\n\n\t// a string of all valid unicode whitespaces\n\t// eslint-disable-next-line max-len\n\tvar whitespaces$1 = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\tvar whitespace$1 = '[' + whitespaces$1 + ']';\n\tvar ltrim$1 = RegExp('^' + whitespace$1 + whitespace$1 + '*');\n\tvar rtrim$1 = RegExp(whitespace$1 + whitespace$1 + '*$');\n\n\t// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\n\tvar createMethod$2 = function (TYPE) {\n\t return function ($this) {\n\t var string = String(requireObjectCoercible$1($this));\n\t if (TYPE & 1) string = string.replace(ltrim$1, '');\n\t if (TYPE & 2) string = string.replace(rtrim$1, '');\n\t return string;\n\t };\n\t};\n\n\tvar stringTrim$1 = {\n\t // `String.prototype.{ trimLeft, trimStart }` methods\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n\t start: createMethod$2(1),\n\t // `String.prototype.{ trimRight, trimEnd }` methods\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n\t end: createMethod$2(2),\n\t // `String.prototype.trim` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n\t trim: createMethod$2(3)\n\t};\n\n\tvar getOwnPropertyNames$2 = objectGetOwnPropertyNames$1.f;\n\tvar getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor$1.f;\n\tvar defineProperty$9 = objectDefineProperty$1.f;\n\tvar trim = stringTrim$1.trim;\n\n\tvar NUMBER$1 = 'Number';\n\tvar NativeNumber$1 = global_1$1[NUMBER$1];\n\tvar NumberPrototype$1 = NativeNumber$1.prototype;\n\n\t// Opera ~12 has broken Object#toString\n\tvar BROKEN_CLASSOF$1 = classofRaw$1(objectCreate$1(NumberPrototype$1)) == NUMBER$1;\n\n\t// `ToNumber` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tonumber\n\tvar toNumber$1 = function (argument) {\n\t var it = toPrimitive$1(argument, false);\n\t var first, third, radix, maxCode, digits, length, index, code;\n\t if (typeof it == 'string' && it.length > 2) {\n\t it = trim(it);\n\t first = it.charCodeAt(0);\n\t if (first === 43 || first === 45) {\n\t third = it.charCodeAt(2);\n\t if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n\t } else if (first === 48) {\n\t switch (it.charCodeAt(1)) {\n\t case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n\t case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n\t default: return +it;\n\t }\n\t digits = it.slice(2);\n\t length = digits.length;\n\t for (index = 0; index < length; index++) {\n\t code = digits.charCodeAt(index);\n\t // parseInt parses a string to a first unavailable symbol\n\t // but ToNumber should return NaN if a string contains unavailable symbols\n\t if (code < 48 || code > maxCode) return NaN;\n\t } return parseInt(digits, radix);\n\t }\n\t } return +it;\n\t};\n\n\t// `Number` constructor\n\t// https://tc39.github.io/ecma262/#sec-number-constructor\n\tif (isForced_1$1(NUMBER$1, !NativeNumber$1(' 0o1') || !NativeNumber$1('0b1') || NativeNumber$1('+0x1'))) {\n\t var NumberWrapper$1 = function Number(value) {\n\t var it = arguments.length < 1 ? 0 : value;\n\t var dummy = this;\n\t return dummy instanceof NumberWrapper$1\n\t // check on 1..constructor(foo) case\n\t && (BROKEN_CLASSOF$1 ? fails$1(function () { NumberPrototype$1.valueOf.call(dummy); }) : classofRaw$1(dummy) != NUMBER$1)\n\t ? inheritIfRequired$1(new NativeNumber$1(toNumber$1(it)), dummy, NumberWrapper$1) : toNumber$1(it);\n\t };\n\t for (var keys$4 = descriptors$1 ? getOwnPropertyNames$2(NativeNumber$1) : (\n\t // ES3:\n\t 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n\t // ES2015 (in case, if modules with ES2015 Number statics required before):\n\t 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n\t 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n\t ).split(','), j$1 = 0, key$1; keys$4.length > j$1; j$1++) {\n\t if (has$2(NativeNumber$1, key$1 = keys$4[j$1]) && !has$2(NumberWrapper$1, key$1)) {\n\t defineProperty$9(NumberWrapper$1, key$1, getOwnPropertyDescriptor$6(NativeNumber$1, key$1));\n\t }\n\t }\n\t NumberWrapper$1.prototype = NumberPrototype$1;\n\t NumberPrototype$1.constructor = NumberWrapper$1;\n\t redefine$1(global_1$1, NUMBER$1, NumberWrapper$1);\n\t}\n\n\tvar FAILS_ON_PRIMITIVES$2 = fails$1(function () { objectKeys$1(1); });\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\t_export$1({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$2 }, {\n\t keys: function keys(it) {\n\t return objectKeys$1(toObject$1(it));\n\t }\n\t});\n\n\t// `Object.prototype.toString` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tvar objectToString$1 = toStringTagSupport ? {}.toString : function toString() {\n\t return '[object ' + classof$1(this) + ']';\n\t};\n\n\t// `Object.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tif (!toStringTagSupport) {\n\t redefine$1(Object.prototype, 'toString', objectToString$1, { unsafe: true });\n\t}\n\n\t// `RegExp.prototype.flags` getter implementation\n\t// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\n\tvar regexpFlags$1 = function () {\n\t var that = anObject$1(this);\n\t var result = '';\n\t if (that.global) result += 'g';\n\t if (that.ignoreCase) result += 'i';\n\t if (that.multiline) result += 'm';\n\t if (that.dotAll) result += 's';\n\t if (that.unicode) result += 'u';\n\t if (that.sticky) result += 'y';\n\t return result;\n\t};\n\n\t// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n\t// so we use an intermediate function.\n\tfunction RE(s, f) {\n\t return RegExp(s, f);\n\t}\n\n\tvar UNSUPPORTED_Y = fails$1(function () {\n\t // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n\t var re = RE('a', 'y');\n\t re.lastIndex = 2;\n\t return re.exec('abcd') != null;\n\t});\n\n\tvar BROKEN_CARET = fails$1(function () {\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n\t var re = RE('^r', 'gy');\n\t re.lastIndex = 2;\n\t return re.exec('str') != null;\n\t});\n\n\tvar regexpStickyHelpers = {\n\t\tUNSUPPORTED_Y: UNSUPPORTED_Y,\n\t\tBROKEN_CARET: BROKEN_CARET\n\t};\n\n\tvar nativeExec$1 = RegExp.prototype.exec;\n\t// This always refers to the native implementation, because the\n\t// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n\t// which loads this file before patching the method.\n\tvar nativeReplace$1 = String.prototype.replace;\n\n\tvar patchedExec$1 = nativeExec$1;\n\n\tvar UPDATES_LAST_INDEX_WRONG$1 = (function () {\n\t var re1 = /a/;\n\t var re2 = /b*/g;\n\t nativeExec$1.call(re1, 'a');\n\t nativeExec$1.call(re2, 'a');\n\t return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n\t})();\n\n\tvar UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET;\n\n\t// nonparticipating capturing group, copied from es5-shim's String#split patch.\n\tvar NPCG_INCLUDED$1 = /()??/.exec('')[1] !== undefined;\n\n\tvar PATCH$1 = UPDATES_LAST_INDEX_WRONG$1 || NPCG_INCLUDED$1 || UNSUPPORTED_Y$1;\n\n\tif (PATCH$1) {\n\t patchedExec$1 = function exec(str) {\n\t var re = this;\n\t var lastIndex, reCopy, match, i;\n\t var sticky = UNSUPPORTED_Y$1 && re.sticky;\n\t var flags = regexpFlags$1.call(re);\n\t var source = re.source;\n\t var charsAdded = 0;\n\t var strCopy = str;\n\n\t if (sticky) {\n\t flags = flags.replace('y', '');\n\t if (flags.indexOf('g') === -1) {\n\t flags += 'g';\n\t }\n\n\t strCopy = String(str).slice(re.lastIndex);\n\t // Support anchored sticky behavior.\n\t if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n\t source = '(?: ' + source + ')';\n\t strCopy = ' ' + strCopy;\n\t charsAdded++;\n\t }\n\t // ^(? + rx + ) is needed, in combination with some str slicing, to\n\t // simulate the 'y' flag.\n\t reCopy = new RegExp('^(?:' + source + ')', flags);\n\t }\n\n\t if (NPCG_INCLUDED$1) {\n\t reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n\t }\n\t if (UPDATES_LAST_INDEX_WRONG$1) lastIndex = re.lastIndex;\n\n\t match = nativeExec$1.call(sticky ? reCopy : re, strCopy);\n\n\t if (sticky) {\n\t if (match) {\n\t match.input = match.input.slice(charsAdded);\n\t match[0] = match[0].slice(charsAdded);\n\t match.index = re.lastIndex;\n\t re.lastIndex += match[0].length;\n\t } else re.lastIndex = 0;\n\t } else if (UPDATES_LAST_INDEX_WRONG$1 && match) {\n\t re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n\t }\n\t if (NPCG_INCLUDED$1 && match && match.length > 1) {\n\t // Fix browsers whose `exec` methods don't consistently return `undefined`\n\t // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n\t nativeReplace$1.call(match[0], reCopy, function () {\n\t for (i = 1; i < arguments.length - 2; i++) {\n\t if (arguments[i] === undefined) match[i] = undefined;\n\t }\n\t });\n\t }\n\n\t return match;\n\t };\n\t}\n\n\tvar regexpExec$1 = patchedExec$1;\n\n\t_export$1({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec$1 }, {\n\t exec: regexpExec$1\n\t});\n\n\tvar TO_STRING$1 = 'toString';\n\tvar RegExpPrototype$2 = RegExp.prototype;\n\tvar nativeToString$1 = RegExpPrototype$2[TO_STRING$1];\n\n\tvar NOT_GENERIC$1 = fails$1(function () { return nativeToString$1.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n\t// FF44- RegExp#toString has a wrong name\n\tvar INCORRECT_NAME$1 = nativeToString$1.name != TO_STRING$1;\n\n\t// `RegExp.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\tif (NOT_GENERIC$1 || INCORRECT_NAME$1) {\n\t redefine$1(RegExp.prototype, TO_STRING$1, function toString() {\n\t var R = anObject$1(this);\n\t var p = String(R.source);\n\t var rf = R.flags;\n\t var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$2) ? regexpFlags$1.call(R) : rf);\n\t return '/' + p + '/' + f;\n\t }, { unsafe: true });\n\t}\n\n\tvar MATCH$3 = wellKnownSymbol$1('match');\n\n\t// `IsRegExp` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isregexp\n\tvar isRegexp$1 = function (it) {\n\t var isRegExp;\n\t return isObject$4(it) && ((isRegExp = it[MATCH$3]) !== undefined ? !!isRegExp : classofRaw$1(it) == 'RegExp');\n\t};\n\n\tvar notARegexp = function (it) {\n\t if (isRegexp$1(it)) {\n\t throw TypeError(\"The method doesn't accept regular expressions\");\n\t } return it;\n\t};\n\n\tvar MATCH$4 = wellKnownSymbol$1('match');\n\n\tvar correctIsRegexpLogic$1 = function (METHOD_NAME) {\n\t var regexp = /./;\n\t try {\n\t '/./'[METHOD_NAME](regexp);\n\t } catch (e) {\n\t try {\n\t regexp[MATCH$4] = false;\n\t return '/./'[METHOD_NAME](regexp);\n\t } catch (f) { /* empty */ }\n\t } return false;\n\t};\n\n\t// `String.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n\t_export$1({ target: 'String', proto: true, forced: !correctIsRegexpLogic$1('includes') }, {\n\t includes: function includes(searchString /* , position = 0 */) {\n\t return !!~String(requireObjectCoercible$1(this))\n\t .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `String.prototype.{ codePointAt, at }` methods implementation\n\tvar createMethod$3 = function (CONVERT_TO_STRING) {\n\t return function ($this, pos) {\n\t var S = String(requireObjectCoercible$1($this));\n\t var position = toInteger$1(pos);\n\t var size = S.length;\n\t var first, second;\n\t if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n\t first = S.charCodeAt(position);\n\t return first < 0xD800 || first > 0xDBFF || position + 1 === size\n\t || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n\t ? CONVERT_TO_STRING ? S.charAt(position) : first\n\t : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n\t };\n\t};\n\n\tvar stringMultibyte = {\n\t // `String.prototype.codePointAt` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n\t codeAt: createMethod$3(false),\n\t // `String.prototype.at` method\n\t // https://github.com/mathiasbynens/String.prototype.at\n\t charAt: createMethod$3(true)\n\t};\n\n\tvar charAt = stringMultibyte.charAt;\n\n\n\n\tvar STRING_ITERATOR$1 = 'String Iterator';\n\tvar setInternalState$7 = internalState$1.set;\n\tvar getInternalState$5 = internalState$1.getterFor(STRING_ITERATOR$1);\n\n\t// `String.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\n\tdefineIterator$1(String, 'String', function (iterated) {\n\t setInternalState$7(this, {\n\t type: STRING_ITERATOR$1,\n\t string: String(iterated),\n\t index: 0\n\t });\n\t// `%StringIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n\t}, function next() {\n\t var state = getInternalState$5(this);\n\t var string = state.string;\n\t var index = state.index;\n\t var point;\n\t if (index >= string.length) return { value: undefined, done: true };\n\t point = charAt(string, index);\n\t state.index += point.length;\n\t return { value: point, done: false };\n\t});\n\n\t// TODO: Remove from `core-js@4` since it's moved to entry points\n\n\n\n\n\n\n\n\tvar SPECIES$9 = wellKnownSymbol$1('species');\n\n\tvar REPLACE_SUPPORTS_NAMED_GROUPS$1 = !fails$1(function () {\n\t // #replace needs built-in support for named groups.\n\t // #match works fine because it just return the exec results, even if it has\n\t // a \"grops\" property.\n\t var re = /./;\n\t re.exec = function () {\n\t var result = [];\n\t result.groups = { a: '7' };\n\t return result;\n\t };\n\t return ''.replace(re, '$<a>') !== '7';\n\t});\n\n\t// IE <= 11 replaces $0 with the whole match, as if it was $&\n\t// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\n\tvar REPLACE_KEEPS_$0 = (function () {\n\t return 'a'.replace(/./, '$0') === '$0';\n\t})();\n\n\tvar REPLACE = wellKnownSymbol$1('replace');\n\t// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\n\tvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n\t if (/./[REPLACE]) {\n\t return /./[REPLACE]('a', '$0') === '';\n\t }\n\t return false;\n\t})();\n\n\t// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n\t// Weex JS has frozen built-in prototypes, so use try / catch wrapper\n\tvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC$1 = !fails$1(function () {\n\t var re = /(?:)/;\n\t var originalExec = re.exec;\n\t re.exec = function () { return originalExec.apply(this, arguments); };\n\t var result = 'ab'.split(re);\n\t return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n\t});\n\n\tvar fixRegexpWellKnownSymbolLogic$1 = function (KEY, length, exec, sham) {\n\t var SYMBOL = wellKnownSymbol$1(KEY);\n\n\t var DELEGATES_TO_SYMBOL = !fails$1(function () {\n\t // String methods call symbol-named RegEp methods\n\t var O = {};\n\t O[SYMBOL] = function () { return 7; };\n\t return ''[KEY](O) != 7;\n\t });\n\n\t var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () {\n\t // Symbol-named RegExp methods call .exec\n\t var execCalled = false;\n\t var re = /a/;\n\n\t if (KEY === 'split') {\n\t // We can't use real regex here since it causes deoptimization\n\t // and serious performance degradation in V8\n\t // https://github.com/zloirock/core-js/issues/306\n\t re = {};\n\t // RegExp[@@split] doesn't call the regex's exec method, but first creates\n\t // a new one. We need to return the patched regex when creating the new one.\n\t re.constructor = {};\n\t re.constructor[SPECIES$9] = function () { return re; };\n\t re.flags = '';\n\t re[SYMBOL] = /./[SYMBOL];\n\t }\n\n\t re.exec = function () { execCalled = true; return null; };\n\n\t re[SYMBOL]('');\n\t return !execCalled;\n\t });\n\n\t if (\n\t !DELEGATES_TO_SYMBOL ||\n\t !DELEGATES_TO_EXEC ||\n\t (KEY === 'replace' && !(\n\t REPLACE_SUPPORTS_NAMED_GROUPS$1 &&\n\t REPLACE_KEEPS_$0 &&\n\t !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n\t )) ||\n\t (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC$1)\n\t ) {\n\t var nativeRegExpMethod = /./[SYMBOL];\n\t var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n\t if (regexp.exec === regexpExec$1) {\n\t if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n\t // The native String method already delegates to @@method (this\n\t // polyfilled function), leasing to infinite recursion.\n\t // We avoid it by directly calling the native @@method method.\n\t return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n\t }\n\t return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n\t }\n\t return { done: false };\n\t }, {\n\t REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n\t REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n\t });\n\t var stringMethod = methods[0];\n\t var regexMethod = methods[1];\n\n\t redefine$1(String.prototype, KEY, stringMethod);\n\t redefine$1(RegExp.prototype, SYMBOL, length == 2\n\t // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n\t // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n\t ? function (string, arg) { return regexMethod.call(string, this, arg); }\n\t // 21.2.5.6 RegExp.prototype[@@match](string)\n\t // 21.2.5.9 RegExp.prototype[@@search](string)\n\t : function (string) { return regexMethod.call(string, this); }\n\t );\n\t }\n\n\t if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n\t};\n\n\t// `SameValue` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-samevalue\n\tvar sameValue$1 = Object.is || function is(x, y) {\n\t // eslint-disable-next-line no-self-compare\n\t return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n\t};\n\n\t// `RegExpExec` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-regexpexec\n\tvar regexpExecAbstract$1 = function (R, S) {\n\t var exec = R.exec;\n\t if (typeof exec === 'function') {\n\t var result = exec.call(R, S);\n\t if (typeof result !== 'object') {\n\t throw TypeError('RegExp exec method returned something other than an Object or null');\n\t }\n\t return result;\n\t }\n\n\t if (classofRaw$1(R) !== 'RegExp') {\n\t throw TypeError('RegExp#exec called on incompatible receiver');\n\t }\n\n\t return regexpExec$1.call(R, S);\n\t};\n\n\t// @@search logic\n\tfixRegexpWellKnownSymbolLogic$1('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n\t return [\n\t // `String.prototype.search` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.search\n\t function search(regexp) {\n\t var O = requireObjectCoercible$1(this);\n\t var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n\t return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n\t },\n\t // `RegExp.prototype[@@search]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n\t function (regexp) {\n\t var res = maybeCallNative(nativeSearch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\n\t var previousLastIndex = rx.lastIndex;\n\t if (!sameValue$1(previousLastIndex, 0)) rx.lastIndex = 0;\n\t var result = regexpExecAbstract$1(rx, S);\n\t if (!sameValue$1(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n\t return result === null ? -1 : result.index;\n\t }\n\t ];\n\t});\n\n\tvar redefineAll$1 = function (target, src, options) {\n\t for (var key in src) redefine$1(target, key, src[key], options);\n\t return target;\n\t};\n\n\tvar freezing = !fails$1(function () {\n\t return Object.isExtensible(Object.preventExtensions({}));\n\t});\n\n\tvar internalMetadata = createCommonjsModule(function (module) {\n\tvar defineProperty = objectDefineProperty$1.f;\n\n\n\n\tvar METADATA = uid$1('meta');\n\tvar id = 0;\n\n\tvar isExtensible = Object.isExtensible || function () {\n\t return true;\n\t};\n\n\tvar setMetadata = function (it) {\n\t defineProperty(it, METADATA, { value: {\n\t objectID: 'O' + ++id, // object ID\n\t weakData: {} // weak collections IDs\n\t } });\n\t};\n\n\tvar fastKey = function (it, create) {\n\t // return a primitive with prefix\n\t if (!isObject$4(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\t if (!has$2(it, METADATA)) {\n\t // can't set metadata to uncaught frozen object\n\t if (!isExtensible(it)) return 'F';\n\t // not necessary to add metadata\n\t if (!create) return 'E';\n\t // add missing metadata\n\t setMetadata(it);\n\t // return object ID\n\t } return it[METADATA].objectID;\n\t};\n\n\tvar getWeakData = function (it, create) {\n\t if (!has$2(it, METADATA)) {\n\t // can't set metadata to uncaught frozen object\n\t if (!isExtensible(it)) return true;\n\t // not necessary to add metadata\n\t if (!create) return false;\n\t // add missing metadata\n\t setMetadata(it);\n\t // return the store of weak collections IDs\n\t } return it[METADATA].weakData;\n\t};\n\n\t// add metadata on freeze-family methods calling\n\tvar onFreeze = function (it) {\n\t if (freezing && meta.REQUIRED && isExtensible(it) && !has$2(it, METADATA)) setMetadata(it);\n\t return it;\n\t};\n\n\tvar meta = module.exports = {\n\t REQUIRED: false,\n\t fastKey: fastKey,\n\t getWeakData: getWeakData,\n\t onFreeze: onFreeze\n\t};\n\n\thiddenKeys$2[METADATA] = true;\n\t});\n\tvar internalMetadata_1 = internalMetadata.REQUIRED;\n\tvar internalMetadata_2 = internalMetadata.fastKey;\n\tvar internalMetadata_3 = internalMetadata.getWeakData;\n\tvar internalMetadata_4 = internalMetadata.onFreeze;\n\n\tvar iterate_1 = createCommonjsModule(function (module) {\n\tvar Result = function (stopped, result) {\n\t this.stopped = stopped;\n\t this.result = result;\n\t};\n\n\tvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n\t var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1);\n\t var iterator, iterFn, index, length, result, next, step;\n\n\t if (IS_ITERATOR) {\n\t iterator = iterable;\n\t } else {\n\t iterFn = getIteratorMethod$1(iterable);\n\t if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n\t // optimisation for array iterators\n\t if (isArrayIteratorMethod$1(iterFn)) {\n\t for (index = 0, length = toLength$1(iterable.length); length > index; index++) {\n\t result = AS_ENTRIES\n\t ? boundFunction(anObject$1(step = iterable[index])[0], step[1])\n\t : boundFunction(iterable[index]);\n\t if (result && result instanceof Result) return result;\n\t } return new Result(false);\n\t }\n\t iterator = iterFn.call(iterable);\n\t }\n\n\t next = iterator.next;\n\t while (!(step = next.call(iterator)).done) {\n\t result = callWithSafeIterationClosing$1(iterator, boundFunction, step.value, AS_ENTRIES);\n\t if (typeof result == 'object' && result && result instanceof Result) return result;\n\t } return new Result(false);\n\t};\n\n\titerate.stop = function (result) {\n\t return new Result(true, result);\n\t};\n\t});\n\n\tvar anInstance$1 = function (it, Constructor, name) {\n\t if (!(it instanceof Constructor)) {\n\t throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n\t } return it;\n\t};\n\n\tvar collection = function (CONSTRUCTOR_NAME, wrapper, common) {\n\t var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n\t var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n\t var ADDER = IS_MAP ? 'set' : 'add';\n\t var NativeConstructor = global_1$1[CONSTRUCTOR_NAME];\n\t var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n\t var Constructor = NativeConstructor;\n\t var exported = {};\n\n\t var fixMethod = function (KEY) {\n\t var nativeMethod = NativePrototype[KEY];\n\t redefine$1(NativePrototype, KEY,\n\t KEY == 'add' ? function add(value) {\n\t nativeMethod.call(this, value === 0 ? 0 : value);\n\t return this;\n\t } : KEY == 'delete' ? function (key) {\n\t return IS_WEAK && !isObject$4(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : KEY == 'get' ? function get(key) {\n\t return IS_WEAK && !isObject$4(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : KEY == 'has' ? function has(key) {\n\t return IS_WEAK && !isObject$4(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : function set(key, value) {\n\t nativeMethod.call(this, key === 0 ? 0 : key, value);\n\t return this;\n\t }\n\t );\n\t };\n\n\t // eslint-disable-next-line max-len\n\t if (isForced_1$1(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails$1(function () {\n\t new NativeConstructor().entries().next();\n\t })))) {\n\t // create collection constructor\n\t Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n\t internalMetadata.REQUIRED = true;\n\t } else if (isForced_1$1(CONSTRUCTOR_NAME, true)) {\n\t var instance = new Constructor();\n\t // early implementations not supports chaining\n\t var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n\t // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n\t var THROWS_ON_PRIMITIVES = fails$1(function () { instance.has(1); });\n\t // most early implementations doesn't supports iterables, most modern - not close it correctly\n\t // eslint-disable-next-line no-new\n\t var ACCEPT_ITERABLES = checkCorrectnessOfIteration$1(function (iterable) { new NativeConstructor(iterable); });\n\t // for early implementations -0 and +0 not the same\n\t var BUGGY_ZERO = !IS_WEAK && fails$1(function () {\n\t // V8 ~ Chromium 42- fails only with 5+ elements\n\t var $instance = new NativeConstructor();\n\t var index = 5;\n\t while (index--) $instance[ADDER](index, index);\n\t return !$instance.has(-0);\n\t });\n\n\t if (!ACCEPT_ITERABLES) {\n\t Constructor = wrapper(function (dummy, iterable) {\n\t anInstance$1(dummy, Constructor, CONSTRUCTOR_NAME);\n\t var that = inheritIfRequired$1(new NativeConstructor(), dummy, Constructor);\n\t if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP);\n\t return that;\n\t });\n\t Constructor.prototype = NativePrototype;\n\t NativePrototype.constructor = Constructor;\n\t }\n\n\t if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n\t fixMethod('delete');\n\t fixMethod('has');\n\t IS_MAP && fixMethod('get');\n\t }\n\n\t if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n\t // weak collections should not contains .clear method\n\t if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n\t }\n\n\t exported[CONSTRUCTOR_NAME] = Constructor;\n\t _export$1({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n\t setToStringTag$1(Constructor, CONSTRUCTOR_NAME);\n\n\t if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n\t return Constructor;\n\t};\n\n\tvar getWeakData = internalMetadata.getWeakData;\n\n\n\n\n\n\n\n\n\tvar setInternalState$8 = internalState$1.set;\n\tvar internalStateGetterFor = internalState$1.getterFor;\n\tvar find$1 = arrayIteration.find;\n\tvar findIndex = arrayIteration.findIndex;\n\tvar id$2 = 0;\n\n\t// fallback for uncaught frozen keys\n\tvar uncaughtFrozenStore = function (store) {\n\t return store.frozen || (store.frozen = new UncaughtFrozenStore());\n\t};\n\n\tvar UncaughtFrozenStore = function () {\n\t this.entries = [];\n\t};\n\n\tvar findUncaughtFrozen = function (store, key) {\n\t return find$1(store.entries, function (it) {\n\t return it[0] === key;\n\t });\n\t};\n\n\tUncaughtFrozenStore.prototype = {\n\t get: function (key) {\n\t var entry = findUncaughtFrozen(this, key);\n\t if (entry) return entry[1];\n\t },\n\t has: function (key) {\n\t return !!findUncaughtFrozen(this, key);\n\t },\n\t set: function (key, value) {\n\t var entry = findUncaughtFrozen(this, key);\n\t if (entry) entry[1] = value;\n\t else this.entries.push([key, value]);\n\t },\n\t 'delete': function (key) {\n\t var index = findIndex(this.entries, function (it) {\n\t return it[0] === key;\n\t });\n\t if (~index) this.entries.splice(index, 1);\n\t return !!~index;\n\t }\n\t};\n\n\tvar collectionWeak = {\n\t getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n\t var C = wrapper(function (that, iterable) {\n\t anInstance$1(that, C, CONSTRUCTOR_NAME);\n\t setInternalState$8(that, {\n\t type: CONSTRUCTOR_NAME,\n\t id: id$2++,\n\t frozen: undefined\n\t });\n\t if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP);\n\t });\n\n\t var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n\t var define = function (that, key, value) {\n\t var state = getInternalState(that);\n\t var data = getWeakData(anObject$1(key), true);\n\t if (data === true) uncaughtFrozenStore(state).set(key, value);\n\t else data[state.id] = value;\n\t return that;\n\t };\n\n\t redefineAll$1(C.prototype, {\n\t // 23.3.3.2 WeakMap.prototype.delete(key)\n\t // 23.4.3.3 WeakSet.prototype.delete(value)\n\t 'delete': function (key) {\n\t var state = getInternalState(this);\n\t if (!isObject$4(key)) return false;\n\t var data = getWeakData(key);\n\t if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n\t return data && has$2(data, state.id) && delete data[state.id];\n\t },\n\t // 23.3.3.4 WeakMap.prototype.has(key)\n\t // 23.4.3.4 WeakSet.prototype.has(value)\n\t has: function has(key) {\n\t var state = getInternalState(this);\n\t if (!isObject$4(key)) return false;\n\t var data = getWeakData(key);\n\t if (data === true) return uncaughtFrozenStore(state).has(key);\n\t return data && has$2(data, state.id);\n\t }\n\t });\n\n\t redefineAll$1(C.prototype, IS_MAP ? {\n\t // 23.3.3.3 WeakMap.prototype.get(key)\n\t get: function get(key) {\n\t var state = getInternalState(this);\n\t if (isObject$4(key)) {\n\t var data = getWeakData(key);\n\t if (data === true) return uncaughtFrozenStore(state).get(key);\n\t return data ? data[state.id] : undefined;\n\t }\n\t },\n\t // 23.3.3.5 WeakMap.prototype.set(key, value)\n\t set: function set(key, value) {\n\t return define(this, key, value);\n\t }\n\t } : {\n\t // 23.4.3.1 WeakSet.prototype.add(value)\n\t add: function add(value) {\n\t return define(this, value, true);\n\t }\n\t });\n\n\t return C;\n\t }\n\t};\n\n\tvar es_weakMap = createCommonjsModule(function (module) {\n\n\n\n\n\n\n\tvar enforceIternalState = internalState$1.enforce;\n\n\n\tvar IS_IE11 = !global_1$1.ActiveXObject && 'ActiveXObject' in global_1$1;\n\tvar isExtensible = Object.isExtensible;\n\tvar InternalWeakMap;\n\n\tvar wrapper = function (init) {\n\t return function WeakMap() {\n\t return init(this, arguments.length ? arguments[0] : undefined);\n\t };\n\t};\n\n\t// `WeakMap` constructor\n\t// https://tc39.github.io/ecma262/#sec-weakmap-constructor\n\tvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n\t// IE11 WeakMap frozen keys fix\n\t// We can't use feature detection because it crash some old IE builds\n\t// https://github.com/zloirock/core-js/issues/485\n\tif (nativeWeakMap$1 && IS_IE11) {\n\t InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n\t internalMetadata.REQUIRED = true;\n\t var WeakMapPrototype = $WeakMap.prototype;\n\t var nativeDelete = WeakMapPrototype['delete'];\n\t var nativeHas = WeakMapPrototype.has;\n\t var nativeGet = WeakMapPrototype.get;\n\t var nativeSet = WeakMapPrototype.set;\n\t redefineAll$1(WeakMapPrototype, {\n\t 'delete': function (key) {\n\t if (isObject$4(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t return nativeDelete.call(this, key) || state.frozen['delete'](key);\n\t } return nativeDelete.call(this, key);\n\t },\n\t has: function has(key) {\n\t if (isObject$4(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t return nativeHas.call(this, key) || state.frozen.has(key);\n\t } return nativeHas.call(this, key);\n\t },\n\t get: function get(key) {\n\t if (isObject$4(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n\t } return nativeGet.call(this, key);\n\t },\n\t set: function set(key, value) {\n\t if (isObject$4(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n\t } else nativeSet.call(this, key, value);\n\t return this;\n\t }\n\t });\n\t}\n\t});\n\n\t// iterable DOM collections\n\t// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\n\tvar domIterables$1 = {\n\t CSSRuleList: 0,\n\t CSSStyleDeclaration: 0,\n\t CSSValueList: 0,\n\t ClientRectList: 0,\n\t DOMRectList: 0,\n\t DOMStringList: 0,\n\t DOMTokenList: 1,\n\t DataTransferItemList: 0,\n\t FileList: 0,\n\t HTMLAllCollection: 0,\n\t HTMLCollection: 0,\n\t HTMLFormElement: 0,\n\t HTMLSelectElement: 0,\n\t MediaList: 0,\n\t MimeTypeArray: 0,\n\t NamedNodeMap: 0,\n\t NodeList: 1,\n\t PaintRequestList: 0,\n\t Plugin: 0,\n\t PluginArray: 0,\n\t SVGLengthList: 0,\n\t SVGNumberList: 0,\n\t SVGPathSegList: 0,\n\t SVGPointList: 0,\n\t SVGStringList: 0,\n\t SVGTransformList: 0,\n\t SourceBufferList: 0,\n\t StyleSheetList: 0,\n\t TextTrackCueList: 0,\n\t TextTrackList: 0,\n\t TouchList: 0\n\t};\n\n\tvar ITERATOR$e = wellKnownSymbol$1('iterator');\n\tvar TO_STRING_TAG$8 = wellKnownSymbol$1('toStringTag');\n\tvar ArrayValues$1 = es_array_iterator$1.values;\n\n\tfor (var COLLECTION_NAME$2 in domIterables$1) {\n\t var Collection$2 = global_1$1[COLLECTION_NAME$2];\n\t var CollectionPrototype$2 = Collection$2 && Collection$2.prototype;\n\t if (CollectionPrototype$2) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$2[ITERATOR$e] !== ArrayValues$1) try {\n\t createNonEnumerableProperty(CollectionPrototype$2, ITERATOR$e, ArrayValues$1);\n\t } catch (error) {\n\t CollectionPrototype$2[ITERATOR$e] = ArrayValues$1;\n\t }\n\t if (!CollectionPrototype$2[TO_STRING_TAG$8]) {\n\t createNonEnumerableProperty(CollectionPrototype$2, TO_STRING_TAG$8, COLLECTION_NAME$2);\n\t }\n\t if (domIterables$1[COLLECTION_NAME$2]) for (var METHOD_NAME$1 in es_array_iterator$1) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$2[METHOD_NAME$1] !== es_array_iterator$1[METHOD_NAME$1]) try {\n\t createNonEnumerableProperty(CollectionPrototype$2, METHOD_NAME$1, es_array_iterator$1[METHOD_NAME$1]);\n\t } catch (error) {\n\t CollectionPrototype$2[METHOD_NAME$1] = es_array_iterator$1[METHOD_NAME$1];\n\t }\n\t }\n\t }\n\t}\n\n\tvar $every = arrayIteration.every;\n\n\n\n\tvar STRICT_METHOD$1 = arrayMethodIsStrict('every');\n\tvar USES_TO_LENGTH$4 = arrayMethodUsesToLength('every');\n\n\t// `Array.prototype.every` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.every\n\t_export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$1 || !USES_TO_LENGTH$4 }, {\n\t every: function every(callbackfn /* , thisArg */) {\n\t return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tvar $forEach = arrayIteration.forEach;\n\n\n\n\tvar STRICT_METHOD$2 = arrayMethodIsStrict('forEach');\n\tvar USES_TO_LENGTH$5 = arrayMethodUsesToLength('forEach');\n\n\t// `Array.prototype.forEach` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\tvar arrayForEach$2 = (!STRICT_METHOD$2 || !USES_TO_LENGTH$5) ? function forEach(callbackfn /* , thisArg */) {\n\t return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t} : [].forEach;\n\n\t// `Array.prototype.forEach` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t_export$1({ target: 'Array', proto: true, forced: [].forEach != arrayForEach$2 }, {\n\t forEach: arrayForEach$2\n\t});\n\n\tvar $indexOf = arrayIncludes$2.indexOf;\n\n\n\n\tvar nativeIndexOf$1 = [].indexOf;\n\n\tvar NEGATIVE_ZERO$2 = !!nativeIndexOf$1 && 1 / [1].indexOf(1, -0) < 0;\n\tvar STRICT_METHOD$3 = arrayMethodIsStrict('indexOf');\n\tvar USES_TO_LENGTH$6 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n\t// `Array.prototype.indexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t_export$1({ target: 'Array', proto: true, forced: NEGATIVE_ZERO$2 || !STRICT_METHOD$3 || !USES_TO_LENGTH$6 }, {\n\t indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n\t return NEGATIVE_ZERO$2\n\t // convert -0 to +0\n\t ? nativeIndexOf$1.apply(this, arguments) || 0\n\t : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tvar nativeAssign$1 = Object.assign;\n\tvar defineProperty$a = Object.defineProperty;\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\tvar objectAssign$1 = !nativeAssign$1 || fails$1(function () {\n\t // should have correct order of operations (Edge bug)\n\t if (descriptors$1 && nativeAssign$1({ b: 1 }, nativeAssign$1(defineProperty$a({}, 'a', {\n\t enumerable: true,\n\t get: function () {\n\t defineProperty$a(this, 'b', {\n\t value: 3,\n\t enumerable: false\n\t });\n\t }\n\t }), { b: 2 })).b !== 1) return true;\n\t // should work with symbols and should have deterministic property order (V8 bug)\n\t var A = {};\n\t var B = {};\n\t // eslint-disable-next-line no-undef\n\t var symbol = Symbol();\n\t var alphabet = 'abcdefghijklmnopqrst';\n\t A[symbol] = 7;\n\t alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n\t return nativeAssign$1({}, A)[symbol] != 7 || objectKeys$1(nativeAssign$1({}, B)).join('') != alphabet;\n\t}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n\t var T = toObject$1(target);\n\t var argumentsLength = arguments.length;\n\t var index = 1;\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols$1.f;\n\t var propertyIsEnumerable = objectPropertyIsEnumerable$1.f;\n\t while (argumentsLength > index) {\n\t var S = indexedObject$1(arguments[index++]);\n\t var keys = getOwnPropertySymbols ? objectKeys$1(S).concat(getOwnPropertySymbols(S)) : objectKeys$1(S);\n\t var length = keys.length;\n\t var j = 0;\n\t var key;\n\t while (length > j) {\n\t key = keys[j++];\n\t if (!descriptors$1 || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n\t }\n\t } return T;\n\t} : nativeAssign$1;\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\t_export$1({ target: 'Object', stat: true, forced: Object.assign !== objectAssign$1 }, {\n\t assign: objectAssign$1\n\t});\n\n\tvar SPECIES$a = wellKnownSymbol$1('species');\n\n\t// `SpeciesConstructor` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-speciesconstructor\n\tvar speciesConstructor$1 = function (O, defaultConstructor) {\n\t var C = anObject$1(O).constructor;\n\t var S;\n\t return C === undefined || (S = anObject$1(C)[SPECIES$a]) == undefined ? defaultConstructor : aFunction$3(S);\n\t};\n\n\tvar charAt$1 = stringMultibyte.charAt;\n\n\t// `AdvanceStringIndex` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-advancestringindex\n\tvar advanceStringIndex$1 = function (S, index, unicode) {\n\t return index + (unicode ? charAt$1(S, index).length : 1);\n\t};\n\n\tvar arrayPush$1 = [].push;\n\tvar min$7 = Math.min;\n\tvar MAX_UINT32$1 = 0xFFFFFFFF;\n\n\t// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\n\tvar SUPPORTS_Y$1 = !fails$1(function () { return !RegExp(MAX_UINT32$1, 'y'); });\n\n\t// @@split logic\n\tfixRegexpWellKnownSymbolLogic$1('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n\t var internalSplit;\n\t if (\n\t 'abbc'.split(/(b)*/)[1] == 'c' ||\n\t 'test'.split(/(?:)/, -1).length != 4 ||\n\t 'ab'.split(/(?:ab)*/).length != 2 ||\n\t '.'.split(/(.?)(.?)/).length != 4 ||\n\t '.'.split(/()()/).length > 1 ||\n\t ''.split(/.?/).length\n\t ) {\n\t // based on es5-shim implementation, need to rework it\n\t internalSplit = function (separator, limit) {\n\t var string = String(requireObjectCoercible$1(this));\n\t var lim = limit === undefined ? MAX_UINT32$1 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (separator === undefined) return [string];\n\t // If `separator` is not a regex, use native split\n\t if (!isRegexp$1(separator)) {\n\t return nativeSplit.call(string, separator, lim);\n\t }\n\t var output = [];\n\t var flags = (separator.ignoreCase ? 'i' : '') +\n\t (separator.multiline ? 'm' : '') +\n\t (separator.unicode ? 'u' : '') +\n\t (separator.sticky ? 'y' : '');\n\t var lastLastIndex = 0;\n\t // Make `global` and avoid `lastIndex` issues by working with a copy\n\t var separatorCopy = new RegExp(separator.source, flags + 'g');\n\t var match, lastIndex, lastLength;\n\t while (match = regexpExec$1.call(separatorCopy, string)) {\n\t lastIndex = separatorCopy.lastIndex;\n\t if (lastIndex > lastLastIndex) {\n\t output.push(string.slice(lastLastIndex, match.index));\n\t if (match.length > 1 && match.index < string.length) arrayPush$1.apply(output, match.slice(1));\n\t lastLength = match[0].length;\n\t lastLastIndex = lastIndex;\n\t if (output.length >= lim) break;\n\t }\n\t if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n\t }\n\t if (lastLastIndex === string.length) {\n\t if (lastLength || !separatorCopy.test('')) output.push('');\n\t } else output.push(string.slice(lastLastIndex));\n\t return output.length > lim ? output.slice(0, lim) : output;\n\t };\n\t // Chakra, V8\n\t } else if ('0'.split(undefined, 0).length) {\n\t internalSplit = function (separator, limit) {\n\t return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n\t };\n\t } else internalSplit = nativeSplit;\n\n\t return [\n\t // `String.prototype.split` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.split\n\t function split(separator, limit) {\n\t var O = requireObjectCoercible$1(this);\n\t var splitter = separator == undefined ? undefined : separator[SPLIT];\n\t return splitter !== undefined\n\t ? splitter.call(separator, O, limit)\n\t : internalSplit.call(String(O), separator, limit);\n\t },\n\t // `RegExp.prototype[@@split]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n\t //\n\t // NOTE: This cannot be properly polyfilled in engines that don't support\n\t // the 'y' flag.\n\t function (regexp, limit) {\n\t var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n\t if (res.done) return res.value;\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\t var C = speciesConstructor$1(rx, RegExp);\n\n\t var unicodeMatching = rx.unicode;\n\t var flags = (rx.ignoreCase ? 'i' : '') +\n\t (rx.multiline ? 'm' : '') +\n\t (rx.unicode ? 'u' : '') +\n\t (SUPPORTS_Y$1 ? 'y' : 'g');\n\n\t // ^(? + rx + ) is needed, in combination with some S slicing, to\n\t // simulate the 'y' flag.\n\t var splitter = new C(SUPPORTS_Y$1 ? rx : '^(?:' + rx.source + ')', flags);\n\t var lim = limit === undefined ? MAX_UINT32$1 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (S.length === 0) return regexpExecAbstract$1(splitter, S) === null ? [S] : [];\n\t var p = 0;\n\t var q = 0;\n\t var A = [];\n\t while (q < S.length) {\n\t splitter.lastIndex = SUPPORTS_Y$1 ? q : 0;\n\t var z = regexpExecAbstract$1(splitter, SUPPORTS_Y$1 ? S : S.slice(q));\n\t var e;\n\t if (\n\t z === null ||\n\t (e = min$7(toLength$1(splitter.lastIndex + (SUPPORTS_Y$1 ? 0 : q)), S.length)) === p\n\t ) {\n\t q = advanceStringIndex$1(S, q, unicodeMatching);\n\t } else {\n\t A.push(S.slice(p, q));\n\t if (A.length === lim) return A;\n\t for (var i = 1; i <= z.length - 1; i++) {\n\t A.push(z[i]);\n\t if (A.length === lim) return A;\n\t }\n\t q = p = e;\n\t }\n\t }\n\t A.push(S.slice(p));\n\t return A;\n\t }\n\t ];\n\t}, !SUPPORTS_Y$1);\n\n\tvar non = '\\u200B\\u0085\\u180E';\n\n\t// check that a method works with the correct list\n\t// of whitespaces and has a correct name\n\tvar stringTrimForced = function (METHOD_NAME) {\n\t return fails$1(function () {\n\t return !!whitespaces$1[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces$1[METHOD_NAME].name !== METHOD_NAME;\n\t });\n\t};\n\n\tvar $trim = stringTrim$1.trim;\n\n\n\t// `String.prototype.trim` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n\t_export$1({ target: 'String', proto: true, forced: stringTrimForced('trim') }, {\n\t trim: function trim() {\n\t return $trim(this);\n\t }\n\t});\n\n\tfor (var COLLECTION_NAME$3 in domIterables$1) {\n\t var Collection$3 = global_1$1[COLLECTION_NAME$3];\n\t var CollectionPrototype$3 = Collection$3 && Collection$3.prototype;\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$3 && CollectionPrototype$3.forEach !== arrayForEach$2) try {\n\t createNonEnumerableProperty(CollectionPrototype$3, 'forEach', arrayForEach$2);\n\t } catch (error) {\n\t CollectionPrototype$3.forEach = arrayForEach$2;\n\t }\n\t}\n\n\tvar ITERATOR$f = wellKnownSymbol$1('iterator');\n\n\tvar nativeUrl$1 = !fails$1(function () {\n\t var url = new URL('b?a=1&b=2&c=3', 'http://a');\n\t var searchParams = url.searchParams;\n\t var result = '';\n\t url.pathname = 'c%20d';\n\t searchParams.forEach(function (value, key) {\n\t searchParams['delete']('b');\n\t result += key + value;\n\t });\n\t return (isPure$1 && !url.toJSON)\n\t || !searchParams.sort\n\t || url.href !== 'http://a/c%20d?a=1&c=3'\n\t || searchParams.get('c') !== '3'\n\t || String(new URLSearchParams('?a=1')) !== 'a=1'\n\t || !searchParams[ITERATOR$f]\n\t // throws in Edge\n\t || new URL('https://a@b').username !== 'a'\n\t || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n\t // not punycoded in Edge\n\t || new URL('http://тест').host !== 'xn--e1aybc'\n\t // not escaped in Chrome 62-\n\t || new URL('http://a#б').hash !== '#%D0%B1'\n\t // fails in Chrome 66-\n\t || result !== 'a1c3'\n\t // throws in Safari\n\t || new URL('http://x', undefined).host !== 'x';\n\t});\n\n\t// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\n\tvar maxInt$1 = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\tvar base$1 = 36;\n\tvar tMin$1 = 1;\n\tvar tMax$1 = 26;\n\tvar skew$1 = 38;\n\tvar damp$1 = 700;\n\tvar initialBias$1 = 72;\n\tvar initialN$1 = 128; // 0x80\n\tvar delimiter$1 = '-'; // '\\x2D'\n\tvar regexNonASCII$1 = /[^\\0-\\u007E]/; // non-ASCII chars\n\tvar regexSeparators$1 = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\tvar OVERFLOW_ERROR$1 = 'Overflow: input needs wider integers to process';\n\tvar baseMinusTMin$1 = base$1 - tMin$1;\n\tvar floor$4 = Math.floor;\n\tvar stringFromCharCode$1 = String.fromCharCode;\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t */\n\tvar ucs2decode$1 = function (string) {\n\t var output = [];\n\t var counter = 0;\n\t var length = string.length;\n\t while (counter < length) {\n\t var value = string.charCodeAt(counter++);\n\t if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t // It's a high surrogate, and there is a next character.\n\t var extra = string.charCodeAt(counter++);\n\t if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t } else {\n\t // It's an unmatched surrogate; only append this code unit, in case the\n\t // next code unit is the high surrogate of a surrogate pair.\n\t output.push(value);\n\t counter--;\n\t }\n\t } else {\n\t output.push(value);\n\t }\n\t }\n\t return output;\n\t};\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t */\n\tvar digitToBasic$1 = function (digit) {\n\t // 0..25 map to ASCII a..z or A..Z\n\t // 26..35 map to ASCII 0..9\n\t return digit + 22 + 75 * (digit < 26);\n\t};\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t */\n\tvar adapt$1 = function (delta, numPoints, firstTime) {\n\t var k = 0;\n\t delta = firstTime ? floor$4(delta / damp$1) : delta >> 1;\n\t delta += floor$4(delta / numPoints);\n\t for (; delta > baseMinusTMin$1 * tMax$1 >> 1; k += base$1) {\n\t delta = floor$4(delta / baseMinusTMin$1);\n\t }\n\t return floor$4(k + (baseMinusTMin$1 + 1) * delta / (delta + skew$1));\n\t};\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t */\n\t// eslint-disable-next-line max-statements\n\tvar encode$1 = function (input) {\n\t var output = [];\n\n\t // Convert the input in UCS-2 to an array of Unicode code points.\n\t input = ucs2decode$1(input);\n\n\t // Cache the length.\n\t var inputLength = input.length;\n\n\t // Initialize the state.\n\t var n = initialN$1;\n\t var delta = 0;\n\t var bias = initialBias$1;\n\t var i, currentValue;\n\n\t // Handle the basic code points.\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < 0x80) {\n\t output.push(stringFromCharCode$1(currentValue));\n\t }\n\t }\n\n\t var basicLength = output.length; // number of basic code points.\n\t var handledCPCount = basicLength; // number of code points that have been handled;\n\n\t // Finish the basic string with a delimiter unless it's empty.\n\t if (basicLength) {\n\t output.push(delimiter$1);\n\t }\n\n\t // Main encoding loop:\n\t while (handledCPCount < inputLength) {\n\t // All non-basic code points < n have been handled already. Find the next larger one:\n\t var m = maxInt$1;\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue >= n && currentValue < m) {\n\t m = currentValue;\n\t }\n\t }\n\n\t // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n\t var handledCPCountPlusOne = handledCPCount + 1;\n\t if (m - n > floor$4((maxInt$1 - delta) / handledCPCountPlusOne)) {\n\t throw RangeError(OVERFLOW_ERROR$1);\n\t }\n\n\t delta += (m - n) * handledCPCountPlusOne;\n\t n = m;\n\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < n && ++delta > maxInt$1) {\n\t throw RangeError(OVERFLOW_ERROR$1);\n\t }\n\t if (currentValue == n) {\n\t // Represent delta as a generalized variable-length integer.\n\t var q = delta;\n\t for (var k = base$1; /* no condition */; k += base$1) {\n\t var t = k <= bias ? tMin$1 : (k >= bias + tMax$1 ? tMax$1 : k - bias);\n\t if (q < t) break;\n\t var qMinusT = q - t;\n\t var baseMinusT = base$1 - t;\n\t output.push(stringFromCharCode$1(digitToBasic$1(t + qMinusT % baseMinusT)));\n\t q = floor$4(qMinusT / baseMinusT);\n\t }\n\n\t output.push(stringFromCharCode$1(digitToBasic$1(q)));\n\t bias = adapt$1(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t delta = 0;\n\t ++handledCPCount;\n\t }\n\t }\n\n\t ++delta;\n\t ++n;\n\t }\n\t return output.join('');\n\t};\n\n\tvar stringPunycodeToAscii = function (input) {\n\t var encoded = [];\n\t var labels = input.toLowerCase().replace(regexSeparators$1, '\\u002E').split('.');\n\t var i, label;\n\t for (i = 0; i < labels.length; i++) {\n\t label = labels[i];\n\t encoded.push(regexNonASCII$1.test(label) ? 'xn--' + encode$1(label) : label);\n\t }\n\t return encoded.join('.');\n\t};\n\n\tvar getIterator$1 = function (it) {\n\t var iteratorMethod = getIteratorMethod$1(it);\n\t if (typeof iteratorMethod != 'function') {\n\t throw TypeError(String(it) + ' is not iterable');\n\t } return anObject$1(iteratorMethod.call(it));\n\t};\n\n\t// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tvar $fetch$1 = getBuiltIn$1('fetch');\n\tvar Headers$1 = getBuiltIn$1('Headers');\n\tvar ITERATOR$g = wellKnownSymbol$1('iterator');\n\tvar URL_SEARCH_PARAMS$1 = 'URLSearchParams';\n\tvar URL_SEARCH_PARAMS_ITERATOR$1 = URL_SEARCH_PARAMS$1 + 'Iterator';\n\tvar setInternalState$9 = internalState$1.set;\n\tvar getInternalParamsState$1 = internalState$1.getterFor(URL_SEARCH_PARAMS$1);\n\tvar getInternalIteratorState$1 = internalState$1.getterFor(URL_SEARCH_PARAMS_ITERATOR$1);\n\n\tvar plus$1 = /\\+/g;\n\tvar sequences$1 = Array(4);\n\n\tvar percentSequence$1 = function (bytes) {\n\t return sequences$1[bytes - 1] || (sequences$1[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n\t};\n\n\tvar percentDecode$1 = function (sequence) {\n\t try {\n\t return decodeURIComponent(sequence);\n\t } catch (error) {\n\t return sequence;\n\t }\n\t};\n\n\tvar deserialize$1 = function (it) {\n\t var result = it.replace(plus$1, ' ');\n\t var bytes = 4;\n\t try {\n\t return decodeURIComponent(result);\n\t } catch (error) {\n\t while (bytes) {\n\t result = result.replace(percentSequence$1(bytes--), percentDecode$1);\n\t }\n\t return result;\n\t }\n\t};\n\n\tvar find$2 = /[!'()~]|%20/g;\n\n\tvar replace$1 = {\n\t '!': '%21',\n\t \"'\": '%27',\n\t '(': '%28',\n\t ')': '%29',\n\t '~': '%7E',\n\t '%20': '+'\n\t};\n\n\tvar replacer$1 = function (match) {\n\t return replace$1[match];\n\t};\n\n\tvar serialize$1 = function (it) {\n\t return encodeURIComponent(it).replace(find$2, replacer$1);\n\t};\n\n\tvar parseSearchParams$1 = function (result, query) {\n\t if (query) {\n\t var attributes = query.split('&');\n\t var index = 0;\n\t var attribute, entry;\n\t while (index < attributes.length) {\n\t attribute = attributes[index++];\n\t if (attribute.length) {\n\t entry = attribute.split('=');\n\t result.push({\n\t key: deserialize$1(entry.shift()),\n\t value: deserialize$1(entry.join('='))\n\t });\n\t }\n\t }\n\t }\n\t};\n\n\tvar updateSearchParams$1 = function (query) {\n\t this.entries.length = 0;\n\t parseSearchParams$1(this.entries, query);\n\t};\n\n\tvar validateArgumentsLength$1 = function (passed, required) {\n\t if (passed < required) throw TypeError('Not enough arguments');\n\t};\n\n\tvar URLSearchParamsIterator$1 = createIteratorConstructor$1(function Iterator(params, kind) {\n\t setInternalState$9(this, {\n\t type: URL_SEARCH_PARAMS_ITERATOR$1,\n\t iterator: getIterator$1(getInternalParamsState$1(params).entries),\n\t kind: kind\n\t });\n\t}, 'Iterator', function next() {\n\t var state = getInternalIteratorState$1(this);\n\t var kind = state.kind;\n\t var step = state.iterator.next();\n\t var entry = step.value;\n\t if (!step.done) {\n\t step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n\t } return step;\n\t});\n\n\t// `URLSearchParams` constructor\n\t// https://url.spec.whatwg.org/#interface-urlsearchparams\n\tvar URLSearchParamsConstructor$1 = function URLSearchParams(/* init */) {\n\t anInstance$1(this, URLSearchParamsConstructor$1, URL_SEARCH_PARAMS$1);\n\t var init = arguments.length > 0 ? arguments[0] : undefined;\n\t var that = this;\n\t var entries = [];\n\t var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n\t setInternalState$9(that, {\n\t type: URL_SEARCH_PARAMS$1,\n\t entries: entries,\n\t updateURL: function () { /* empty */ },\n\t updateSearchParams: updateSearchParams$1\n\t });\n\n\t if (init !== undefined) {\n\t if (isObject$4(init)) {\n\t iteratorMethod = getIteratorMethod$1(init);\n\t if (typeof iteratorMethod === 'function') {\n\t iterator = iteratorMethod.call(init);\n\t next = iterator.next;\n\t while (!(step = next.call(iterator)).done) {\n\t entryIterator = getIterator$1(anObject$1(step.value));\n\t entryNext = entryIterator.next;\n\t if (\n\t (first = entryNext.call(entryIterator)).done ||\n\t (second = entryNext.call(entryIterator)).done ||\n\t !entryNext.call(entryIterator).done\n\t ) throw TypeError('Expected sequence with length 2');\n\t entries.push({ key: first.value + '', value: second.value + '' });\n\t }\n\t } else for (key in init) if (has$2(init, key)) entries.push({ key: key, value: init[key] + '' });\n\t } else {\n\t parseSearchParams$1(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n\t }\n\t }\n\t};\n\n\tvar URLSearchParamsPrototype$1 = URLSearchParamsConstructor$1.prototype;\n\n\tredefineAll$1(URLSearchParamsPrototype$1, {\n\t // `URLSearchParams.prototype.appent` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n\t append: function append(name, value) {\n\t validateArgumentsLength$1(arguments.length, 2);\n\t var state = getInternalParamsState$1(this);\n\t state.entries.push({ key: name + '', value: value + '' });\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.delete` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n\t 'delete': function (name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var state = getInternalParamsState$1(this);\n\t var entries = state.entries;\n\t var key = name + '';\n\t var index = 0;\n\t while (index < entries.length) {\n\t if (entries[index].key === key) entries.splice(index, 1);\n\t else index++;\n\t }\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.get` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n\t get: function get(name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var entries = getInternalParamsState$1(this).entries;\n\t var key = name + '';\n\t var index = 0;\n\t for (; index < entries.length; index++) {\n\t if (entries[index].key === key) return entries[index].value;\n\t }\n\t return null;\n\t },\n\t // `URLSearchParams.prototype.getAll` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n\t getAll: function getAll(name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var entries = getInternalParamsState$1(this).entries;\n\t var key = name + '';\n\t var result = [];\n\t var index = 0;\n\t for (; index < entries.length; index++) {\n\t if (entries[index].key === key) result.push(entries[index].value);\n\t }\n\t return result;\n\t },\n\t // `URLSearchParams.prototype.has` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n\t has: function has(name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var entries = getInternalParamsState$1(this).entries;\n\t var key = name + '';\n\t var index = 0;\n\t while (index < entries.length) {\n\t if (entries[index++].key === key) return true;\n\t }\n\t return false;\n\t },\n\t // `URLSearchParams.prototype.set` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n\t set: function set(name, value) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var state = getInternalParamsState$1(this);\n\t var entries = state.entries;\n\t var found = false;\n\t var key = name + '';\n\t var val = value + '';\n\t var index = 0;\n\t var entry;\n\t for (; index < entries.length; index++) {\n\t entry = entries[index];\n\t if (entry.key === key) {\n\t if (found) entries.splice(index--, 1);\n\t else {\n\t found = true;\n\t entry.value = val;\n\t }\n\t }\n\t }\n\t if (!found) entries.push({ key: key, value: val });\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.sort` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n\t sort: function sort() {\n\t var state = getInternalParamsState$1(this);\n\t var entries = state.entries;\n\t // Array#sort is not stable in some engines\n\t var slice = entries.slice();\n\t var entry, entriesIndex, sliceIndex;\n\t entries.length = 0;\n\t for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n\t entry = slice[sliceIndex];\n\t for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n\t if (entries[entriesIndex].key > entry.key) {\n\t entries.splice(entriesIndex, 0, entry);\n\t break;\n\t }\n\t }\n\t if (entriesIndex === sliceIndex) entries.push(entry);\n\t }\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.forEach` method\n\t forEach: function forEach(callback /* , thisArg */) {\n\t var entries = getInternalParamsState$1(this).entries;\n\t var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n\t var index = 0;\n\t var entry;\n\t while (index < entries.length) {\n\t entry = entries[index++];\n\t boundFunction(entry.value, entry.key, this);\n\t }\n\t },\n\t // `URLSearchParams.prototype.keys` method\n\t keys: function keys() {\n\t return new URLSearchParamsIterator$1(this, 'keys');\n\t },\n\t // `URLSearchParams.prototype.values` method\n\t values: function values() {\n\t return new URLSearchParamsIterator$1(this, 'values');\n\t },\n\t // `URLSearchParams.prototype.entries` method\n\t entries: function entries() {\n\t return new URLSearchParamsIterator$1(this, 'entries');\n\t }\n\t}, { enumerable: true });\n\n\t// `URLSearchParams.prototype[@@iterator]` method\n\tredefine$1(URLSearchParamsPrototype$1, ITERATOR$g, URLSearchParamsPrototype$1.entries);\n\n\t// `URLSearchParams.prototype.toString` method\n\t// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\n\tredefine$1(URLSearchParamsPrototype$1, 'toString', function toString() {\n\t var entries = getInternalParamsState$1(this).entries;\n\t var result = [];\n\t var index = 0;\n\t var entry;\n\t while (index < entries.length) {\n\t entry = entries[index++];\n\t result.push(serialize$1(entry.key) + '=' + serialize$1(entry.value));\n\t } return result.join('&');\n\t}, { enumerable: true });\n\n\tsetToStringTag$1(URLSearchParamsConstructor$1, URL_SEARCH_PARAMS$1);\n\n\t_export$1({ global: true, forced: !nativeUrl$1 }, {\n\t URLSearchParams: URLSearchParamsConstructor$1\n\t});\n\n\t// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n\t// https://github.com/zloirock/core-js/issues/674\n\tif (!nativeUrl$1 && typeof $fetch$1 == 'function' && typeof Headers$1 == 'function') {\n\t _export$1({ global: true, enumerable: true, forced: true }, {\n\t fetch: function fetch(input /* , init */) {\n\t var args = [input];\n\t var init, body, headers;\n\t if (arguments.length > 1) {\n\t init = arguments[1];\n\t if (isObject$4(init)) {\n\t body = init.body;\n\t if (classof$1(body) === URL_SEARCH_PARAMS$1) {\n\t headers = init.headers ? new Headers$1(init.headers) : new Headers$1();\n\t if (!headers.has('content-type')) {\n\t headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n\t }\n\t init = objectCreate$1(init, {\n\t body: createPropertyDescriptor$1(0, String(body)),\n\t headers: createPropertyDescriptor$1(0, headers)\n\t });\n\t }\n\t }\n\t args.push(init);\n\t } return $fetch$1.apply(this, args);\n\t }\n\t });\n\t}\n\n\tvar web_urlSearchParams$1 = {\n\t URLSearchParams: URLSearchParamsConstructor$1,\n\t getState: getInternalParamsState$1\n\t};\n\n\t// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n\n\n\n\n\n\n\n\n\n\n\n\tvar codeAt = stringMultibyte.codeAt;\n\n\n\n\n\n\tvar NativeURL$1 = global_1$1.URL;\n\tvar URLSearchParams$2 = web_urlSearchParams$1.URLSearchParams;\n\tvar getInternalSearchParamsState$1 = web_urlSearchParams$1.getState;\n\tvar setInternalState$a = internalState$1.set;\n\tvar getInternalURLState$1 = internalState$1.getterFor('URL');\n\tvar floor$5 = Math.floor;\n\tvar pow$1 = Math.pow;\n\n\tvar INVALID_AUTHORITY$1 = 'Invalid authority';\n\tvar INVALID_SCHEME$1 = 'Invalid scheme';\n\tvar INVALID_HOST$1 = 'Invalid host';\n\tvar INVALID_PORT$1 = 'Invalid port';\n\n\tvar ALPHA$1 = /[A-Za-z]/;\n\tvar ALPHANUMERIC$1 = /[\\d+\\-.A-Za-z]/;\n\tvar DIGIT$1 = /\\d/;\n\tvar HEX_START$1 = /^(0x|0X)/;\n\tvar OCT$1 = /^[0-7]+$/;\n\tvar DEC$1 = /^\\d+$/;\n\tvar HEX$1 = /^[\\dA-Fa-f]+$/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT$1 = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT$1 = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE$1 = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n\t// eslint-disable-next-line no-control-regex\n\tvar TAB_AND_NEW_LINE$1 = /[\\u0009\\u000A\\u000D]/g;\n\tvar EOF$1;\n\n\tvar parseHost$1 = function (url, input) {\n\t var result, codePoints, index;\n\t if (input.charAt(0) == '[') {\n\t if (input.charAt(input.length - 1) != ']') return INVALID_HOST$1;\n\t result = parseIPv6$1(input.slice(1, -1));\n\t if (!result) return INVALID_HOST$1;\n\t url.host = result;\n\t // opaque host\n\t } else if (!isSpecial$1(url)) {\n\t if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT$1.test(input)) return INVALID_HOST$1;\n\t result = '';\n\t codePoints = arrayFrom$1(input);\n\t for (index = 0; index < codePoints.length; index++) {\n\t result += percentEncode$1(codePoints[index], C0ControlPercentEncodeSet$1);\n\t }\n\t url.host = result;\n\t } else {\n\t input = stringPunycodeToAscii(input);\n\t if (FORBIDDEN_HOST_CODE_POINT$1.test(input)) return INVALID_HOST$1;\n\t result = parseIPv4$1(input);\n\t if (result === null) return INVALID_HOST$1;\n\t url.host = result;\n\t }\n\t};\n\n\tvar parseIPv4$1 = function (input) {\n\t var parts = input.split('.');\n\t var partsLength, numbers, index, part, radix, number, ipv4;\n\t if (parts.length && parts[parts.length - 1] == '') {\n\t parts.pop();\n\t }\n\t partsLength = parts.length;\n\t if (partsLength > 4) return input;\n\t numbers = [];\n\t for (index = 0; index < partsLength; index++) {\n\t part = parts[index];\n\t if (part == '') return input;\n\t radix = 10;\n\t if (part.length > 1 && part.charAt(0) == '0') {\n\t radix = HEX_START$1.test(part) ? 16 : 8;\n\t part = part.slice(radix == 8 ? 1 : 2);\n\t }\n\t if (part === '') {\n\t number = 0;\n\t } else {\n\t if (!(radix == 10 ? DEC$1 : radix == 8 ? OCT$1 : HEX$1).test(part)) return input;\n\t number = parseInt(part, radix);\n\t }\n\t numbers.push(number);\n\t }\n\t for (index = 0; index < partsLength; index++) {\n\t number = numbers[index];\n\t if (index == partsLength - 1) {\n\t if (number >= pow$1(256, 5 - partsLength)) return null;\n\t } else if (number > 255) return null;\n\t }\n\t ipv4 = numbers.pop();\n\t for (index = 0; index < numbers.length; index++) {\n\t ipv4 += numbers[index] * pow$1(256, 3 - index);\n\t }\n\t return ipv4;\n\t};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseIPv6$1 = function (input) {\n\t var address = [0, 0, 0, 0, 0, 0, 0, 0];\n\t var pieceIndex = 0;\n\t var compress = null;\n\t var pointer = 0;\n\t var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n\t var char = function () {\n\t return input.charAt(pointer);\n\t };\n\n\t if (char() == ':') {\n\t if (input.charAt(1) != ':') return;\n\t pointer += 2;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t }\n\t while (char()) {\n\t if (pieceIndex == 8) return;\n\t if (char() == ':') {\n\t if (compress !== null) return;\n\t pointer++;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t continue;\n\t }\n\t value = length = 0;\n\t while (length < 4 && HEX$1.test(char())) {\n\t value = value * 16 + parseInt(char(), 16);\n\t pointer++;\n\t length++;\n\t }\n\t if (char() == '.') {\n\t if (length == 0) return;\n\t pointer -= length;\n\t if (pieceIndex > 6) return;\n\t numbersSeen = 0;\n\t while (char()) {\n\t ipv4Piece = null;\n\t if (numbersSeen > 0) {\n\t if (char() == '.' && numbersSeen < 4) pointer++;\n\t else return;\n\t }\n\t if (!DIGIT$1.test(char())) return;\n\t while (DIGIT$1.test(char())) {\n\t number = parseInt(char(), 10);\n\t if (ipv4Piece === null) ipv4Piece = number;\n\t else if (ipv4Piece == 0) return;\n\t else ipv4Piece = ipv4Piece * 10 + number;\n\t if (ipv4Piece > 255) return;\n\t pointer++;\n\t }\n\t address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n\t numbersSeen++;\n\t if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n\t }\n\t if (numbersSeen != 4) return;\n\t break;\n\t } else if (char() == ':') {\n\t pointer++;\n\t if (!char()) return;\n\t } else if (char()) return;\n\t address[pieceIndex++] = value;\n\t }\n\t if (compress !== null) {\n\t swaps = pieceIndex - compress;\n\t pieceIndex = 7;\n\t while (pieceIndex != 0 && swaps > 0) {\n\t swap = address[pieceIndex];\n\t address[pieceIndex--] = address[compress + swaps - 1];\n\t address[compress + --swaps] = swap;\n\t }\n\t } else if (pieceIndex != 8) return;\n\t return address;\n\t};\n\n\tvar findLongestZeroSequence$1 = function (ipv6) {\n\t var maxIndex = null;\n\t var maxLength = 1;\n\t var currStart = null;\n\t var currLength = 0;\n\t var index = 0;\n\t for (; index < 8; index++) {\n\t if (ipv6[index] !== 0) {\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t currStart = null;\n\t currLength = 0;\n\t } else {\n\t if (currStart === null) currStart = index;\n\t ++currLength;\n\t }\n\t }\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t return maxIndex;\n\t};\n\n\tvar serializeHost$1 = function (host) {\n\t var result, index, compress, ignore0;\n\t // ipv4\n\t if (typeof host == 'number') {\n\t result = [];\n\t for (index = 0; index < 4; index++) {\n\t result.unshift(host % 256);\n\t host = floor$5(host / 256);\n\t } return result.join('.');\n\t // ipv6\n\t } else if (typeof host == 'object') {\n\t result = '';\n\t compress = findLongestZeroSequence$1(host);\n\t for (index = 0; index < 8; index++) {\n\t if (ignore0 && host[index] === 0) continue;\n\t if (ignore0) ignore0 = false;\n\t if (compress === index) {\n\t result += index ? ':' : '::';\n\t ignore0 = true;\n\t } else {\n\t result += host[index].toString(16);\n\t if (index < 7) result += ':';\n\t }\n\t }\n\t return '[' + result + ']';\n\t } return host;\n\t};\n\n\tvar C0ControlPercentEncodeSet$1 = {};\n\tvar fragmentPercentEncodeSet$1 = objectAssign$1({}, C0ControlPercentEncodeSet$1, {\n\t ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n\t});\n\tvar pathPercentEncodeSet$1 = objectAssign$1({}, fragmentPercentEncodeSet$1, {\n\t '#': 1, '?': 1, '{': 1, '}': 1\n\t});\n\tvar userinfoPercentEncodeSet$1 = objectAssign$1({}, pathPercentEncodeSet$1, {\n\t '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n\t});\n\n\tvar percentEncode$1 = function (char, set) {\n\t var code = codeAt(char, 0);\n\t return code > 0x20 && code < 0x7F && !has$2(set, char) ? char : encodeURIComponent(char);\n\t};\n\n\tvar specialSchemes$1 = {\n\t ftp: 21,\n\t file: null,\n\t http: 80,\n\t https: 443,\n\t ws: 80,\n\t wss: 443\n\t};\n\n\tvar isSpecial$1 = function (url) {\n\t return has$2(specialSchemes$1, url.scheme);\n\t};\n\n\tvar includesCredentials$1 = function (url) {\n\t return url.username != '' || url.password != '';\n\t};\n\n\tvar cannotHaveUsernamePasswordPort$1 = function (url) {\n\t return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n\t};\n\n\tvar isWindowsDriveLetter$1 = function (string, normalized) {\n\t var second;\n\t return string.length == 2 && ALPHA$1.test(string.charAt(0))\n\t && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n\t};\n\n\tvar startsWithWindowsDriveLetter$1 = function (string) {\n\t var third;\n\t return string.length > 1 && isWindowsDriveLetter$1(string.slice(0, 2)) && (\n\t string.length == 2 ||\n\t ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n\t );\n\t};\n\n\tvar shortenURLsPath$1 = function (url) {\n\t var path = url.path;\n\t var pathSize = path.length;\n\t if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter$1(path[0], true))) {\n\t path.pop();\n\t }\n\t};\n\n\tvar isSingleDot$1 = function (segment) {\n\t return segment === '.' || segment.toLowerCase() === '%2e';\n\t};\n\n\tvar isDoubleDot$1 = function (segment) {\n\t segment = segment.toLowerCase();\n\t return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n\t};\n\n\t// States:\n\tvar SCHEME_START$1 = {};\n\tvar SCHEME$1 = {};\n\tvar NO_SCHEME$1 = {};\n\tvar SPECIAL_RELATIVE_OR_AUTHORITY$1 = {};\n\tvar PATH_OR_AUTHORITY$1 = {};\n\tvar RELATIVE$1 = {};\n\tvar RELATIVE_SLASH$1 = {};\n\tvar SPECIAL_AUTHORITY_SLASHES$1 = {};\n\tvar SPECIAL_AUTHORITY_IGNORE_SLASHES$1 = {};\n\tvar AUTHORITY$1 = {};\n\tvar HOST$1 = {};\n\tvar HOSTNAME$1 = {};\n\tvar PORT$1 = {};\n\tvar FILE$1 = {};\n\tvar FILE_SLASH$1 = {};\n\tvar FILE_HOST$1 = {};\n\tvar PATH_START$1 = {};\n\tvar PATH$1 = {};\n\tvar CANNOT_BE_A_BASE_URL_PATH$1 = {};\n\tvar QUERY$1 = {};\n\tvar FRAGMENT$1 = {};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseURL$1 = function (url, input, stateOverride, base) {\n\t var state = stateOverride || SCHEME_START$1;\n\t var pointer = 0;\n\t var buffer = '';\n\t var seenAt = false;\n\t var seenBracket = false;\n\t var seenPasswordToken = false;\n\t var codePoints, char, bufferCodePoints, failure;\n\n\t if (!stateOverride) {\n\t url.scheme = '';\n\t url.username = '';\n\t url.password = '';\n\t url.host = null;\n\t url.port = null;\n\t url.path = [];\n\t url.query = null;\n\t url.fragment = null;\n\t url.cannotBeABaseURL = false;\n\t input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE$1, '');\n\t }\n\n\t input = input.replace(TAB_AND_NEW_LINE$1, '');\n\n\t codePoints = arrayFrom$1(input);\n\n\t while (pointer <= codePoints.length) {\n\t char = codePoints[pointer];\n\t switch (state) {\n\t case SCHEME_START$1:\n\t if (char && ALPHA$1.test(char)) {\n\t buffer += char.toLowerCase();\n\t state = SCHEME$1;\n\t } else if (!stateOverride) {\n\t state = NO_SCHEME$1;\n\t continue;\n\t } else return INVALID_SCHEME$1;\n\t break;\n\n\t case SCHEME$1:\n\t if (char && (ALPHANUMERIC$1.test(char) || char == '+' || char == '-' || char == '.')) {\n\t buffer += char.toLowerCase();\n\t } else if (char == ':') {\n\t if (stateOverride && (\n\t (isSpecial$1(url) != has$2(specialSchemes$1, buffer)) ||\n\t (buffer == 'file' && (includesCredentials$1(url) || url.port !== null)) ||\n\t (url.scheme == 'file' && !url.host)\n\t )) return;\n\t url.scheme = buffer;\n\t if (stateOverride) {\n\t if (isSpecial$1(url) && specialSchemes$1[url.scheme] == url.port) url.port = null;\n\t return;\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file') {\n\t state = FILE$1;\n\t } else if (isSpecial$1(url) && base && base.scheme == url.scheme) {\n\t state = SPECIAL_RELATIVE_OR_AUTHORITY$1;\n\t } else if (isSpecial$1(url)) {\n\t state = SPECIAL_AUTHORITY_SLASHES$1;\n\t } else if (codePoints[pointer + 1] == '/') {\n\t state = PATH_OR_AUTHORITY$1;\n\t pointer++;\n\t } else {\n\t url.cannotBeABaseURL = true;\n\t url.path.push('');\n\t state = CANNOT_BE_A_BASE_URL_PATH$1;\n\t }\n\t } else if (!stateOverride) {\n\t buffer = '';\n\t state = NO_SCHEME$1;\n\t pointer = 0;\n\t continue;\n\t } else return INVALID_SCHEME$1;\n\t break;\n\n\t case NO_SCHEME$1:\n\t if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME$1;\n\t if (base.cannotBeABaseURL && char == '#') {\n\t url.scheme = base.scheme;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t url.cannotBeABaseURL = true;\n\t state = FRAGMENT$1;\n\t break;\n\t }\n\t state = base.scheme == 'file' ? FILE$1 : RELATIVE$1;\n\t continue;\n\n\t case SPECIAL_RELATIVE_OR_AUTHORITY$1:\n\t if (char == '/' && codePoints[pointer + 1] == '/') {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES$1;\n\t pointer++;\n\t } else {\n\t state = RELATIVE$1;\n\t continue;\n\t } break;\n\n\t case PATH_OR_AUTHORITY$1:\n\t if (char == '/') {\n\t state = AUTHORITY$1;\n\t break;\n\t } else {\n\t state = PATH$1;\n\t continue;\n\t }\n\n\t case RELATIVE$1:\n\t url.scheme = base.scheme;\n\t if (char == EOF$1) {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '/' || (char == '\\\\' && isSpecial$1(url))) {\n\t state = RELATIVE_SLASH$1;\n\t } else if (char == '?') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.path.pop();\n\t state = PATH$1;\n\t continue;\n\t } break;\n\n\t case RELATIVE_SLASH$1:\n\t if (isSpecial$1(url) && (char == '/' || char == '\\\\')) {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES$1;\n\t } else if (char == '/') {\n\t state = AUTHORITY$1;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t state = PATH$1;\n\t continue;\n\t } break;\n\n\t case SPECIAL_AUTHORITY_SLASHES$1:\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES$1;\n\t if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n\t pointer++;\n\t break;\n\n\t case SPECIAL_AUTHORITY_IGNORE_SLASHES$1:\n\t if (char != '/' && char != '\\\\') {\n\t state = AUTHORITY$1;\n\t continue;\n\t } break;\n\n\t case AUTHORITY$1:\n\t if (char == '@') {\n\t if (seenAt) buffer = '%40' + buffer;\n\t seenAt = true;\n\t bufferCodePoints = arrayFrom$1(buffer);\n\t for (var i = 0; i < bufferCodePoints.length; i++) {\n\t var codePoint = bufferCodePoints[i];\n\t if (codePoint == ':' && !seenPasswordToken) {\n\t seenPasswordToken = true;\n\t continue;\n\t }\n\t var encodedCodePoints = percentEncode$1(codePoint, userinfoPercentEncodeSet$1);\n\t if (seenPasswordToken) url.password += encodedCodePoints;\n\t else url.username += encodedCodePoints;\n\t }\n\t buffer = '';\n\t } else if (\n\t char == EOF$1 || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial$1(url))\n\t ) {\n\t if (seenAt && buffer == '') return INVALID_AUTHORITY$1;\n\t pointer -= arrayFrom$1(buffer).length + 1;\n\t buffer = '';\n\t state = HOST$1;\n\t } else buffer += char;\n\t break;\n\n\t case HOST$1:\n\t case HOSTNAME$1:\n\t if (stateOverride && url.scheme == 'file') {\n\t state = FILE_HOST$1;\n\t continue;\n\t } else if (char == ':' && !seenBracket) {\n\t if (buffer == '') return INVALID_HOST$1;\n\t failure = parseHost$1(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PORT$1;\n\t if (stateOverride == HOSTNAME$1) return;\n\t } else if (\n\t char == EOF$1 || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial$1(url))\n\t ) {\n\t if (isSpecial$1(url) && buffer == '') return INVALID_HOST$1;\n\t if (stateOverride && buffer == '' && (includesCredentials$1(url) || url.port !== null)) return;\n\t failure = parseHost$1(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PATH_START$1;\n\t if (stateOverride) return;\n\t continue;\n\t } else {\n\t if (char == '[') seenBracket = true;\n\t else if (char == ']') seenBracket = false;\n\t buffer += char;\n\t } break;\n\n\t case PORT$1:\n\t if (DIGIT$1.test(char)) {\n\t buffer += char;\n\t } else if (\n\t char == EOF$1 || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial$1(url)) ||\n\t stateOverride\n\t ) {\n\t if (buffer != '') {\n\t var port = parseInt(buffer, 10);\n\t if (port > 0xFFFF) return INVALID_PORT$1;\n\t url.port = (isSpecial$1(url) && port === specialSchemes$1[url.scheme]) ? null : port;\n\t buffer = '';\n\t }\n\t if (stateOverride) return;\n\t state = PATH_START$1;\n\t continue;\n\t } else return INVALID_PORT$1;\n\t break;\n\n\t case FILE$1:\n\t url.scheme = 'file';\n\t if (char == '/' || char == '\\\\') state = FILE_SLASH$1;\n\t else if (base && base.scheme == 'file') {\n\t if (char == EOF$1) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '?') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else {\n\t if (!startsWithWindowsDriveLetter$1(codePoints.slice(pointer).join(''))) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t shortenURLsPath$1(url);\n\t }\n\t state = PATH$1;\n\t continue;\n\t }\n\t } else {\n\t state = PATH$1;\n\t continue;\n\t } break;\n\n\t case FILE_SLASH$1:\n\t if (char == '/' || char == '\\\\') {\n\t state = FILE_HOST$1;\n\t break;\n\t }\n\t if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter$1(codePoints.slice(pointer).join(''))) {\n\t if (isWindowsDriveLetter$1(base.path[0], true)) url.path.push(base.path[0]);\n\t else url.host = base.host;\n\t }\n\t state = PATH$1;\n\t continue;\n\n\t case FILE_HOST$1:\n\t if (char == EOF$1 || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n\t if (!stateOverride && isWindowsDriveLetter$1(buffer)) {\n\t state = PATH$1;\n\t } else if (buffer == '') {\n\t url.host = '';\n\t if (stateOverride) return;\n\t state = PATH_START$1;\n\t } else {\n\t failure = parseHost$1(url, buffer);\n\t if (failure) return failure;\n\t if (url.host == 'localhost') url.host = '';\n\t if (stateOverride) return;\n\t buffer = '';\n\t state = PATH_START$1;\n\t } continue;\n\t } else buffer += char;\n\t break;\n\n\t case PATH_START$1:\n\t if (isSpecial$1(url)) {\n\t state = PATH$1;\n\t if (char != '/' && char != '\\\\') continue;\n\t } else if (!stateOverride && char == '?') {\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else if (char != EOF$1) {\n\t state = PATH$1;\n\t if (char != '/') continue;\n\t } break;\n\n\t case PATH$1:\n\t if (\n\t char == EOF$1 || char == '/' ||\n\t (char == '\\\\' && isSpecial$1(url)) ||\n\t (!stateOverride && (char == '?' || char == '#'))\n\t ) {\n\t if (isDoubleDot$1(buffer)) {\n\t shortenURLsPath$1(url);\n\t if (char != '/' && !(char == '\\\\' && isSpecial$1(url))) {\n\t url.path.push('');\n\t }\n\t } else if (isSingleDot$1(buffer)) {\n\t if (char != '/' && !(char == '\\\\' && isSpecial$1(url))) {\n\t url.path.push('');\n\t }\n\t } else {\n\t if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter$1(buffer)) {\n\t if (url.host) url.host = '';\n\t buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n\t }\n\t url.path.push(buffer);\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file' && (char == EOF$1 || char == '?' || char == '#')) {\n\t while (url.path.length > 1 && url.path[0] === '') {\n\t url.path.shift();\n\t }\n\t }\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t }\n\t } else {\n\t buffer += percentEncode$1(char, pathPercentEncodeSet$1);\n\t } break;\n\n\t case CANNOT_BE_A_BASE_URL_PATH$1:\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else if (char != EOF$1) {\n\t url.path[0] += percentEncode$1(char, C0ControlPercentEncodeSet$1);\n\t } break;\n\n\t case QUERY$1:\n\t if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else if (char != EOF$1) {\n\t if (char == \"'\" && isSpecial$1(url)) url.query += '%27';\n\t else if (char == '#') url.query += '%23';\n\t else url.query += percentEncode$1(char, C0ControlPercentEncodeSet$1);\n\t } break;\n\n\t case FRAGMENT$1:\n\t if (char != EOF$1) url.fragment += percentEncode$1(char, fragmentPercentEncodeSet$1);\n\t break;\n\t }\n\n\t pointer++;\n\t }\n\t};\n\n\t// `URL` constructor\n\t// https://url.spec.whatwg.org/#url-class\n\tvar URLConstructor$1 = function URL(url /* , base */) {\n\t var that = anInstance$1(this, URLConstructor$1, 'URL');\n\t var base = arguments.length > 1 ? arguments[1] : undefined;\n\t var urlString = String(url);\n\t var state = setInternalState$a(that, { type: 'URL' });\n\t var baseState, failure;\n\t if (base !== undefined) {\n\t if (base instanceof URLConstructor$1) baseState = getInternalURLState$1(base);\n\t else {\n\t failure = parseURL$1(baseState = {}, String(base));\n\t if (failure) throw TypeError(failure);\n\t }\n\t }\n\t failure = parseURL$1(state, urlString, null, baseState);\n\t if (failure) throw TypeError(failure);\n\t var searchParams = state.searchParams = new URLSearchParams$2();\n\t var searchParamsState = getInternalSearchParamsState$1(searchParams);\n\t searchParamsState.updateSearchParams(state.query);\n\t searchParamsState.updateURL = function () {\n\t state.query = String(searchParams) || null;\n\t };\n\t if (!descriptors$1) {\n\t that.href = serializeURL$1.call(that);\n\t that.origin = getOrigin$1.call(that);\n\t that.protocol = getProtocol$1.call(that);\n\t that.username = getUsername$1.call(that);\n\t that.password = getPassword$1.call(that);\n\t that.host = getHost$1.call(that);\n\t that.hostname = getHostname$1.call(that);\n\t that.port = getPort$1.call(that);\n\t that.pathname = getPathname$1.call(that);\n\t that.search = getSearch$1.call(that);\n\t that.searchParams = getSearchParams$1.call(that);\n\t that.hash = getHash$1.call(that);\n\t }\n\t};\n\n\tvar URLPrototype$1 = URLConstructor$1.prototype;\n\n\tvar serializeURL$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var scheme = url.scheme;\n\t var username = url.username;\n\t var password = url.password;\n\t var host = url.host;\n\t var port = url.port;\n\t var path = url.path;\n\t var query = url.query;\n\t var fragment = url.fragment;\n\t var output = scheme + ':';\n\t if (host !== null) {\n\t output += '//';\n\t if (includesCredentials$1(url)) {\n\t output += username + (password ? ':' + password : '') + '@';\n\t }\n\t output += serializeHost$1(host);\n\t if (port !== null) output += ':' + port;\n\t } else if (scheme == 'file') output += '//';\n\t output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t if (query !== null) output += '?' + query;\n\t if (fragment !== null) output += '#' + fragment;\n\t return output;\n\t};\n\n\tvar getOrigin$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var scheme = url.scheme;\n\t var port = url.port;\n\t if (scheme == 'blob') try {\n\t return new URL(scheme.path[0]).origin;\n\t } catch (error) {\n\t return 'null';\n\t }\n\t if (scheme == 'file' || !isSpecial$1(url)) return 'null';\n\t return scheme + '://' + serializeHost$1(url.host) + (port !== null ? ':' + port : '');\n\t};\n\n\tvar getProtocol$1 = function () {\n\t return getInternalURLState$1(this).scheme + ':';\n\t};\n\n\tvar getUsername$1 = function () {\n\t return getInternalURLState$1(this).username;\n\t};\n\n\tvar getPassword$1 = function () {\n\t return getInternalURLState$1(this).password;\n\t};\n\n\tvar getHost$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var host = url.host;\n\t var port = url.port;\n\t return host === null ? ''\n\t : port === null ? serializeHost$1(host)\n\t : serializeHost$1(host) + ':' + port;\n\t};\n\n\tvar getHostname$1 = function () {\n\t var host = getInternalURLState$1(this).host;\n\t return host === null ? '' : serializeHost$1(host);\n\t};\n\n\tvar getPort$1 = function () {\n\t var port = getInternalURLState$1(this).port;\n\t return port === null ? '' : String(port);\n\t};\n\n\tvar getPathname$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var path = url.path;\n\t return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t};\n\n\tvar getSearch$1 = function () {\n\t var query = getInternalURLState$1(this).query;\n\t return query ? '?' + query : '';\n\t};\n\n\tvar getSearchParams$1 = function () {\n\t return getInternalURLState$1(this).searchParams;\n\t};\n\n\tvar getHash$1 = function () {\n\t var fragment = getInternalURLState$1(this).fragment;\n\t return fragment ? '#' + fragment : '';\n\t};\n\n\tvar accessorDescriptor$1 = function (getter, setter) {\n\t return { get: getter, set: setter, configurable: true, enumerable: true };\n\t};\n\n\tif (descriptors$1) {\n\t objectDefineProperties$1(URLPrototype$1, {\n\t // `URL.prototype.href` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-href\n\t href: accessorDescriptor$1(serializeURL$1, function (href) {\n\t var url = getInternalURLState$1(this);\n\t var urlString = String(href);\n\t var failure = parseURL$1(url, urlString);\n\t if (failure) throw TypeError(failure);\n\t getInternalSearchParamsState$1(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.origin` getter\n\t // https://url.spec.whatwg.org/#dom-url-origin\n\t origin: accessorDescriptor$1(getOrigin$1),\n\t // `URL.prototype.protocol` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-protocol\n\t protocol: accessorDescriptor$1(getProtocol$1, function (protocol) {\n\t var url = getInternalURLState$1(this);\n\t parseURL$1(url, String(protocol) + ':', SCHEME_START$1);\n\t }),\n\t // `URL.prototype.username` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-username\n\t username: accessorDescriptor$1(getUsername$1, function (username) {\n\t var url = getInternalURLState$1(this);\n\t var codePoints = arrayFrom$1(String(username));\n\t if (cannotHaveUsernamePasswordPort$1(url)) return;\n\t url.username = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.username += percentEncode$1(codePoints[i], userinfoPercentEncodeSet$1);\n\t }\n\t }),\n\t // `URL.prototype.password` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-password\n\t password: accessorDescriptor$1(getPassword$1, function (password) {\n\t var url = getInternalURLState$1(this);\n\t var codePoints = arrayFrom$1(String(password));\n\t if (cannotHaveUsernamePasswordPort$1(url)) return;\n\t url.password = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.password += percentEncode$1(codePoints[i], userinfoPercentEncodeSet$1);\n\t }\n\t }),\n\t // `URL.prototype.host` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-host\n\t host: accessorDescriptor$1(getHost$1, function (host) {\n\t var url = getInternalURLState$1(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL$1(url, String(host), HOST$1);\n\t }),\n\t // `URL.prototype.hostname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hostname\n\t hostname: accessorDescriptor$1(getHostname$1, function (hostname) {\n\t var url = getInternalURLState$1(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL$1(url, String(hostname), HOSTNAME$1);\n\t }),\n\t // `URL.prototype.port` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-port\n\t port: accessorDescriptor$1(getPort$1, function (port) {\n\t var url = getInternalURLState$1(this);\n\t if (cannotHaveUsernamePasswordPort$1(url)) return;\n\t port = String(port);\n\t if (port == '') url.port = null;\n\t else parseURL$1(url, port, PORT$1);\n\t }),\n\t // `URL.prototype.pathname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-pathname\n\t pathname: accessorDescriptor$1(getPathname$1, function (pathname) {\n\t var url = getInternalURLState$1(this);\n\t if (url.cannotBeABaseURL) return;\n\t url.path = [];\n\t parseURL$1(url, pathname + '', PATH_START$1);\n\t }),\n\t // `URL.prototype.search` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-search\n\t search: accessorDescriptor$1(getSearch$1, function (search) {\n\t var url = getInternalURLState$1(this);\n\t search = String(search);\n\t if (search == '') {\n\t url.query = null;\n\t } else {\n\t if ('?' == search.charAt(0)) search = search.slice(1);\n\t url.query = '';\n\t parseURL$1(url, search, QUERY$1);\n\t }\n\t getInternalSearchParamsState$1(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.searchParams` getter\n\t // https://url.spec.whatwg.org/#dom-url-searchparams\n\t searchParams: accessorDescriptor$1(getSearchParams$1),\n\t // `URL.prototype.hash` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hash\n\t hash: accessorDescriptor$1(getHash$1, function (hash) {\n\t var url = getInternalURLState$1(this);\n\t hash = String(hash);\n\t if (hash == '') {\n\t url.fragment = null;\n\t return;\n\t }\n\t if ('#' == hash.charAt(0)) hash = hash.slice(1);\n\t url.fragment = '';\n\t parseURL$1(url, hash, FRAGMENT$1);\n\t })\n\t });\n\t}\n\n\t// `URL.prototype.toJSON` method\n\t// https://url.spec.whatwg.org/#dom-url-tojson\n\tredefine$1(URLPrototype$1, 'toJSON', function toJSON() {\n\t return serializeURL$1.call(this);\n\t}, { enumerable: true });\n\n\t// `URL.prototype.toString` method\n\t// https://url.spec.whatwg.org/#URL-stringification-behavior\n\tredefine$1(URLPrototype$1, 'toString', function toString() {\n\t return serializeURL$1.call(this);\n\t}, { enumerable: true });\n\n\tif (NativeURL$1) {\n\t var nativeCreateObjectURL$1 = NativeURL$1.createObjectURL;\n\t var nativeRevokeObjectURL$1 = NativeURL$1.revokeObjectURL;\n\t // `URL.createObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeCreateObjectURL$1) redefine$1(URLConstructor$1, 'createObjectURL', function createObjectURL(blob) {\n\t return nativeCreateObjectURL$1.apply(NativeURL$1, arguments);\n\t });\n\t // `URL.revokeObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeRevokeObjectURL$1) redefine$1(URLConstructor$1, 'revokeObjectURL', function revokeObjectURL(url) {\n\t return nativeRevokeObjectURL$1.apply(NativeURL$1, arguments);\n\t });\n\t}\n\n\tsetToStringTag$1(URLConstructor$1, 'URL');\n\n\t_export$1({ global: true, forced: !nativeUrl$1, sham: !descriptors$1 }, {\n\t URL: URLConstructor$1\n\t});\n\n\tvar $some = arrayIteration.some;\n\n\n\n\tvar STRICT_METHOD$4 = arrayMethodIsStrict('some');\n\tvar USES_TO_LENGTH$7 = arrayMethodUsesToLength('some');\n\n\t// `Array.prototype.some` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t_export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$4 || !USES_TO_LENGTH$7 }, {\n\t some: function some(callbackfn /* , thisArg */) {\n\t return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `thisNumberValue` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-thisnumbervalue\n\tvar thisNumberValue = function (value) {\n\t if (typeof value != 'number' && classofRaw$1(value) != 'Number') {\n\t throw TypeError('Incorrect invocation');\n\t }\n\t return +value;\n\t};\n\n\t// `String.prototype.repeat` method implementation\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\n\tvar stringRepeat = ''.repeat || function repeat(count) {\n\t var str = String(requireObjectCoercible$1(this));\n\t var result = '';\n\t var n = toInteger$1(count);\n\t if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n\t for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n\t return result;\n\t};\n\n\tvar nativeToFixed = 1.0.toFixed;\n\tvar floor$6 = Math.floor;\n\n\tvar pow$2 = function (x, n, acc) {\n\t return n === 0 ? acc : n % 2 === 1 ? pow$2(x, n - 1, acc * x) : pow$2(x * x, n / 2, acc);\n\t};\n\n\tvar log = function (x) {\n\t var n = 0;\n\t var x2 = x;\n\t while (x2 >= 4096) {\n\t n += 12;\n\t x2 /= 4096;\n\t }\n\t while (x2 >= 2) {\n\t n += 1;\n\t x2 /= 2;\n\t } return n;\n\t};\n\n\tvar FORCED$7 = nativeToFixed && (\n\t 0.00008.toFixed(3) !== '0.000' ||\n\t 0.9.toFixed(0) !== '1' ||\n\t 1.255.toFixed(2) !== '1.25' ||\n\t 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n\t) || !fails$1(function () {\n\t // V8 ~ Android 4.3-\n\t nativeToFixed.call({});\n\t});\n\n\t// `Number.prototype.toFixed` method\n\t// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n\t_export$1({ target: 'Number', proto: true, forced: FORCED$7 }, {\n\t // eslint-disable-next-line max-statements\n\t toFixed: function toFixed(fractionDigits) {\n\t var number = thisNumberValue(this);\n\t var fractDigits = toInteger$1(fractionDigits);\n\t var data = [0, 0, 0, 0, 0, 0];\n\t var sign = '';\n\t var result = '0';\n\t var e, z, j, k;\n\n\t var multiply = function (n, c) {\n\t var index = -1;\n\t var c2 = c;\n\t while (++index < 6) {\n\t c2 += n * data[index];\n\t data[index] = c2 % 1e7;\n\t c2 = floor$6(c2 / 1e7);\n\t }\n\t };\n\n\t var divide = function (n) {\n\t var index = 6;\n\t var c = 0;\n\t while (--index >= 0) {\n\t c += data[index];\n\t data[index] = floor$6(c / n);\n\t c = (c % n) * 1e7;\n\t }\n\t };\n\n\t var dataToString = function () {\n\t var index = 6;\n\t var s = '';\n\t while (--index >= 0) {\n\t if (s !== '' || index === 0 || data[index] !== 0) {\n\t var t = String(data[index]);\n\t s = s === '' ? t : s + stringRepeat.call('0', 7 - t.length) + t;\n\t }\n\t } return s;\n\t };\n\n\t if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n\t // eslint-disable-next-line no-self-compare\n\t if (number != number) return 'NaN';\n\t if (number <= -1e21 || number >= 1e21) return String(number);\n\t if (number < 0) {\n\t sign = '-';\n\t number = -number;\n\t }\n\t if (number > 1e-21) {\n\t e = log(number * pow$2(2, 69, 1)) - 69;\n\t z = e < 0 ? number * pow$2(2, -e, 1) : number / pow$2(2, e, 1);\n\t z *= 0x10000000000000;\n\t e = 52 - e;\n\t if (e > 0) {\n\t multiply(0, z);\n\t j = fractDigits;\n\t while (j >= 7) {\n\t multiply(1e7, 0);\n\t j -= 7;\n\t }\n\t multiply(pow$2(10, j, 1), 0);\n\t j = e - 1;\n\t while (j >= 23) {\n\t divide(1 << 23);\n\t j -= 23;\n\t }\n\t divide(1 << j);\n\t multiply(1, 1);\n\t divide(2);\n\t result = dataToString();\n\t } else {\n\t multiply(0, z);\n\t multiply(1 << -e, 0);\n\t result = dataToString() + stringRepeat.call('0', fractDigits);\n\t }\n\t }\n\t if (fractDigits > 0) {\n\t k = result.length;\n\t result = sign + (k <= fractDigits\n\t ? '0.' + stringRepeat.call('0', fractDigits - k) + result\n\t : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n\t } else {\n\t result = sign + result;\n\t } return result;\n\t }\n\t});\n\n\tvar propertyIsEnumerable$1 = objectPropertyIsEnumerable$1.f;\n\n\t// `Object.{ entries, values }` methods implementation\n\tvar createMethod$4 = function (TO_ENTRIES) {\n\t return function (it) {\n\t var O = toIndexedObject$1(it);\n\t var keys = objectKeys$1(O);\n\t var length = keys.length;\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t while (length > i) {\n\t key = keys[i++];\n\t if (!descriptors$1 || propertyIsEnumerable$1.call(O, key)) {\n\t result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n\t }\n\t }\n\t return result;\n\t };\n\t};\n\n\tvar objectToArray$1 = {\n\t // `Object.entries` method\n\t // https://tc39.github.io/ecma262/#sec-object.entries\n\t entries: createMethod$4(true),\n\t // `Object.values` method\n\t // https://tc39.github.io/ecma262/#sec-object.values\n\t values: createMethod$4(false)\n\t};\n\n\tvar $entries = objectToArray$1.entries;\n\n\t// `Object.entries` method\n\t// https://tc39.github.io/ecma262/#sec-object.entries\n\t_export$1({ target: 'Object', stat: true }, {\n\t entries: function entries(O) {\n\t return $entries(O);\n\t }\n\t});\n\n\tvar $values = objectToArray$1.values;\n\n\t// `Object.values` method\n\t// https://tc39.github.io/ecma262/#sec-object.values\n\t_export$1({ target: 'Object', stat: true }, {\n\t values: function values(O) {\n\t return $values(O);\n\t }\n\t});\n\n\tvar max$5 = Math.max;\n\tvar min$8 = Math.min;\n\tvar floor$7 = Math.floor;\n\tvar SUBSTITUTION_SYMBOLS$1 = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\n\tvar SUBSTITUTION_SYMBOLS_NO_NAMED$1 = /\\$([$&'`]|\\d\\d?)/g;\n\n\tvar maybeToString$1 = function (it) {\n\t return it === undefined ? it : String(it);\n\t};\n\n\t// @@replace logic\n\tfixRegexpWellKnownSymbolLogic$1('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n\t var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n\t var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n\t var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n\t return [\n\t // `String.prototype.replace` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n\t function replace(searchValue, replaceValue) {\n\t var O = requireObjectCoercible$1(this);\n\t var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n\t return replacer !== undefined\n\t ? replacer.call(searchValue, O, replaceValue)\n\t : nativeReplace.call(String(O), searchValue, replaceValue);\n\t },\n\t // `RegExp.prototype[@@replace]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n\t function (regexp, replaceValue) {\n\t if (\n\t (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n\t (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n\t ) {\n\t var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n\t if (res.done) return res.value;\n\t }\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\n\t var functionalReplace = typeof replaceValue === 'function';\n\t if (!functionalReplace) replaceValue = String(replaceValue);\n\n\t var global = rx.global;\n\t if (global) {\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t }\n\t var results = [];\n\t while (true) {\n\t var result = regexpExecAbstract$1(rx, S);\n\t if (result === null) break;\n\n\t results.push(result);\n\t if (!global) break;\n\n\t var matchStr = String(result[0]);\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$1(rx.lastIndex), fullUnicode);\n\t }\n\n\t var accumulatedResult = '';\n\t var nextSourcePosition = 0;\n\t for (var i = 0; i < results.length; i++) {\n\t result = results[i];\n\n\t var matched = String(result[0]);\n\t var position = max$5(min$8(toInteger$1(result.index), S.length), 0);\n\t var captures = [];\n\t // NOTE: This is equivalent to\n\t // captures = result.slice(1).map(maybeToString)\n\t // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n\t // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n\t // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\t for (var j = 1; j < result.length; j++) captures.push(maybeToString$1(result[j]));\n\t var namedCaptures = result.groups;\n\t if (functionalReplace) {\n\t var replacerArgs = [matched].concat(captures, position, S);\n\t if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n\t var replacement = String(replaceValue.apply(undefined, replacerArgs));\n\t } else {\n\t replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n\t }\n\t if (position >= nextSourcePosition) {\n\t accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n\t nextSourcePosition = position + matched.length;\n\t }\n\t }\n\t return accumulatedResult + S.slice(nextSourcePosition);\n\t }\n\t ];\n\n\t // https://tc39.github.io/ecma262/#sec-getsubstitution\n\t function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n\t var tailPos = position + matched.length;\n\t var m = captures.length;\n\t var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED$1;\n\t if (namedCaptures !== undefined) {\n\t namedCaptures = toObject$1(namedCaptures);\n\t symbols = SUBSTITUTION_SYMBOLS$1;\n\t }\n\t return nativeReplace.call(replacement, symbols, function (match, ch) {\n\t var capture;\n\t switch (ch.charAt(0)) {\n\t case '$': return '$';\n\t case '&': return matched;\n\t case '`': return str.slice(0, position);\n\t case \"'\": return str.slice(tailPos);\n\t case '<':\n\t capture = namedCaptures[ch.slice(1, -1)];\n\t break;\n\t default: // \\d\\d?\n\t var n = +ch;\n\t if (n === 0) return match;\n\t if (n > m) {\n\t var f = floor$7(n / 10);\n\t if (f === 0) return match;\n\t if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n\t return match;\n\t }\n\t capture = captures[n - 1];\n\t }\n\t return capture === undefined ? '' : capture;\n\t });\n\t }\n\t});\n\n\tvar nativeGetOwnPropertyNames$2 = objectGetOwnPropertyNames$1.f;\n\n\tvar toString$3 = {}.toString;\n\n\tvar windowNames$1 = typeof window == 'object' && window && Object.getOwnPropertyNames\n\t ? Object.getOwnPropertyNames(window) : [];\n\n\tvar getWindowNames$1 = function (it) {\n\t try {\n\t return nativeGetOwnPropertyNames$2(it);\n\t } catch (error) {\n\t return windowNames$1.slice();\n\t }\n\t};\n\n\t// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\tvar f$d = function getOwnPropertyNames(it) {\n\t return windowNames$1 && toString$3.call(it) == '[object Window]'\n\t ? getWindowNames$1(it)\n\t : nativeGetOwnPropertyNames$2(toIndexedObject$1(it));\n\t};\n\n\tvar objectGetOwnPropertyNamesExternal$1 = {\n\t\tf: f$d\n\t};\n\n\tvar f$e = wellKnownSymbol$1;\n\n\tvar wellKnownSymbolWrapped = {\n\t\tf: f$e\n\t};\n\n\tvar defineProperty$b = objectDefineProperty$1.f;\n\n\tvar defineWellKnownSymbol$1 = function (NAME) {\n\t var Symbol = path$1.Symbol || (path$1.Symbol = {});\n\t if (!has$2(Symbol, NAME)) defineProperty$b(Symbol, NAME, {\n\t value: wellKnownSymbolWrapped.f(NAME)\n\t });\n\t};\n\n\tvar $forEach$1 = arrayIteration.forEach;\n\n\tvar HIDDEN$1 = sharedKey$1('hidden');\n\tvar SYMBOL$1 = 'Symbol';\n\tvar PROTOTYPE$3 = 'prototype';\n\tvar TO_PRIMITIVE$1 = wellKnownSymbol$1('toPrimitive');\n\tvar setInternalState$b = internalState$1.set;\n\tvar getInternalState$6 = internalState$1.getterFor(SYMBOL$1);\n\tvar ObjectPrototype$5 = Object[PROTOTYPE$3];\n\tvar $Symbol$1 = global_1$1.Symbol;\n\tvar $stringify = getBuiltIn$1('JSON', 'stringify');\n\tvar nativeGetOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor$1.f;\n\tvar nativeDefineProperty$3 = objectDefineProperty$1.f;\n\tvar nativeGetOwnPropertyNames$3 = objectGetOwnPropertyNamesExternal$1.f;\n\tvar nativePropertyIsEnumerable$3 = objectPropertyIsEnumerable$1.f;\n\tvar AllSymbols$1 = shared$1('symbols');\n\tvar ObjectPrototypeSymbols$1 = shared$1('op-symbols');\n\tvar StringToSymbolRegistry = shared$1('string-to-symbol-registry');\n\tvar SymbolToStringRegistry = shared$1('symbol-to-string-registry');\n\tvar WellKnownSymbolsStore$2 = shared$1('wks');\n\tvar QObject$1 = global_1$1.QObject;\n\t// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\tvar USE_SETTER$1 = !QObject$1 || !QObject$1[PROTOTYPE$3] || !QObject$1[PROTOTYPE$3].findChild;\n\n\t// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\tvar setSymbolDescriptor$1 = descriptors$1 && fails$1(function () {\n\t return objectCreate$1(nativeDefineProperty$3({}, 'a', {\n\t get: function () { return nativeDefineProperty$3(this, 'a', { value: 7 }).a; }\n\t })).a != 7;\n\t}) ? function (O, P, Attributes) {\n\t var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$3(ObjectPrototype$5, P);\n\t if (ObjectPrototypeDescriptor) delete ObjectPrototype$5[P];\n\t nativeDefineProperty$3(O, P, Attributes);\n\t if (ObjectPrototypeDescriptor && O !== ObjectPrototype$5) {\n\t nativeDefineProperty$3(ObjectPrototype$5, P, ObjectPrototypeDescriptor);\n\t }\n\t} : nativeDefineProperty$3;\n\n\tvar wrap$2 = function (tag, description) {\n\t var symbol = AllSymbols$1[tag] = objectCreate$1($Symbol$1[PROTOTYPE$3]);\n\t setInternalState$b(symbol, {\n\t type: SYMBOL$1,\n\t tag: tag,\n\t description: description\n\t });\n\t if (!descriptors$1) symbol.description = description;\n\t return symbol;\n\t};\n\n\tvar isSymbol$1 = useSymbolAsUid ? function (it) {\n\t return typeof it == 'symbol';\n\t} : function (it) {\n\t return Object(it) instanceof $Symbol$1;\n\t};\n\n\tvar $defineProperty$1 = function defineProperty(O, P, Attributes) {\n\t if (O === ObjectPrototype$5) $defineProperty$1(ObjectPrototypeSymbols$1, P, Attributes);\n\t anObject$1(O);\n\t var key = toPrimitive$1(P, true);\n\t anObject$1(Attributes);\n\t if (has$2(AllSymbols$1, key)) {\n\t if (!Attributes.enumerable) {\n\t if (!has$2(O, HIDDEN$1)) nativeDefineProperty$3(O, HIDDEN$1, createPropertyDescriptor$1(1, {}));\n\t O[HIDDEN$1][key] = true;\n\t } else {\n\t if (has$2(O, HIDDEN$1) && O[HIDDEN$1][key]) O[HIDDEN$1][key] = false;\n\t Attributes = objectCreate$1(Attributes, { enumerable: createPropertyDescriptor$1(0, false) });\n\t } return setSymbolDescriptor$1(O, key, Attributes);\n\t } return nativeDefineProperty$3(O, key, Attributes);\n\t};\n\n\tvar $defineProperties$1 = function defineProperties(O, Properties) {\n\t anObject$1(O);\n\t var properties = toIndexedObject$1(Properties);\n\t var keys = objectKeys$1(properties).concat($getOwnPropertySymbols$1(properties));\n\t $forEach$1(keys, function (key) {\n\t if (!descriptors$1 || $propertyIsEnumerable$1.call(properties, key)) $defineProperty$1(O, key, properties[key]);\n\t });\n\t return O;\n\t};\n\n\tvar $create$1 = function create(O, Properties) {\n\t return Properties === undefined ? objectCreate$1(O) : $defineProperties$1(objectCreate$1(O), Properties);\n\t};\n\n\tvar $propertyIsEnumerable$1 = function propertyIsEnumerable(V) {\n\t var P = toPrimitive$1(V, true);\n\t var enumerable = nativePropertyIsEnumerable$3.call(this, P);\n\t if (this === ObjectPrototype$5 && has$2(AllSymbols$1, P) && !has$2(ObjectPrototypeSymbols$1, P)) return false;\n\t return enumerable || !has$2(this, P) || !has$2(AllSymbols$1, P) || has$2(this, HIDDEN$1) && this[HIDDEN$1][P] ? enumerable : true;\n\t};\n\n\tvar $getOwnPropertyDescriptor$1 = function getOwnPropertyDescriptor(O, P) {\n\t var it = toIndexedObject$1(O);\n\t var key = toPrimitive$1(P, true);\n\t if (it === ObjectPrototype$5 && has$2(AllSymbols$1, key) && !has$2(ObjectPrototypeSymbols$1, key)) return;\n\t var descriptor = nativeGetOwnPropertyDescriptor$3(it, key);\n\t if (descriptor && has$2(AllSymbols$1, key) && !(has$2(it, HIDDEN$1) && it[HIDDEN$1][key])) {\n\t descriptor.enumerable = true;\n\t }\n\t return descriptor;\n\t};\n\n\tvar $getOwnPropertyNames$1 = function getOwnPropertyNames(O) {\n\t var names = nativeGetOwnPropertyNames$3(toIndexedObject$1(O));\n\t var result = [];\n\t $forEach$1(names, function (key) {\n\t if (!has$2(AllSymbols$1, key) && !has$2(hiddenKeys$2, key)) result.push(key);\n\t });\n\t return result;\n\t};\n\n\tvar $getOwnPropertySymbols$1 = function getOwnPropertySymbols(O) {\n\t var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$5;\n\t var names = nativeGetOwnPropertyNames$3(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols$1 : toIndexedObject$1(O));\n\t var result = [];\n\t $forEach$1(names, function (key) {\n\t if (has$2(AllSymbols$1, key) && (!IS_OBJECT_PROTOTYPE || has$2(ObjectPrototype$5, key))) {\n\t result.push(AllSymbols$1[key]);\n\t }\n\t });\n\t return result;\n\t};\n\n\t// `Symbol` constructor\n\t// https://tc39.github.io/ecma262/#sec-symbol-constructor\n\tif (!nativeSymbol$1) {\n\t $Symbol$1 = function Symbol() {\n\t if (this instanceof $Symbol$1) throw TypeError('Symbol is not a constructor');\n\t var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n\t var tag = uid$1(description);\n\t var setter = function (value) {\n\t if (this === ObjectPrototype$5) setter.call(ObjectPrototypeSymbols$1, value);\n\t if (has$2(this, HIDDEN$1) && has$2(this[HIDDEN$1], tag)) this[HIDDEN$1][tag] = false;\n\t setSymbolDescriptor$1(this, tag, createPropertyDescriptor$1(1, value));\n\t };\n\t if (descriptors$1 && USE_SETTER$1) setSymbolDescriptor$1(ObjectPrototype$5, tag, { configurable: true, set: setter });\n\t return wrap$2(tag, description);\n\t };\n\n\t redefine$1($Symbol$1[PROTOTYPE$3], 'toString', function toString() {\n\t return getInternalState$6(this).tag;\n\t });\n\n\t redefine$1($Symbol$1, 'withoutSetter', function (description) {\n\t return wrap$2(uid$1(description), description);\n\t });\n\n\t objectPropertyIsEnumerable$1.f = $propertyIsEnumerable$1;\n\t objectDefineProperty$1.f = $defineProperty$1;\n\t objectGetOwnPropertyDescriptor$1.f = $getOwnPropertyDescriptor$1;\n\t objectGetOwnPropertyNames$1.f = objectGetOwnPropertyNamesExternal$1.f = $getOwnPropertyNames$1;\n\t objectGetOwnPropertySymbols$1.f = $getOwnPropertySymbols$1;\n\n\t wellKnownSymbolWrapped.f = function (name) {\n\t return wrap$2(wellKnownSymbol$1(name), name);\n\t };\n\n\t if (descriptors$1) {\n\t // https://github.com/tc39/proposal-Symbol-description\n\t nativeDefineProperty$3($Symbol$1[PROTOTYPE$3], 'description', {\n\t configurable: true,\n\t get: function description() {\n\t return getInternalState$6(this).description;\n\t }\n\t });\n\t {\n\t redefine$1(ObjectPrototype$5, 'propertyIsEnumerable', $propertyIsEnumerable$1, { unsafe: true });\n\t }\n\t }\n\t}\n\n\t_export$1({ global: true, wrap: true, forced: !nativeSymbol$1, sham: !nativeSymbol$1 }, {\n\t Symbol: $Symbol$1\n\t});\n\n\t$forEach$1(objectKeys$1(WellKnownSymbolsStore$2), function (name) {\n\t defineWellKnownSymbol$1(name);\n\t});\n\n\t_export$1({ target: SYMBOL$1, stat: true, forced: !nativeSymbol$1 }, {\n\t // `Symbol.for` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.for\n\t 'for': function (key) {\n\t var string = String(key);\n\t if (has$2(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n\t var symbol = $Symbol$1(string);\n\t StringToSymbolRegistry[string] = symbol;\n\t SymbolToStringRegistry[symbol] = string;\n\t return symbol;\n\t },\n\t // `Symbol.keyFor` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n\t keyFor: function keyFor(sym) {\n\t if (!isSymbol$1(sym)) throw TypeError(sym + ' is not a symbol');\n\t if (has$2(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n\t },\n\t useSetter: function () { USE_SETTER$1 = true; },\n\t useSimple: function () { USE_SETTER$1 = false; }\n\t});\n\n\t_export$1({ target: 'Object', stat: true, forced: !nativeSymbol$1, sham: !descriptors$1 }, {\n\t // `Object.create` method\n\t // https://tc39.github.io/ecma262/#sec-object.create\n\t create: $create$1,\n\t // `Object.defineProperty` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperty\n\t defineProperty: $defineProperty$1,\n\t // `Object.defineProperties` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperties\n\t defineProperties: $defineProperties$1,\n\t // `Object.getOwnPropertyDescriptor` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n\t getOwnPropertyDescriptor: $getOwnPropertyDescriptor$1\n\t});\n\n\t_export$1({ target: 'Object', stat: true, forced: !nativeSymbol$1 }, {\n\t // `Object.getOwnPropertyNames` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\t getOwnPropertyNames: $getOwnPropertyNames$1,\n\t // `Object.getOwnPropertySymbols` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n\t getOwnPropertySymbols: $getOwnPropertySymbols$1\n\t});\n\n\t// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n\t// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n\t_export$1({ target: 'Object', stat: true, forced: fails$1(function () { objectGetOwnPropertySymbols$1.f(1); }) }, {\n\t getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n\t return objectGetOwnPropertySymbols$1.f(toObject$1(it));\n\t }\n\t});\n\n\t// `JSON.stringify` method behavior with symbols\n\t// https://tc39.github.io/ecma262/#sec-json.stringify\n\tif ($stringify) {\n\t var FORCED_JSON_STRINGIFY = !nativeSymbol$1 || fails$1(function () {\n\t var symbol = $Symbol$1();\n\t // MS Edge converts symbol values to JSON as {}\n\t return $stringify([symbol]) != '[null]'\n\t // WebKit converts symbol values to JSON as null\n\t || $stringify({ a: symbol }) != '{}'\n\t // V8 throws on boxed symbols\n\t || $stringify(Object(symbol)) != '{}';\n\t });\n\n\t _export$1({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n\t // eslint-disable-next-line no-unused-vars\n\t stringify: function stringify(it, replacer, space) {\n\t var args = [it];\n\t var index = 1;\n\t var $replacer;\n\t while (arguments.length > index) args.push(arguments[index++]);\n\t $replacer = replacer;\n\t if (!isObject$4(replacer) && it === undefined || isSymbol$1(it)) return; // IE8 returns string on undefined\n\t if (!isArray$4(replacer)) replacer = function (key, value) {\n\t if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n\t if (!isSymbol$1(value)) return value;\n\t };\n\t args[1] = replacer;\n\t return $stringify.apply(null, args);\n\t }\n\t });\n\t}\n\n\t// `Symbol.prototype[@@toPrimitive]` method\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\n\tif (!$Symbol$1[PROTOTYPE$3][TO_PRIMITIVE$1]) {\n\t createNonEnumerableProperty($Symbol$1[PROTOTYPE$3], TO_PRIMITIVE$1, $Symbol$1[PROTOTYPE$3].valueOf);\n\t}\n\t// `Symbol.prototype[@@toStringTag]` property\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\n\tsetToStringTag$1($Symbol$1, SYMBOL$1);\n\n\thiddenKeys$2[HIDDEN$1] = true;\n\n\t// `Number.isNaN` method\n\t// https://tc39.github.io/ecma262/#sec-number.isnan\n\t_export$1({ target: 'Number', stat: true }, {\n\t isNaN: function isNaN(number) {\n\t // eslint-disable-next-line no-self-compare\n\t return number != number;\n\t }\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor$1.f;\n\n\n\tvar FAILS_ON_PRIMITIVES$3 = fails$1(function () { nativeGetOwnPropertyDescriptor$4(1); });\n\tvar FORCED$8 = !descriptors$1 || FAILS_ON_PRIMITIVES$3;\n\n\t// `Object.getOwnPropertyDescriptor` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\t_export$1({ target: 'Object', stat: true, forced: FORCED$8, sham: !descriptors$1 }, {\n\t getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n\t return nativeGetOwnPropertyDescriptor$4(toIndexedObject$1(it), key);\n\t }\n\t});\n\n\t// `Object.getOwnPropertyDescriptors` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n\t_export$1({ target: 'Object', stat: true, sham: !descriptors$1 }, {\n\t getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n\t var O = toIndexedObject$1(object);\n\t var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor$1.f;\n\t var keys = ownKeys$2(O);\n\t var result = {};\n\t var index = 0;\n\t var key, descriptor;\n\t while (keys.length > index) {\n\t descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n\t if (descriptor !== undefined) createProperty$1(result, key, descriptor);\n\t }\n\t return result;\n\t }\n\t});\n\n\t// @@match logic\n\tfixRegexpWellKnownSymbolLogic$1('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n\t return [\n\t // `String.prototype.match` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.match\n\t function match(regexp) {\n\t var O = requireObjectCoercible$1(this);\n\t var matcher = regexp == undefined ? undefined : regexp[MATCH];\n\t return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n\t },\n\t // `RegExp.prototype[@@match]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n\t function (regexp) {\n\t var res = maybeCallNative(nativeMatch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\n\t if (!rx.global) return regexpExecAbstract$1(rx, S);\n\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t var A = [];\n\t var n = 0;\n\t var result;\n\t while ((result = regexpExecAbstract$1(rx, S)) !== null) {\n\t var matchStr = String(result[0]);\n\t A[n] = matchStr;\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$1(rx.lastIndex), fullUnicode);\n\t n++;\n\t }\n\t return n === 0 ? null : A;\n\t }\n\t ];\n\t});\n\n\tfunction _classCallCheck$2(e, t) {\n\t if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n\t}\n\n\tfunction _defineProperties$2(e, t) {\n\t for (var n = 0; n < t.length; n++) {\n\t var r = t[n];\n\t r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n\t }\n\t}\n\n\tfunction _createClass$2(e, t, n) {\n\t return t && _defineProperties$2(e.prototype, t), n && _defineProperties$2(e, n), e;\n\t}\n\n\tfunction _defineProperty$2(e, t, n) {\n\t return t in e ? Object.defineProperty(e, t, {\n\t value: n,\n\t enumerable: !0,\n\t configurable: !0,\n\t writable: !0\n\t }) : e[t] = n, e;\n\t}\n\n\tfunction ownKeys$3(e, t) {\n\t var n = Object.keys(e);\n\n\t if (Object.getOwnPropertySymbols) {\n\t var r = Object.getOwnPropertySymbols(e);\n\t t && (r = r.filter(function (t) {\n\t return Object.getOwnPropertyDescriptor(e, t).enumerable;\n\t })), n.push.apply(n, r);\n\t }\n\n\t return n;\n\t}\n\n\tfunction _objectSpread2$1(e) {\n\t for (var t = 1; t < arguments.length; t++) {\n\t var n = null != arguments[t] ? arguments[t] : {};\n\t t % 2 ? ownKeys$3(Object(n), !0).forEach(function (t) {\n\t _defineProperty$2(e, t, n[t]);\n\t }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys$3(Object(n)).forEach(function (t) {\n\t Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n\t });\n\t }\n\n\t return e;\n\t}\n\n\tvar defaults$1 = {\n\t addCSS: !0,\n\t thumbWidth: 15,\n\t watch: !0\n\t};\n\n\tfunction matches$1(e, t) {\n\t return function () {\n\t return Array.from(document.querySelectorAll(t)).includes(this);\n\t }.call(e, t);\n\t}\n\n\tfunction trigger(e, t) {\n\t if (e && t) {\n\t var n = new Event(t, {\n\t bubbles: !0\n\t });\n\t e.dispatchEvent(n);\n\t }\n\t}\n\n\tvar getConstructor$1 = function getConstructor(e) {\n\t return null != e ? e.constructor : null;\n\t},\n\t instanceOf$1 = function instanceOf(e, t) {\n\t return !!(e && t && e instanceof t);\n\t},\n\t isNullOrUndefined$1 = function isNullOrUndefined(e) {\n\t return null == e;\n\t},\n\t isObject$5 = function isObject(e) {\n\t return getConstructor$1(e) === Object;\n\t},\n\t isNumber$1 = function isNumber(e) {\n\t return getConstructor$1(e) === Number && !Number.isNaN(e);\n\t},\n\t isString$3 = function isString(e) {\n\t return getConstructor$1(e) === String;\n\t},\n\t isBoolean$1 = function isBoolean(e) {\n\t return getConstructor$1(e) === Boolean;\n\t},\n\t isFunction$3 = function isFunction(e) {\n\t return getConstructor$1(e) === Function;\n\t},\n\t isArray$5 = function isArray(e) {\n\t return Array.isArray(e);\n\t},\n\t isNodeList$1 = function isNodeList(e) {\n\t return instanceOf$1(e, NodeList);\n\t},\n\t isElement$1 = function isElement(e) {\n\t return instanceOf$1(e, Element);\n\t},\n\t isEvent$1 = function isEvent(e) {\n\t return instanceOf$1(e, Event);\n\t},\n\t isEmpty$1 = function isEmpty(e) {\n\t return isNullOrUndefined$1(e) || (isString$3(e) || isArray$5(e) || isNodeList$1(e)) && !e.length || isObject$5(e) && !Object.keys(e).length;\n\t},\n\t is$1 = {\n\t nullOrUndefined: isNullOrUndefined$1,\n\t object: isObject$5,\n\t number: isNumber$1,\n\t string: isString$3,\n\t boolean: isBoolean$1,\n\t function: isFunction$3,\n\t array: isArray$5,\n\t nodeList: isNodeList$1,\n\t element: isElement$1,\n\t event: isEvent$1,\n\t empty: isEmpty$1\n\t};\n\n\tfunction getDecimalPlaces(e) {\n\t var t = \"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\t return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0;\n\t}\n\n\tfunction round(e, t) {\n\t if (1 > t) {\n\t var n = getDecimalPlaces(t);\n\t return parseFloat(e.toFixed(n));\n\t }\n\n\t return Math.round(e / t) * t;\n\t}\n\n\tvar RangeTouch = function () {\n\t function e(t, n) {\n\t _classCallCheck$2(this, e), is$1.element(t) ? this.element = t : is$1.string(t) && (this.element = document.querySelector(t)), is$1.element(this.element) && is$1.empty(this.element.rangeTouch) && (this.config = _objectSpread2$1({}, defaults$1, {}, n), this.init());\n\t }\n\n\t return _createClass$2(e, [{\n\t key: \"init\",\n\t value: function value() {\n\t e.enabled && (this.config.addCSS && (this.element.style.userSelect = \"none\", this.element.style.webKitUserSelect = \"none\", this.element.style.touchAction = \"manipulation\"), this.listeners(!0), this.element.rangeTouch = this);\n\t }\n\t }, {\n\t key: \"destroy\",\n\t value: function value() {\n\t e.enabled && (this.config.addCSS && (this.element.style.userSelect = \"\", this.element.style.webKitUserSelect = \"\", this.element.style.touchAction = \"\"), this.listeners(!1), this.element.rangeTouch = null);\n\t }\n\t }, {\n\t key: \"listeners\",\n\t value: function value(e) {\n\t var t = this,\n\t n = e ? \"addEventListener\" : \"removeEventListener\";\n\t [\"touchstart\", \"touchmove\", \"touchend\"].forEach(function (e) {\n\t t.element[n](e, function (e) {\n\t return t.set(e);\n\t }, !1);\n\t });\n\t }\n\t }, {\n\t key: \"get\",\n\t value: function value(t) {\n\t if (!e.enabled || !is$1.event(t)) return null;\n\t var n,\n\t r = t.target,\n\t i = t.changedTouches[0],\n\t o = parseFloat(r.getAttribute(\"min\")) || 0,\n\t s = parseFloat(r.getAttribute(\"max\")) || 100,\n\t u = parseFloat(r.getAttribute(\"step\")) || 1,\n\t c = r.getBoundingClientRect(),\n\t a = 100 / c.width * (this.config.thumbWidth / 2) / 100;\n\t return 0 > (n = 100 / c.width * (i.clientX - c.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), o + round(n / 100 * (s - o), u);\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function value(t) {\n\t e.enabled && is$1.event(t) && !t.target.disabled && (t.preventDefault(), t.target.value = this.get(t), trigger(t.target, \"touchend\" === t.type ? \"change\" : \"input\"));\n\t }\n\t }], [{\n\t key: \"setup\",\n\t value: function value(t) {\n\t var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},\n\t r = null;\n\t if (is$1.empty(t) || is$1.string(t) ? r = Array.from(document.querySelectorAll(is$1.string(t) ? t : 'input[type=\"range\"]')) : is$1.element(t) ? r = [t] : is$1.nodeList(t) ? r = Array.from(t) : is$1.array(t) && (r = t.filter(is$1.element)), is$1.empty(r)) return null;\n\n\t var i = _objectSpread2$1({}, defaults$1, {}, n);\n\n\t if (is$1.string(t) && i.watch) {\n\t var o = new MutationObserver(function (n) {\n\t Array.from(n).forEach(function (n) {\n\t Array.from(n.addedNodes).forEach(function (n) {\n\t is$1.element(n) && matches$1(n, t) && new e(n, i);\n\t });\n\t });\n\t });\n\t o.observe(document.body, {\n\t childList: !0,\n\t subtree: !0\n\t });\n\t }\n\n\t return r.map(function (t) {\n\t return new e(t, n);\n\t });\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t return \"ontouchstart\" in document.documentElement;\n\t }\n\t }]), e;\n\t}();\n\n\tvar nativePromiseConstructor = global_1$1.Promise;\n\n\tvar SPECIES$b = wellKnownSymbol$1('species');\n\n\tvar setSpecies$1 = function (CONSTRUCTOR_NAME) {\n\t var Constructor = getBuiltIn$1(CONSTRUCTOR_NAME);\n\t var defineProperty = objectDefineProperty$1.f;\n\n\t if (descriptors$1 && Constructor && !Constructor[SPECIES$b]) {\n\t defineProperty(Constructor, SPECIES$b, {\n\t configurable: true,\n\t get: function () { return this; }\n\t });\n\t }\n\t};\n\n\tvar engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent);\n\n\tvar location$1 = global_1$1.location;\n\tvar set$3 = global_1$1.setImmediate;\n\tvar clear$1 = global_1$1.clearImmediate;\n\tvar process$4 = global_1$1.process;\n\tvar MessageChannel$1 = global_1$1.MessageChannel;\n\tvar Dispatch$1 = global_1$1.Dispatch;\n\tvar counter$1 = 0;\n\tvar queue$1 = {};\n\tvar ONREADYSTATECHANGE$1 = 'onreadystatechange';\n\tvar defer$1, channel$1, port$1;\n\n\tvar run$1 = function (id) {\n\t // eslint-disable-next-line no-prototype-builtins\n\t if (queue$1.hasOwnProperty(id)) {\n\t var fn = queue$1[id];\n\t delete queue$1[id];\n\t fn();\n\t }\n\t};\n\n\tvar runner$1 = function (id) {\n\t return function () {\n\t run$1(id);\n\t };\n\t};\n\n\tvar listener$1 = function (event) {\n\t run$1(event.data);\n\t};\n\n\tvar post$1 = function (id) {\n\t // old engines have not location.origin\n\t global_1$1.postMessage(id + '', location$1.protocol + '//' + location$1.host);\n\t};\n\n\t// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\n\tif (!set$3 || !clear$1) {\n\t set$3 = function setImmediate(fn) {\n\t var args = [];\n\t var i = 1;\n\t while (arguments.length > i) args.push(arguments[i++]);\n\t queue$1[++counter$1] = function () {\n\t // eslint-disable-next-line no-new-func\n\t (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n\t };\n\t defer$1(counter$1);\n\t return counter$1;\n\t };\n\t clear$1 = function clearImmediate(id) {\n\t delete queue$1[id];\n\t };\n\t // Node.js 0.8-\n\t if (classofRaw$1(process$4) == 'process') {\n\t defer$1 = function (id) {\n\t process$4.nextTick(runner$1(id));\n\t };\n\t // Sphere (JS game engine) Dispatch API\n\t } else if (Dispatch$1 && Dispatch$1.now) {\n\t defer$1 = function (id) {\n\t Dispatch$1.now(runner$1(id));\n\t };\n\t // Browsers with MessageChannel, includes WebWorkers\n\t // except iOS - https://github.com/zloirock/core-js/issues/624\n\t } else if (MessageChannel$1 && !engineIsIos) {\n\t channel$1 = new MessageChannel$1();\n\t port$1 = channel$1.port2;\n\t channel$1.port1.onmessage = listener$1;\n\t defer$1 = functionBindContext(port$1.postMessage, port$1, 1);\n\t // Browsers with postMessage, skip WebWorkers\n\t // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n\t } else if (global_1$1.addEventListener && typeof postMessage == 'function' && !global_1$1.importScripts && !fails$1(post$1)) {\n\t defer$1 = post$1;\n\t global_1$1.addEventListener('message', listener$1, false);\n\t // IE8-\n\t } else if (ONREADYSTATECHANGE$1 in documentCreateElement$1('script')) {\n\t defer$1 = function (id) {\n\t html$1.appendChild(documentCreateElement$1('script'))[ONREADYSTATECHANGE$1] = function () {\n\t html$1.removeChild(this);\n\t run$1(id);\n\t };\n\t };\n\t // Rest old browsers\n\t } else {\n\t defer$1 = function (id) {\n\t setTimeout(runner$1(id), 0);\n\t };\n\t }\n\t}\n\n\tvar task$2 = {\n\t set: set$3,\n\t clear: clear$1\n\t};\n\n\tvar getOwnPropertyDescriptor$7 = objectGetOwnPropertyDescriptor$1.f;\n\n\tvar macrotask$1 = task$2.set;\n\n\n\tvar MutationObserver$2 = global_1$1.MutationObserver || global_1$1.WebKitMutationObserver;\n\tvar process$5 = global_1$1.process;\n\tvar Promise$2 = global_1$1.Promise;\n\tvar IS_NODE$2 = classofRaw$1(process$5) == 'process';\n\t// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\n\tvar queueMicrotaskDescriptor$1 = getOwnPropertyDescriptor$7(global_1$1, 'queueMicrotask');\n\tvar queueMicrotask$1 = queueMicrotaskDescriptor$1 && queueMicrotaskDescriptor$1.value;\n\n\tvar flush$1, head$1, last$1, notify$2, toggle$1, node$1, promise$1, then;\n\n\t// modern engines have queueMicrotask method\n\tif (!queueMicrotask$1) {\n\t flush$1 = function () {\n\t var parent, fn;\n\t if (IS_NODE$2 && (parent = process$5.domain)) parent.exit();\n\t while (head$1) {\n\t fn = head$1.fn;\n\t head$1 = head$1.next;\n\t try {\n\t fn();\n\t } catch (error) {\n\t if (head$1) notify$2();\n\t else last$1 = undefined;\n\t throw error;\n\t }\n\t } last$1 = undefined;\n\t if (parent) parent.enter();\n\t };\n\n\t // Node.js\n\t if (IS_NODE$2) {\n\t notify$2 = function () {\n\t process$5.nextTick(flush$1);\n\t };\n\t // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n\t } else if (MutationObserver$2 && !engineIsIos) {\n\t toggle$1 = true;\n\t node$1 = document.createTextNode('');\n\t new MutationObserver$2(flush$1).observe(node$1, { characterData: true });\n\t notify$2 = function () {\n\t node$1.data = toggle$1 = !toggle$1;\n\t };\n\t // environments with maybe non-completely correct, but existent Promise\n\t } else if (Promise$2 && Promise$2.resolve) {\n\t // Promise.resolve without an argument throws an error in LG WebOS 2\n\t promise$1 = Promise$2.resolve(undefined);\n\t then = promise$1.then;\n\t notify$2 = function () {\n\t then.call(promise$1, flush$1);\n\t };\n\t // for other environments - macrotask based on:\n\t // - setImmediate\n\t // - MessageChannel\n\t // - window.postMessag\n\t // - onreadystatechange\n\t // - setTimeout\n\t } else {\n\t notify$2 = function () {\n\t // strange IE + webpack dev server bug - use .call(global)\n\t macrotask$1.call(global_1$1, flush$1);\n\t };\n\t }\n\t}\n\n\tvar microtask$1 = queueMicrotask$1 || function (fn) {\n\t var task = { fn: fn, next: undefined };\n\t if (last$1) last$1.next = task;\n\t if (!head$1) {\n\t head$1 = task;\n\t notify$2();\n\t } last$1 = task;\n\t};\n\n\tvar PromiseCapability$1 = function (C) {\n\t var resolve, reject;\n\t this.promise = new C(function ($$resolve, $$reject) {\n\t if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n\t resolve = $$resolve;\n\t reject = $$reject;\n\t });\n\t this.resolve = aFunction$3(resolve);\n\t this.reject = aFunction$3(reject);\n\t};\n\n\t// 25.4.1.5 NewPromiseCapability(C)\n\tvar f$f = function (C) {\n\t return new PromiseCapability$1(C);\n\t};\n\n\tvar newPromiseCapability$2 = {\n\t\tf: f$f\n\t};\n\n\tvar promiseResolve$1 = function (C, x) {\n\t anObject$1(C);\n\t if (isObject$4(x) && x.constructor === C) return x;\n\t var promiseCapability = newPromiseCapability$2.f(C);\n\t var resolve = promiseCapability.resolve;\n\t resolve(x);\n\t return promiseCapability.promise;\n\t};\n\n\tvar hostReportErrors$1 = function (a, b) {\n\t var console = global_1$1.console;\n\t if (console && console.error) {\n\t arguments.length === 1 ? console.error(a) : console.error(a, b);\n\t }\n\t};\n\n\tvar perform$1 = function (exec) {\n\t try {\n\t return { error: false, value: exec() };\n\t } catch (error) {\n\t return { error: true, value: error };\n\t }\n\t};\n\n\tvar task$3 = task$2.set;\n\n\n\n\n\n\n\n\n\n\n\tvar SPECIES$c = wellKnownSymbol$1('species');\n\tvar PROMISE$1 = 'Promise';\n\tvar getInternalState$7 = internalState$1.get;\n\tvar setInternalState$c = internalState$1.set;\n\tvar getInternalPromiseState$1 = internalState$1.getterFor(PROMISE$1);\n\tvar PromiseConstructor$1 = nativePromiseConstructor;\n\tvar TypeError$2 = global_1$1.TypeError;\n\tvar document$5 = global_1$1.document;\n\tvar process$6 = global_1$1.process;\n\tvar $fetch$2 = getBuiltIn$1('fetch');\n\tvar newPromiseCapability$3 = newPromiseCapability$2.f;\n\tvar newGenericPromiseCapability$1 = newPromiseCapability$3;\n\tvar IS_NODE$3 = classofRaw$1(process$6) == 'process';\n\tvar DISPATCH_EVENT$1 = !!(document$5 && document$5.createEvent && global_1$1.dispatchEvent);\n\tvar UNHANDLED_REJECTION$1 = 'unhandledrejection';\n\tvar REJECTION_HANDLED$1 = 'rejectionhandled';\n\tvar PENDING$1 = 0;\n\tvar FULFILLED$1 = 1;\n\tvar REJECTED$1 = 2;\n\tvar HANDLED$1 = 1;\n\tvar UNHANDLED$1 = 2;\n\tvar Internal$1, OwnPromiseCapability$1, PromiseWrapper$1, nativeThen;\n\n\tvar FORCED$9 = isForced_1$1(PROMISE$1, function () {\n\t var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor$1) !== String(PromiseConstructor$1);\n\t if (!GLOBAL_CORE_JS_PROMISE) {\n\t // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n\t // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n\t // We can't detect it synchronously, so just check versions\n\t if (engineV8Version === 66) return true;\n\t // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n\t if (!IS_NODE$3 && typeof PromiseRejectionEvent != 'function') return true;\n\t }\n\t // We can't use @@species feature detection in V8 since it causes\n\t // deoptimization and performance degradation\n\t // https://github.com/zloirock/core-js/issues/679\n\t if (engineV8Version >= 51 && /native code/.test(PromiseConstructor$1)) return false;\n\t // Detect correctness of subclassing with @@species support\n\t var promise = PromiseConstructor$1.resolve(1);\n\t var FakePromise = function (exec) {\n\t exec(function () { /* empty */ }, function () { /* empty */ });\n\t };\n\t var constructor = promise.constructor = {};\n\t constructor[SPECIES$c] = FakePromise;\n\t return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n\t});\n\n\tvar INCORRECT_ITERATION$3 = FORCED$9 || !checkCorrectnessOfIteration$1(function (iterable) {\n\t PromiseConstructor$1.all(iterable)['catch'](function () { /* empty */ });\n\t});\n\n\t// helpers\n\tvar isThenable$1 = function (it) {\n\t var then;\n\t return isObject$4(it) && typeof (then = it.then) == 'function' ? then : false;\n\t};\n\n\tvar notify$3 = function (promise, state, isReject) {\n\t if (state.notified) return;\n\t state.notified = true;\n\t var chain = state.reactions;\n\t microtask$1(function () {\n\t var value = state.value;\n\t var ok = state.state == FULFILLED$1;\n\t var index = 0;\n\t // variable length - can't use forEach\n\t while (chain.length > index) {\n\t var reaction = chain[index++];\n\t var handler = ok ? reaction.ok : reaction.fail;\n\t var resolve = reaction.resolve;\n\t var reject = reaction.reject;\n\t var domain = reaction.domain;\n\t var result, then, exited;\n\t try {\n\t if (handler) {\n\t if (!ok) {\n\t if (state.rejection === UNHANDLED$1) onHandleUnhandled$1(promise, state);\n\t state.rejection = HANDLED$1;\n\t }\n\t if (handler === true) result = value;\n\t else {\n\t if (domain) domain.enter();\n\t result = handler(value); // can throw\n\t if (domain) {\n\t domain.exit();\n\t exited = true;\n\t }\n\t }\n\t if (result === reaction.promise) {\n\t reject(TypeError$2('Promise-chain cycle'));\n\t } else if (then = isThenable$1(result)) {\n\t then.call(result, resolve, reject);\n\t } else resolve(result);\n\t } else reject(value);\n\t } catch (error) {\n\t if (domain && !exited) domain.exit();\n\t reject(error);\n\t }\n\t }\n\t state.reactions = [];\n\t state.notified = false;\n\t if (isReject && !state.rejection) onUnhandled$1(promise, state);\n\t });\n\t};\n\n\tvar dispatchEvent$1 = function (name, promise, reason) {\n\t var event, handler;\n\t if (DISPATCH_EVENT$1) {\n\t event = document$5.createEvent('Event');\n\t event.promise = promise;\n\t event.reason = reason;\n\t event.initEvent(name, false, true);\n\t global_1$1.dispatchEvent(event);\n\t } else event = { promise: promise, reason: reason };\n\t if (handler = global_1$1['on' + name]) handler(event);\n\t else if (name === UNHANDLED_REJECTION$1) hostReportErrors$1('Unhandled promise rejection', reason);\n\t};\n\n\tvar onUnhandled$1 = function (promise, state) {\n\t task$3.call(global_1$1, function () {\n\t var value = state.value;\n\t var IS_UNHANDLED = isUnhandled$1(state);\n\t var result;\n\t if (IS_UNHANDLED) {\n\t result = perform$1(function () {\n\t if (IS_NODE$3) {\n\t process$6.emit('unhandledRejection', value, promise);\n\t } else dispatchEvent$1(UNHANDLED_REJECTION$1, promise, value);\n\t });\n\t // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n\t state.rejection = IS_NODE$3 || isUnhandled$1(state) ? UNHANDLED$1 : HANDLED$1;\n\t if (result.error) throw result.value;\n\t }\n\t });\n\t};\n\n\tvar isUnhandled$1 = function (state) {\n\t return state.rejection !== HANDLED$1 && !state.parent;\n\t};\n\n\tvar onHandleUnhandled$1 = function (promise, state) {\n\t task$3.call(global_1$1, function () {\n\t if (IS_NODE$3) {\n\t process$6.emit('rejectionHandled', promise);\n\t } else dispatchEvent$1(REJECTION_HANDLED$1, promise, state.value);\n\t });\n\t};\n\n\tvar bind$1 = function (fn, promise, state, unwrap) {\n\t return function (value) {\n\t fn(promise, state, value, unwrap);\n\t };\n\t};\n\n\tvar internalReject$1 = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t state.value = value;\n\t state.state = REJECTED$1;\n\t notify$3(promise, state, true);\n\t};\n\n\tvar internalResolve$1 = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t try {\n\t if (promise === value) throw TypeError$2(\"Promise can't be resolved itself\");\n\t var then = isThenable$1(value);\n\t if (then) {\n\t microtask$1(function () {\n\t var wrapper = { done: false };\n\t try {\n\t then.call(value,\n\t bind$1(internalResolve$1, promise, wrapper, state),\n\t bind$1(internalReject$1, promise, wrapper, state)\n\t );\n\t } catch (error) {\n\t internalReject$1(promise, wrapper, error, state);\n\t }\n\t });\n\t } else {\n\t state.value = value;\n\t state.state = FULFILLED$1;\n\t notify$3(promise, state, false);\n\t }\n\t } catch (error) {\n\t internalReject$1(promise, { done: false }, error, state);\n\t }\n\t};\n\n\t// constructor polyfill\n\tif (FORCED$9) {\n\t // 25.4.3.1 Promise(executor)\n\t PromiseConstructor$1 = function Promise(executor) {\n\t anInstance$1(this, PromiseConstructor$1, PROMISE$1);\n\t aFunction$3(executor);\n\t Internal$1.call(this);\n\t var state = getInternalState$7(this);\n\t try {\n\t executor(bind$1(internalResolve$1, this, state), bind$1(internalReject$1, this, state));\n\t } catch (error) {\n\t internalReject$1(this, state, error);\n\t }\n\t };\n\t // eslint-disable-next-line no-unused-vars\n\t Internal$1 = function Promise(executor) {\n\t setInternalState$c(this, {\n\t type: PROMISE$1,\n\t done: false,\n\t notified: false,\n\t parent: false,\n\t reactions: [],\n\t rejection: false,\n\t state: PENDING$1,\n\t value: undefined\n\t });\n\t };\n\t Internal$1.prototype = redefineAll$1(PromiseConstructor$1.prototype, {\n\t // `Promise.prototype.then` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n\t then: function then(onFulfilled, onRejected) {\n\t var state = getInternalPromiseState$1(this);\n\t var reaction = newPromiseCapability$3(speciesConstructor$1(this, PromiseConstructor$1));\n\t reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n\t reaction.fail = typeof onRejected == 'function' && onRejected;\n\t reaction.domain = IS_NODE$3 ? process$6.domain : undefined;\n\t state.parent = true;\n\t state.reactions.push(reaction);\n\t if (state.state != PENDING$1) notify$3(this, state, false);\n\t return reaction.promise;\n\t },\n\t // `Promise.prototype.catch` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n\t 'catch': function (onRejected) {\n\t return this.then(undefined, onRejected);\n\t }\n\t });\n\t OwnPromiseCapability$1 = function () {\n\t var promise = new Internal$1();\n\t var state = getInternalState$7(promise);\n\t this.promise = promise;\n\t this.resolve = bind$1(internalResolve$1, promise, state);\n\t this.reject = bind$1(internalReject$1, promise, state);\n\t };\n\t newPromiseCapability$2.f = newPromiseCapability$3 = function (C) {\n\t return C === PromiseConstructor$1 || C === PromiseWrapper$1\n\t ? new OwnPromiseCapability$1(C)\n\t : newGenericPromiseCapability$1(C);\n\t };\n\n\t if ( typeof nativePromiseConstructor == 'function') {\n\t nativeThen = nativePromiseConstructor.prototype.then;\n\n\t // wrap native Promise#then for native async functions\n\t redefine$1(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) {\n\t var that = this;\n\t return new PromiseConstructor$1(function (resolve, reject) {\n\t nativeThen.call(that, resolve, reject);\n\t }).then(onFulfilled, onRejected);\n\t // https://github.com/zloirock/core-js/issues/640\n\t }, { unsafe: true });\n\n\t // wrap fetch result\n\t if (typeof $fetch$2 == 'function') _export$1({ global: true, enumerable: true, forced: true }, {\n\t // eslint-disable-next-line no-unused-vars\n\t fetch: function fetch(input /* , init */) {\n\t return promiseResolve$1(PromiseConstructor$1, $fetch$2.apply(global_1$1, arguments));\n\t }\n\t });\n\t }\n\t}\n\n\t_export$1({ global: true, wrap: true, forced: FORCED$9 }, {\n\t Promise: PromiseConstructor$1\n\t});\n\n\tsetToStringTag$1(PromiseConstructor$1, PROMISE$1, false);\n\tsetSpecies$1(PROMISE$1);\n\n\tPromiseWrapper$1 = getBuiltIn$1(PROMISE$1);\n\n\t// statics\n\t_export$1({ target: PROMISE$1, stat: true, forced: FORCED$9 }, {\n\t // `Promise.reject` method\n\t // https://tc39.github.io/ecma262/#sec-promise.reject\n\t reject: function reject(r) {\n\t var capability = newPromiseCapability$3(this);\n\t capability.reject.call(undefined, r);\n\t return capability.promise;\n\t }\n\t});\n\n\t_export$1({ target: PROMISE$1, stat: true, forced: FORCED$9 }, {\n\t // `Promise.resolve` method\n\t // https://tc39.github.io/ecma262/#sec-promise.resolve\n\t resolve: function resolve(x) {\n\t return promiseResolve$1( this, x);\n\t }\n\t});\n\n\t_export$1({ target: PROMISE$1, stat: true, forced: INCORRECT_ITERATION$3 }, {\n\t // `Promise.all` method\n\t // https://tc39.github.io/ecma262/#sec-promise.all\n\t all: function all(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$3(C);\n\t var resolve = capability.resolve;\n\t var reject = capability.reject;\n\t var result = perform$1(function () {\n\t var $promiseResolve = aFunction$3(C.resolve);\n\t var values = [];\n\t var counter = 0;\n\t var remaining = 1;\n\t iterate_1(iterable, function (promise) {\n\t var index = counter++;\n\t var alreadyCalled = false;\n\t values.push(undefined);\n\t remaining++;\n\t $promiseResolve.call(C, promise).then(function (value) {\n\t if (alreadyCalled) return;\n\t alreadyCalled = true;\n\t values[index] = value;\n\t --remaining || resolve(values);\n\t }, reject);\n\t });\n\t --remaining || resolve(values);\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t },\n\t // `Promise.race` method\n\t // https://tc39.github.io/ecma262/#sec-promise.race\n\t race: function race(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$3(C);\n\t var reject = capability.reject;\n\t var result = perform$1(function () {\n\t var $promiseResolve = aFunction$3(C.resolve);\n\t iterate_1(iterable, function (promise) {\n\t $promiseResolve.call(C, promise).then(capability.resolve, reject);\n\t });\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t }\n\t});\n\n\tvar getOwnPropertyDescriptor$8 = objectGetOwnPropertyDescriptor$1.f;\n\n\n\n\n\n\n\tvar nativeStartsWith = ''.startsWith;\n\tvar min$9 = Math.min;\n\n\tvar CORRECT_IS_REGEXP_LOGIC = correctIsRegexpLogic$1('startsWith');\n\t// https://github.com/zloirock/core-js/pull/702\n\tvar MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () {\n\t var descriptor = getOwnPropertyDescriptor$8(String.prototype, 'startsWith');\n\t return descriptor && !descriptor.writable;\n\t}();\n\n\t// `String.prototype.startsWith` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n\t_export$1({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n\t startsWith: function startsWith(searchString /* , position = 0 */) {\n\t var that = String(requireObjectCoercible$1(this));\n\t notARegexp(searchString);\n\t var index = toLength$1(min$9(arguments.length > 1 ? arguments[1] : undefined, that.length));\n\t var search = String(searchString);\n\t return nativeStartsWith\n\t ? nativeStartsWith.call(that, search, index)\n\t : that.slice(index, index + search.length) === search;\n\t }\n\t});\n\n\t// ==========================================================================\n\t// Type checking utils\n\t// ==========================================================================\n\tvar getConstructor$2 = function getConstructor(input) {\n\t return input !== null && typeof input !== 'undefined' ? input.constructor : null;\n\t};\n\n\tvar instanceOf$2 = function instanceOf(input, constructor) {\n\t return Boolean(input && constructor && input instanceof constructor);\n\t};\n\n\tvar isNullOrUndefined$2 = function isNullOrUndefined(input) {\n\t return input === null || typeof input === 'undefined';\n\t};\n\n\tvar isObject$6 = function isObject(input) {\n\t return getConstructor$2(input) === Object;\n\t};\n\n\tvar isNumber$2 = function isNumber(input) {\n\t return getConstructor$2(input) === Number && !Number.isNaN(input);\n\t};\n\n\tvar isString$4 = function isString(input) {\n\t return getConstructor$2(input) === String;\n\t};\n\n\tvar isBoolean$2 = function isBoolean(input) {\n\t return getConstructor$2(input) === Boolean;\n\t};\n\n\tvar isFunction$4 = function isFunction(input) {\n\t return getConstructor$2(input) === Function;\n\t};\n\n\tvar isArray$6 = function isArray(input) {\n\t return Array.isArray(input);\n\t};\n\n\tvar isWeakMap = function isWeakMap(input) {\n\t return instanceOf$2(input, WeakMap);\n\t};\n\n\tvar isNodeList$2 = function isNodeList(input) {\n\t return instanceOf$2(input, NodeList);\n\t};\n\n\tvar isElement$2 = function isElement(input) {\n\t return instanceOf$2(input, Element);\n\t};\n\n\tvar isTextNode = function isTextNode(input) {\n\t return getConstructor$2(input) === Text;\n\t};\n\n\tvar isEvent$2 = function isEvent(input) {\n\t return instanceOf$2(input, Event);\n\t};\n\n\tvar isKeyboardEvent = function isKeyboardEvent(input) {\n\t return instanceOf$2(input, KeyboardEvent);\n\t};\n\n\tvar isCue = function isCue(input) {\n\t return instanceOf$2(input, window.TextTrackCue) || instanceOf$2(input, window.VTTCue);\n\t};\n\n\tvar isTrack = function isTrack(input) {\n\t return instanceOf$2(input, TextTrack) || !isNullOrUndefined$2(input) && isString$4(input.kind);\n\t};\n\n\tvar isPromise = function isPromise(input) {\n\t return instanceOf$2(input, Promise);\n\t};\n\n\tvar isEmpty$2 = function isEmpty(input) {\n\t return isNullOrUndefined$2(input) || (isString$4(input) || isArray$6(input) || isNodeList$2(input)) && !input.length || isObject$6(input) && !Object.keys(input).length;\n\t};\n\n\tvar isUrl = function isUrl(input) {\n\t // Accept a URL object\n\t if (instanceOf$2(input, window.URL)) {\n\t return true;\n\t } // Must be string from here\n\n\n\t if (!isString$4(input)) {\n\t return false;\n\t } // Add the protocol if required\n\n\n\t var string = input;\n\n\t if (!input.startsWith('http://') || !input.startsWith('https://')) {\n\t string = \"http://\".concat(input);\n\t }\n\n\t try {\n\t return !isEmpty$2(new URL(string).hostname);\n\t } catch (e) {\n\t return false;\n\t }\n\t};\n\n\tvar is$2 = {\n\t nullOrUndefined: isNullOrUndefined$2,\n\t object: isObject$6,\n\t number: isNumber$2,\n\t string: isString$4,\n\t boolean: isBoolean$2,\n\t function: isFunction$4,\n\t array: isArray$6,\n\t weakMap: isWeakMap,\n\t nodeList: isNodeList$2,\n\t element: isElement$2,\n\t textNode: isTextNode,\n\t event: isEvent$2,\n\t keyboardEvent: isKeyboardEvent,\n\t cue: isCue,\n\t track: isTrack,\n\t promise: isPromise,\n\t url: isUrl,\n\t empty: isEmpty$2\n\t};\n\n\tvar transitionEndEvent = function () {\n\t var element = document.createElement('span');\n\t var events = {\n\t WebkitTransition: 'webkitTransitionEnd',\n\t MozTransition: 'transitionend',\n\t OTransition: 'oTransitionEnd otransitionend',\n\t transition: 'transitionend'\n\t };\n\t var type = Object.keys(events).find(function (event) {\n\t return element.style[event] !== undefined;\n\t });\n\t return is$2.string(type) ? events[type] : false;\n\t}(); // Force repaint of element\n\n\tfunction repaint(element, delay) {\n\t setTimeout(function () {\n\t try {\n\t // eslint-disable-next-line no-param-reassign\n\t element.hidden = true; // eslint-disable-next-line no-unused-expressions\n\n\t element.offsetHeight; // eslint-disable-next-line no-param-reassign\n\n\t element.hidden = false;\n\t } catch (e) {// Do nothing\n\t }\n\t }, delay);\n\t}\n\n\t// ==========================================================================\n\t// Browser sniffing\n\t// Unfortunately, due to mixed support, UA sniffing is required\n\t// ==========================================================================\n\tvar browser = {\n\t isIE:\n\t /* @cc_on!@ */\n\t !!document.documentMode,\n\t isEdge: window.navigator.userAgent.includes('Edge'),\n\t isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n\t isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n\t isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform)\n\t};\n\n\t// `Array.prototype.{ reduce, reduceRight }` methods implementation\n\tvar createMethod$5 = function (IS_RIGHT) {\n\t return function (that, callbackfn, argumentsLength, memo) {\n\t aFunction$3(callbackfn);\n\t var O = toObject$1(that);\n\t var self = indexedObject$1(O);\n\t var length = toLength$1(O.length);\n\t var index = IS_RIGHT ? length - 1 : 0;\n\t var i = IS_RIGHT ? -1 : 1;\n\t if (argumentsLength < 2) while (true) {\n\t if (index in self) {\n\t memo = self[index];\n\t index += i;\n\t break;\n\t }\n\t index += i;\n\t if (IS_RIGHT ? index < 0 : length <= index) {\n\t throw TypeError('Reduce of empty array with no initial value');\n\t }\n\t }\n\t for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n\t memo = callbackfn(memo, self[index], index, O);\n\t }\n\t return memo;\n\t };\n\t};\n\n\tvar arrayReduce$1 = {\n\t // `Array.prototype.reduce` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t left: createMethod$5(false),\n\t // `Array.prototype.reduceRight` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n\t right: createMethod$5(true)\n\t};\n\n\tvar $reduce = arrayReduce$1.left;\n\n\n\n\tvar STRICT_METHOD$5 = arrayMethodIsStrict('reduce');\n\tvar USES_TO_LENGTH$8 = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n\t// `Array.prototype.reduce` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t_export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$5 || !USES_TO_LENGTH$8 }, {\n\t reduce: function reduce(callbackfn /* , initialValue */) {\n\t return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tfunction cloneDeep(object) {\n\t return JSON.parse(JSON.stringify(object));\n\t} // Get a nested value in an object\n\n\tfunction getDeep(object, path) {\n\t return path.split('.').reduce(function (obj, key) {\n\t return obj && obj[key];\n\t }, object);\n\t} // Deep extend destination object with N more objects\n\n\tfunction extend$1() {\n\t var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t sources[_key - 1] = arguments[_key];\n\t }\n\n\t if (!sources.length) {\n\t return target;\n\t }\n\n\t var source = sources.shift();\n\n\t if (!is$2.object(source)) {\n\t return target;\n\t }\n\n\t Object.keys(source).forEach(function (key) {\n\t if (is$2.object(source[key])) {\n\t if (!Object.keys(target).includes(key)) {\n\t Object.assign(target, _defineProperty({}, key, {}));\n\t }\n\n\t extend$1(target[key], source[key]);\n\t } else {\n\t Object.assign(target, _defineProperty({}, key, source[key]));\n\t }\n\t });\n\t return extend$1.apply(void 0, [target].concat(sources));\n\t}\n\n\tfunction wrap$3(elements, wrapper) {\n\t // Convert `elements` to an array, if necessary.\n\t var targets = elements.length ? elements : [elements]; // Loops backwards to prevent having to clone the wrapper on the\n\t // first element (see `child` below).\n\n\t Array.from(targets).reverse().forEach(function (element, index) {\n\t var child = index > 0 ? wrapper.cloneNode(true) : wrapper; // Cache the current parent and sibling.\n\n\t var parent = element.parentNode;\n\t var sibling = element.nextSibling; // Wrap the element (is automatically removed from its current\n\t // parent).\n\n\t child.appendChild(element); // If the element had a sibling, insert the wrapper before\n\t // the sibling to maintain the HTML structure; otherwise, just\n\t // append it to the parent.\n\n\t if (sibling) {\n\t parent.insertBefore(child, sibling);\n\t } else {\n\t parent.appendChild(child);\n\t }\n\t });\n\t} // Set attributes\n\n\tfunction setAttributes$1(element, attributes) {\n\t if (!is$2.element(element) || is$2.empty(attributes)) {\n\t return;\n\t } // Assume null and undefined attributes should be left out,\n\t // Setting them would otherwise convert them to \"null\" and \"undefined\"\n\n\n\t Object.entries(attributes).filter(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t value = _ref2[1];\n\n\t return !is$2.nullOrUndefined(value);\n\t }).forEach(function (_ref3) {\n\t var _ref4 = _slicedToArray(_ref3, 2),\n\t key = _ref4[0],\n\t value = _ref4[1];\n\n\t return element.setAttribute(key, value);\n\t });\n\t} // Create a DocumentFragment\n\n\tfunction createElement$1(type, attributes, text) {\n\t // Create a new <element>\n\t var element = document.createElement(type); // Set all passed attributes\n\n\t if (is$2.object(attributes)) {\n\t setAttributes$1(element, attributes);\n\t } // Add text node\n\n\n\t if (is$2.string(text)) {\n\t element.innerText = text;\n\t } // Return built element\n\n\n\t return element;\n\t} // Inaert an element after another\n\n\tfunction insertAfter(element, target) {\n\t if (!is$2.element(element) || !is$2.element(target)) {\n\t return;\n\t }\n\n\t target.parentNode.insertBefore(element, target.nextSibling);\n\t} // Insert a DocumentFragment\n\n\tfunction insertElement(type, parent, attributes, text) {\n\t if (!is$2.element(parent)) {\n\t return;\n\t }\n\n\t parent.appendChild(createElement$1(type, attributes, text));\n\t} // Remove element(s)\n\n\tfunction removeElement(element) {\n\t if (is$2.nodeList(element) || is$2.array(element)) {\n\t Array.from(element).forEach(removeElement);\n\t return;\n\t }\n\n\t if (!is$2.element(element) || !is$2.element(element.parentNode)) {\n\t return;\n\t }\n\n\t element.parentNode.removeChild(element);\n\t} // Remove all child elements\n\n\tfunction emptyElement(element) {\n\t if (!is$2.element(element)) {\n\t return;\n\t }\n\n\t var length = element.childNodes.length;\n\n\t while (length > 0) {\n\t element.removeChild(element.lastChild);\n\t length -= 1;\n\t }\n\t} // Replace element\n\n\tfunction replaceElement(newChild, oldChild) {\n\t if (!is$2.element(oldChild) || !is$2.element(oldChild.parentNode) || !is$2.element(newChild)) {\n\t return null;\n\t }\n\n\t oldChild.parentNode.replaceChild(newChild, oldChild);\n\t return newChild;\n\t} // Get an attribute object from a string selector\n\n\tfunction getAttributesFromSelector(sel, existingAttributes) {\n\t // For example:\n\t // '.test' to { class: 'test' }\n\t // '#test' to { id: 'test' }\n\t // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\t if (!is$2.string(sel) || is$2.empty(sel)) {\n\t return {};\n\t }\n\n\t var attributes = {};\n\t var existing = extend$1({}, existingAttributes);\n\t sel.split(',').forEach(function (s) {\n\t // Remove whitespace\n\t var selector = s.trim();\n\t var className = selector.replace('.', '');\n\t var stripped = selector.replace(/[[\\]]/g, ''); // Get the parts and value\n\n\t var parts = stripped.split('=');\n\n\t var _parts = _slicedToArray(parts, 1),\n\t key = _parts[0];\n\n\t var value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : ''; // Get the first character\n\n\t var start = selector.charAt(0);\n\n\t switch (start) {\n\t case '.':\n\t // Add to existing classname\n\t if (is$2.string(existing.class)) {\n\t attributes.class = \"\".concat(existing.class, \" \").concat(className);\n\t } else {\n\t attributes.class = className;\n\t }\n\n\t break;\n\n\t case '#':\n\t // ID selector\n\t attributes.id = selector.replace('#', '');\n\t break;\n\n\t case '[':\n\t // Attribute selector\n\t attributes[key] = value;\n\t break;\n\t }\n\t });\n\t return extend$1(existing, attributes);\n\t} // Toggle hidden\n\n\tfunction toggleHidden(element, hidden) {\n\t if (!is$2.element(element)) {\n\t return;\n\t }\n\n\t var hide = hidden;\n\n\t if (!is$2.boolean(hide)) {\n\t hide = !element.hidden;\n\t } // eslint-disable-next-line no-param-reassign\n\n\n\t element.hidden = hide;\n\t} // Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\n\n\tfunction toggleClass(element, className, force) {\n\t if (is$2.nodeList(element)) {\n\t return Array.from(element).map(function (e) {\n\t return toggleClass(e, className, force);\n\t });\n\t }\n\n\t if (is$2.element(element)) {\n\t var method = 'toggle';\n\n\t if (typeof force !== 'undefined') {\n\t method = force ? 'add' : 'remove';\n\t }\n\n\t element.classList[method](className);\n\t return element.classList.contains(className);\n\t }\n\n\t return false;\n\t} // Has class name\n\n\tfunction hasClass(element, className) {\n\t return is$2.element(element) && element.classList.contains(className);\n\t} // Element matches selector\n\n\tfunction matches$2(element, selector) {\n\n\t function match() {\n\t return Array.from(document.querySelectorAll(selector)).includes(this);\n\t }\n\n\t var method = match;\n\t return method.call(element, selector);\n\t} // Find all elements\n\n\tfunction getElements(selector) {\n\t return this.elements.container.querySelectorAll(selector);\n\t} // Find a single element\n\n\tfunction getElement(selector) {\n\t return this.elements.container.querySelector(selector);\n\t} // Set focus and tab focus class\n\n\tfunction setFocus() {\n\t var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!is$2.element(element)) {\n\t return;\n\t } // Set regular focus\n\n\n\t element.focus({\n\t preventScroll: true\n\t }); // If we want to mimic keyboard focus via tab\n\n\t if (tabFocus) {\n\t toggleClass(element, this.config.classNames.tabFocus);\n\t }\n\t}\n\n\tvar defaultCodecs = {\n\t 'audio/ogg': 'vorbis',\n\t 'audio/wav': '1',\n\t 'video/webm': 'vp8, vorbis',\n\t 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n\t 'video/ogg': 'theora'\n\t}; // Check for feature support\n\n\tvar support = {\n\t // Basic support\n\t audio: 'canPlayType' in document.createElement('audio'),\n\t video: 'canPlayType' in document.createElement('video'),\n\t // Check for support\n\t // Basic functionality vs full UI\n\t check: function check(type, provider, playsinline) {\n\t var canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\t var api = support[type] || provider !== 'html5';\n\t var ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\t return {\n\t api: api,\n\t ui: ui\n\t };\n\t },\n\t // Picture-in-picture support\n\t // Safari & Chrome only currently\n\t pip: function () {\n\t if (browser.isIPhone) {\n\t return false;\n\t } // Safari\n\t // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n\n\n\t if (is$2.function(createElement$1('video').webkitSetPresentationMode)) {\n\t return true;\n\t } // Chrome\n\t // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n\n\n\t if (document.pictureInPictureEnabled && !createElement$1('video').disablePictureInPicture) {\n\t return true;\n\t }\n\n\t return false;\n\t }(),\n\t // Airplay support\n\t // Safari only currently\n\t airplay: is$2.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\t // Inline playback support\n\t // https://webkit.org/blog/6784/new-video-policies-for-ios/\n\t playsinline: 'playsInline' in document.createElement('video'),\n\t // Check for mime type support against a player instance\n\t // Credits: http://diveintohtml5.info/everything.html\n\t // Related: http://www.leanbackplayer.com/test/h5mt.html\n\t mime: function mime(input) {\n\t if (is$2.empty(input)) {\n\t return false;\n\t }\n\n\t var _input$split = input.split('/'),\n\t _input$split2 = _slicedToArray(_input$split, 1),\n\t mediaType = _input$split2[0];\n\n\t var type = input; // Verify we're using HTML5 and there's no media type mismatch\n\n\t if (!this.isHTML5 || mediaType !== this.type) {\n\t return false;\n\t } // Add codec if required\n\n\n\t if (Object.keys(defaultCodecs).includes(type)) {\n\t type += \"; codecs=\\\"\".concat(defaultCodecs[input], \"\\\"\");\n\t }\n\n\t try {\n\t return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n\t } catch (e) {\n\t return false;\n\t }\n\t },\n\t // Check for textTracks support\n\t textTracks: 'textTracks' in document.createElement('video'),\n\t // <input type=\"range\"> Sliders\n\t rangeInput: function () {\n\t var range = document.createElement('input');\n\t range.type = 'range';\n\t return range.type === 'range';\n\t }(),\n\t // Touch\n\t // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n\t touch: 'ontouchstart' in document.documentElement,\n\t // Detect transitions support\n\t transitions: transitionEndEvent !== false,\n\t // Reduced motion iOS & MacOS setting\n\t // https://webkit.org/blog/7551/responsive-design-for-motion/\n\t reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches\n\t};\n\n\t// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n\t// https://www.youtube.com/watch?v=NPM6172J22g\n\n\tvar supportsPassiveListeners = function () {\n\t // Test via a getter in the options object to see if the passive property is accessed\n\t var supported = false;\n\n\t try {\n\t var options = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supported = true;\n\t return null;\n\t }\n\t });\n\t window.addEventListener('test', null, options);\n\t window.removeEventListener('test', null, options);\n\t } catch (e) {// Do nothing\n\t }\n\n\t return supported;\n\t}(); // Toggle event listener\n\n\n\tfunction toggleListener(element, event, callback) {\n\t var _this = this;\n\n\t var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n\n\t // Bail if no element, event, or callback\n\t if (!element || !('addEventListener' in element) || is$2.empty(event) || !is$2.function(callback)) {\n\t return;\n\t } // Allow multiple events\n\n\n\t var events = event.split(' '); // Build options\n\t // Default to just the capture boolean for browsers with no passive listener support\n\n\t var options = capture; // If passive events listeners are supported\n\n\t if (supportsPassiveListeners) {\n\t options = {\n\t // Whether the listener can be passive (i.e. default never prevented)\n\t passive: passive,\n\t // Whether the listener is a capturing listener or not\n\t capture: capture\n\t };\n\t } // If a single node is passed, bind the event listener\n\n\n\t events.forEach(function (type) {\n\t if (_this && _this.eventListeners && toggle) {\n\t // Cache event listener\n\t _this.eventListeners.push({\n\t element: element,\n\t type: type,\n\t callback: callback,\n\t options: options\n\t });\n\t }\n\n\t element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n\t });\n\t} // Bind event handler\n\n\tfunction on(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, true, passive, capture);\n\t} // Unbind event handler\n\n\tfunction off(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, false, passive, capture);\n\t} // Bind once-only event handler\n\n\tfunction once(element) {\n\t var _this2 = this;\n\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t var onceCallback = function onceCallback() {\n\t off(element, events, onceCallback, passive, capture);\n\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t callback.apply(_this2, args);\n\t };\n\n\t toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n\t} // Trigger event\n\n\tfunction triggerEvent(element) {\n\t var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\t // Bail if no element\n\t if (!is$2.element(element) || is$2.empty(type)) {\n\t return;\n\t } // Create and dispatch the event\n\n\n\t var event = new CustomEvent(type, {\n\t bubbles: bubbles,\n\t detail: _objectSpread2({}, detail, {\n\t plyr: this\n\t })\n\t }); // Dispatch the event\n\n\t element.dispatchEvent(event);\n\t} // Unbind all cached event listeners\n\n\tfunction unbindListeners() {\n\t if (this && this.eventListeners) {\n\t this.eventListeners.forEach(function (item) {\n\t var element = item.element,\n\t type = item.type,\n\t callback = item.callback,\n\t options = item.options;\n\t element.removeEventListener(type, callback, options);\n\t });\n\t this.eventListeners = [];\n\t }\n\t} // Run method when / if player is ready\n\n\tfunction ready() {\n\t var _this3 = this;\n\n\t return new Promise(function (resolve) {\n\t return _this3.ready ? setTimeout(resolve, 0) : on.call(_this3, _this3.elements.container, 'ready', resolve);\n\t }).then(function () {});\n\t}\n\n\tfunction validateRatio(input) {\n\t if (!is$2.array(input) && (!is$2.string(input) || !input.includes(':'))) {\n\t return false;\n\t }\n\n\t var ratio = is$2.array(input) ? input : input.split(':');\n\t return ratio.map(Number).every(is$2.number);\n\t}\n\tfunction reduceAspectRatio(ratio) {\n\t if (!is$2.array(ratio) || !ratio.every(is$2.number)) {\n\t return null;\n\t }\n\n\t var _ratio = _slicedToArray(ratio, 2),\n\t width = _ratio[0],\n\t height = _ratio[1];\n\n\t var getDivider = function getDivider(w, h) {\n\t return h === 0 ? w : getDivider(h, w % h);\n\t };\n\n\t var divider = getDivider(width, height);\n\t return [width / divider, height / divider];\n\t}\n\tfunction getAspectRatio(input) {\n\t var parse = function parse(ratio) {\n\t return validateRatio(ratio) ? ratio.split(':').map(Number) : null;\n\t }; // Try provided ratio\n\n\n\t var ratio = parse(input); // Get from config\n\n\t if (ratio === null) {\n\t ratio = parse(this.config.ratio);\n\t } // Get from embed\n\n\n\t if (ratio === null && !is$2.empty(this.embed) && is$2.array(this.embed.ratio)) {\n\t ratio = this.embed.ratio;\n\t } // Get from HTML5 video\n\n\n\t if (ratio === null && this.isHTML5) {\n\t var _this$media = this.media,\n\t videoWidth = _this$media.videoWidth,\n\t videoHeight = _this$media.videoHeight;\n\t ratio = reduceAspectRatio([videoWidth, videoHeight]);\n\t }\n\n\t return ratio;\n\t} // Set aspect ratio for responsive container\n\n\tfunction setAspectRatio(input) {\n\t if (!this.isVideo) {\n\t return {};\n\t }\n\n\t var wrapper = this.elements.wrapper;\n\t var ratio = getAspectRatio.call(this, input);\n\n\t var _ref = is$2.array(ratio) ? ratio : [0, 0],\n\t _ref2 = _slicedToArray(_ref, 2),\n\t w = _ref2[0],\n\t h = _ref2[1];\n\n\t var padding = 100 / w * h;\n\t wrapper.style.paddingBottom = \"\".concat(padding, \"%\"); // For Vimeo we have an extra <div> to hide the standard controls and UI\n\n\t if (this.isVimeo && this.supported.ui) {\n\t var height = 240;\n\t var offset = (height - padding) / (height / 50);\n\t this.media.style.transform = \"translateY(-\".concat(offset, \"%)\");\n\t } else if (this.isHTML5) {\n\t wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null);\n\t }\n\n\t return {\n\t padding: padding,\n\t ratio: ratio\n\t };\n\t}\n\n\tvar html5 = {\n\t getSources: function getSources() {\n\t var _this = this;\n\n\t if (!this.isHTML5) {\n\t return [];\n\t }\n\n\t var sources = Array.from(this.media.querySelectorAll('source')); // Filter out unsupported sources (if type is specified)\n\n\t return sources.filter(function (source) {\n\t var type = source.getAttribute('type');\n\n\t if (is$2.empty(type)) {\n\t return true;\n\t }\n\n\t return support.mime.call(_this, type);\n\t });\n\t },\n\t // Get quality levels\n\t getQualityOptions: function getQualityOptions() {\n\t // Whether we're forcing all options (e.g. for streaming)\n\t if (this.config.quality.forced) {\n\t return this.config.quality.options;\n\t } // Get sizes from <source> elements\n\n\n\t return html5.getSources.call(this).map(function (source) {\n\t return Number(source.getAttribute('size'));\n\t }).filter(Boolean);\n\t },\n\t setup: function setup() {\n\t if (!this.isHTML5) {\n\t return;\n\t }\n\n\t var player = this; // Set speed options from config\n\n\t player.options.speed = player.config.speed.options; // Set aspect ratio if fixed\n\n\t if (!is$2.empty(this.config.ratio)) {\n\t setAspectRatio.call(player);\n\t } // Quality\n\n\n\t Object.defineProperty(player.media, 'quality', {\n\t get: function get() {\n\t // Get sources\n\t var sources = html5.getSources.call(player);\n\t var source = sources.find(function (s) {\n\t return s.getAttribute('src') === player.source;\n\t }); // Return size, if match is found\n\n\t return source && Number(source.getAttribute('size'));\n\t },\n\t set: function set(input) {\n\t if (player.quality === input) {\n\t return;\n\t } // If we're using an an external handler...\n\n\n\t if (player.config.quality.forced && is$2.function(player.config.quality.onChange)) {\n\t player.config.quality.onChange(input);\n\t } else {\n\t // Get sources\n\t var sources = html5.getSources.call(player); // Get first match for requested size\n\n\t var source = sources.find(function (s) {\n\t return Number(s.getAttribute('size')) === input;\n\t }); // No matching source found\n\n\t if (!source) {\n\t return;\n\t } // Get current state\n\n\n\t var _player$media = player.media,\n\t currentTime = _player$media.currentTime,\n\t paused = _player$media.paused,\n\t preload = _player$media.preload,\n\t readyState = _player$media.readyState,\n\t playbackRate = _player$media.playbackRate; // Set new source\n\n\t player.media.src = source.getAttribute('src'); // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n\n\t if (preload !== 'none' || readyState) {\n\t // Restore time\n\t player.once('loadedmetadata', function () {\n\t player.speed = playbackRate;\n\t player.currentTime = currentTime; // Resume playing\n\n\t if (!paused) {\n\t player.play();\n\t }\n\t }); // Load new source\n\n\t player.media.load();\n\t }\n\t } // Trigger change event\n\n\n\t triggerEvent.call(player, player.media, 'qualitychange', false, {\n\t quality: input\n\t });\n\t }\n\t });\n\t },\n\t // Cancel current network requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\t cancelRequests: function cancelRequests() {\n\t if (!this.isHTML5) {\n\t return;\n\t } // Remove child sources\n\n\n\t removeElement(html5.getSources.call(this)); // Set blank video src attribute\n\t // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n\t // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n\n\t this.media.setAttribute('src', this.config.blankVideo); // Load the new empty source\n\t // This will cancel existing requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\n\t this.media.load(); // Debugging\n\n\t this.debug.log('Cancelled network requests');\n\t }\n\t};\n\n\tfunction dedupe(array) {\n\t if (!is$2.array(array)) {\n\t return array;\n\t }\n\n\t return array.filter(function (item, index) {\n\t return array.indexOf(item) === index;\n\t });\n\t} // Get the closest value in an array\n\n\tfunction closest(array, value) {\n\t if (!is$2.array(array) || !array.length) {\n\t return null;\n\t }\n\n\t return array.reduce(function (prev, curr) {\n\t return Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev;\n\t });\n\t}\n\n\tvar HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$1('slice');\n\tvar USES_TO_LENGTH$9 = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\n\tvar SPECIES$d = wellKnownSymbol$1('species');\n\tvar nativeSlice$1 = [].slice;\n\tvar max$6 = Math.max;\n\n\t// `Array.prototype.slice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n\t// fallback for not array-like ES3 strings and DOM objects\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$9 }, {\n\t slice: function slice(start, end) {\n\t var O = toIndexedObject$1(this);\n\t var length = toLength$1(O.length);\n\t var k = toAbsoluteIndex$1(start, length);\n\t var fin = toAbsoluteIndex$1(end === undefined ? length : end, length);\n\t // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n\t var Constructor, result, n;\n\t if (isArray$4(O)) {\n\t Constructor = O.constructor;\n\t // cross-realm fallback\n\t if (typeof Constructor == 'function' && (Constructor === Array || isArray$4(Constructor.prototype))) {\n\t Constructor = undefined;\n\t } else if (isObject$4(Constructor)) {\n\t Constructor = Constructor[SPECIES$d];\n\t if (Constructor === null) Constructor = undefined;\n\t }\n\t if (Constructor === Array || Constructor === undefined) {\n\t return nativeSlice$1.call(O, k, fin);\n\t }\n\t }\n\t result = new (Constructor === undefined ? Array : Constructor)(max$6(fin - k, 0));\n\t for (n = 0; k < fin; k++, n++) if (k in O) createProperty$1(result, n, O[k]);\n\t result.length = n;\n\t return result;\n\t }\n\t});\n\n\tvar defineProperty$c = objectDefineProperty$1.f;\n\tvar getOwnPropertyNames$3 = objectGetOwnPropertyNames$1.f;\n\n\n\n\n\n\tvar setInternalState$d = internalState$1.set;\n\n\n\n\tvar MATCH$5 = wellKnownSymbol$1('match');\n\tvar NativeRegExp$1 = global_1$1.RegExp;\n\tvar RegExpPrototype$3 = NativeRegExp$1.prototype;\n\tvar re1$1 = /a/g;\n\tvar re2$1 = /a/g;\n\n\t// \"new\" should create a new object, old webkit bug\n\tvar CORRECT_NEW$1 = new NativeRegExp$1(re1$1) !== re1$1;\n\n\tvar UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y;\n\n\tvar FORCED$a = descriptors$1 && isForced_1$1('RegExp', (!CORRECT_NEW$1 || UNSUPPORTED_Y$2 || fails$1(function () {\n\t re2$1[MATCH$5] = false;\n\t // RegExp constructor can alter flags and IsRegExp works correct with @@match\n\t return NativeRegExp$1(re1$1) != re1$1 || NativeRegExp$1(re2$1) == re2$1 || NativeRegExp$1(re1$1, 'i') != '/a/i';\n\t})));\n\n\t// `RegExp` constructor\n\t// https://tc39.github.io/ecma262/#sec-regexp-constructor\n\tif (FORCED$a) {\n\t var RegExpWrapper$1 = function RegExp(pattern, flags) {\n\t var thisIsRegExp = this instanceof RegExpWrapper$1;\n\t var patternIsRegExp = isRegexp$1(pattern);\n\t var flagsAreUndefined = flags === undefined;\n\t var sticky;\n\n\t if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper$1 && flagsAreUndefined) {\n\t return pattern;\n\t }\n\n\t if (CORRECT_NEW$1) {\n\t if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n\t } else if (pattern instanceof RegExpWrapper$1) {\n\t if (flagsAreUndefined) flags = regexpFlags$1.call(pattern);\n\t pattern = pattern.source;\n\t }\n\n\t if (UNSUPPORTED_Y$2) {\n\t sticky = !!flags && flags.indexOf('y') > -1;\n\t if (sticky) flags = flags.replace(/y/g, '');\n\t }\n\n\t var result = inheritIfRequired$1(\n\t CORRECT_NEW$1 ? new NativeRegExp$1(pattern, flags) : NativeRegExp$1(pattern, flags),\n\t thisIsRegExp ? this : RegExpPrototype$3,\n\t RegExpWrapper$1\n\t );\n\n\t if (UNSUPPORTED_Y$2 && sticky) setInternalState$d(result, { sticky: sticky });\n\n\t return result;\n\t };\n\t var proxy$1 = function (key) {\n\t key in RegExpWrapper$1 || defineProperty$c(RegExpWrapper$1, key, {\n\t configurable: true,\n\t get: function () { return NativeRegExp$1[key]; },\n\t set: function (it) { NativeRegExp$1[key] = it; }\n\t });\n\t };\n\t var keys$5 = getOwnPropertyNames$3(NativeRegExp$1);\n\t var index = 0;\n\t while (keys$5.length > index) proxy$1(keys$5[index++]);\n\t RegExpPrototype$3.constructor = RegExpWrapper$1;\n\t RegExpWrapper$1.prototype = RegExpPrototype$3;\n\t redefine$1(global_1$1, 'RegExp', RegExpWrapper$1);\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\n\tsetSpecies$1('RegExp');\n\n\tfunction generateId(prefix) {\n\t return \"\".concat(prefix, \"-\").concat(Math.floor(Math.random() * 10000));\n\t} // Format string\n\n\tfunction format(input) {\n\t for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t if (is$2.empty(input)) {\n\t return input;\n\t }\n\n\t return input.toString().replace(/{(\\d+)}/g, function (match, i) {\n\t return args[i].toString();\n\t });\n\t} // Get percentage\n\n\tfunction getPercentage(current, max) {\n\t if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n\t return 0;\n\t }\n\n\t return (current / max * 100).toFixed(2);\n\t} // Replace all occurances of a string in a string\n\n\tfunction replaceAll() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var find = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var replace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\t return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n\t} // Convert to title case\n\n\tfunction toTitleCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t return input.toString().replace(/\\w\\S*/g, function (text) {\n\t return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase();\n\t });\n\t} // Convert string to pascalCase\n\n\tfunction toPascalCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert kebab case\n\n\t string = replaceAll(string, '-', ' '); // Convert snake case\n\n\t string = replaceAll(string, '_', ' '); // Convert to title case\n\n\t string = toTitleCase(string); // Convert to pascal case\n\n\t return replaceAll(string, ' ', '');\n\t} // Convert string to pascalCase\n\n\tfunction toCamelCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert to pascal case\n\n\t string = toPascalCase(string); // Convert first character to lowercase\n\n\t return string.charAt(0).toLowerCase() + string.slice(1);\n\t} // Remove HTML from a string\n\n\tfunction stripHTML(source) {\n\t var fragment = document.createDocumentFragment();\n\t var element = document.createElement('div');\n\t fragment.appendChild(element);\n\t element.innerHTML = source;\n\t return fragment.firstChild.innerText;\n\t} // Like outerHTML, but also works for DocumentFragment\n\n\tfunction getHTML(element) {\n\t var wrapper = document.createElement('div');\n\t wrapper.appendChild(element);\n\t return wrapper.innerHTML;\n\t}\n\n\tvar resources = {\n\t pip: 'PIP',\n\t airplay: 'AirPlay',\n\t html5: 'HTML5',\n\t vimeo: 'Vimeo',\n\t youtube: 'YouTube'\n\t};\n\tvar i18n = {\n\t get: function get() {\n\t var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t if (is$2.empty(key) || is$2.empty(config)) {\n\t return '';\n\t }\n\n\t var string = getDeep(config.i18n, key);\n\n\t if (is$2.empty(string)) {\n\t if (Object.keys(resources).includes(key)) {\n\t return resources[key];\n\t }\n\n\t return '';\n\t }\n\n\t var replace = {\n\t '{seektime}': config.seekTime,\n\t '{title}': config.title\n\t };\n\t Object.entries(replace).forEach(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t k = _ref2[0],\n\t v = _ref2[1];\n\n\t string = replaceAll(string, k, v);\n\t });\n\t return string;\n\t }\n\t};\n\n\tvar Storage$1 = /*#__PURE__*/function () {\n\t function Storage(player) {\n\t _classCallCheck(this, Storage);\n\n\t this.enabled = player.config.storage.enabled;\n\t this.key = player.config.storage.key;\n\t } // Check for actual support (see if we can use it)\n\n\n\t _createClass(Storage, [{\n\t key: \"get\",\n\t value: function get(key) {\n\t if (!Storage.supported || !this.enabled) {\n\t return null;\n\t }\n\n\t var store = window.localStorage.getItem(this.key);\n\n\t if (is$2.empty(store)) {\n\t return null;\n\t }\n\n\t var json = JSON.parse(store);\n\t return is$2.string(key) && key.length ? json[key] : json;\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function set(object) {\n\t // Bail if we don't have localStorage support or it's disabled\n\t if (!Storage.supported || !this.enabled) {\n\t return;\n\t } // Can only store objectst\n\n\n\t if (!is$2.object(object)) {\n\t return;\n\t } // Get current storage\n\n\n\t var storage = this.get(); // Default to empty object\n\n\t if (is$2.empty(storage)) {\n\t storage = {};\n\t } // Update the working copy of the values\n\n\n\t extend$1(storage, object); // Update storage\n\n\t window.localStorage.setItem(this.key, JSON.stringify(storage));\n\t }\n\t }], [{\n\t key: \"supported\",\n\t get: function get() {\n\t try {\n\t if (!('localStorage' in window)) {\n\t return false;\n\t }\n\n\t var test = '___test'; // Try to use it (it might be disabled, e.g. user is in private mode)\n\t // see: https://github.com/sampotts/plyr/issues/131\n\n\t window.localStorage.setItem(test, test);\n\t window.localStorage.removeItem(test);\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\t }]);\n\n\t return Storage;\n\t}();\n\n\t// ==========================================================================\n\t// Fetch wrapper\n\t// Using XHR to avoid issues with older browsers\n\t// ==========================================================================\n\tfunction fetch(url) {\n\t var responseType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n\t return new Promise(function (resolve, reject) {\n\t try {\n\t var request = new XMLHttpRequest(); // Check for CORS support\n\n\t if (!('withCredentials' in request)) {\n\t return;\n\t }\n\n\t request.addEventListener('load', function () {\n\t if (responseType === 'text') {\n\t try {\n\t resolve(JSON.parse(request.responseText));\n\t } catch (e) {\n\t resolve(request.responseText);\n\t }\n\t } else {\n\t resolve(request.response);\n\t }\n\t });\n\t request.addEventListener('error', function () {\n\t throw new Error(request.status);\n\t });\n\t request.open('GET', url, true); // Set the required response type\n\n\t request.responseType = responseType;\n\t request.send();\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t}\n\n\t// ==========================================================================\n\n\tfunction loadSprite(url, id) {\n\t if (!is$2.string(url)) {\n\t return;\n\t }\n\n\t var prefix = 'cache';\n\t var hasId = is$2.string(id);\n\t var isCached = false;\n\n\t var exists = function exists() {\n\t return document.getElementById(id) !== null;\n\t };\n\n\t var update = function update(container, data) {\n\t // eslint-disable-next-line no-param-reassign\n\t container.innerHTML = data; // Check again incase of race condition\n\n\t if (hasId && exists()) {\n\t return;\n\t } // Inject the SVG to the body\n\n\n\t document.body.insertAdjacentElement('afterbegin', container);\n\t }; // Only load once if ID set\n\n\n\t if (!hasId || !exists()) {\n\t var useStorage = Storage$1.supported; // Create container\n\n\t var container = document.createElement('div');\n\t container.setAttribute('hidden', '');\n\n\t if (hasId) {\n\t container.setAttribute('id', id);\n\t } // Check in cache\n\n\n\t if (useStorage) {\n\t var cached = window.localStorage.getItem(\"\".concat(prefix, \"-\").concat(id));\n\t isCached = cached !== null;\n\n\t if (isCached) {\n\t var data = JSON.parse(cached);\n\t update(container, data.content);\n\t }\n\t } // Get the sprite\n\n\n\t fetch(url).then(function (result) {\n\t if (is$2.empty(result)) {\n\t return;\n\t }\n\n\t if (useStorage) {\n\t window.localStorage.setItem(\"\".concat(prefix, \"-\").concat(id), JSON.stringify({\n\t content: result\n\t }));\n\t }\n\n\t update(container, result);\n\t }).catch(function () {});\n\t }\n\t}\n\n\tvar ceil$2 = Math.ceil;\n\tvar floor$8 = Math.floor;\n\n\t// `Math.trunc` method\n\t// https://tc39.github.io/ecma262/#sec-math.trunc\n\t_export$1({ target: 'Math', stat: true }, {\n\t trunc: function trunc(it) {\n\t return (it > 0 ? floor$8 : ceil$2)(it);\n\t }\n\t});\n\n\tvar getHours = function getHours(value) {\n\t return Math.trunc(value / 60 / 60 % 60, 10);\n\t};\n\tvar getMinutes = function getMinutes(value) {\n\t return Math.trunc(value / 60 % 60, 10);\n\t};\n\tvar getSeconds = function getSeconds(value) {\n\t return Math.trunc(value % 60, 10);\n\t}; // Format time to UI friendly string\n\n\tfunction formatTime() {\n\t var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var displayHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var inverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t // Bail if the value isn't a number\n\t if (!is$2.number(time)) {\n\t return formatTime(undefined, displayHours, inverted);\n\t } // Format time component to add leading zero\n\n\n\t var format = function format(value) {\n\t return \"0\".concat(value).slice(-2);\n\t }; // Breakdown to hours, mins, secs\n\n\n\t var hours = getHours(time);\n\t var mins = getMinutes(time);\n\t var secs = getSeconds(time); // Do we need to display hours?\n\n\t if (displayHours || hours > 0) {\n\t hours = \"\".concat(hours, \":\");\n\t } else {\n\t hours = '';\n\t } // Render\n\n\n\t return \"\".concat(inverted && time > 0 ? '-' : '').concat(hours).concat(format(mins), \":\").concat(format(secs));\n\t}\n\n\tvar controls = {\n\t // Get icon URL\n\t getIconUrl: function getIconUrl() {\n\t var url = new URL(this.config.iconUrl, window.location);\n\t var cors = url.host !== window.location.host || browser.isIE && !window.svg4everybody;\n\t return {\n\t url: this.config.iconUrl,\n\t cors: cors\n\t };\n\t },\n\t // Find the UI controls\n\t findElements: function findElements() {\n\t try {\n\t this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper); // Buttons\n\n\t this.elements.buttons = {\n\t play: getElements.call(this, this.config.selectors.buttons.play),\n\t pause: getElement.call(this, this.config.selectors.buttons.pause),\n\t restart: getElement.call(this, this.config.selectors.buttons.restart),\n\t rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n\t fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n\t mute: getElement.call(this, this.config.selectors.buttons.mute),\n\t pip: getElement.call(this, this.config.selectors.buttons.pip),\n\t airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n\t settings: getElement.call(this, this.config.selectors.buttons.settings),\n\t captions: getElement.call(this, this.config.selectors.buttons.captions),\n\t fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen)\n\t }; // Progress\n\n\t this.elements.progress = getElement.call(this, this.config.selectors.progress); // Inputs\n\n\t this.elements.inputs = {\n\t seek: getElement.call(this, this.config.selectors.inputs.seek),\n\t volume: getElement.call(this, this.config.selectors.inputs.volume)\n\t }; // Display\n\n\t this.elements.display = {\n\t buffer: getElement.call(this, this.config.selectors.display.buffer),\n\t currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n\t duration: getElement.call(this, this.config.selectors.display.duration)\n\t }; // Seek tooltip\n\n\t if (is$2.element(this.elements.progress)) {\n\t this.elements.display.seekTooltip = this.elements.progress.querySelector(\".\".concat(this.config.classNames.tooltip));\n\t }\n\n\t return true;\n\t } catch (error) {\n\t // Log it\n\t this.debug.warn('It looks like there is a problem with your custom controls HTML', error); // Restore native video controls\n\n\t this.toggleNativeControls(true);\n\t return false;\n\t }\n\t },\n\t // Create <svg> icon\n\t createIcon: function createIcon(type, attributes) {\n\t var namespace = 'http://www.w3.org/2000/svg';\n\t var iconUrl = controls.getIconUrl.call(this);\n\t var iconPath = \"\".concat(!iconUrl.cors ? iconUrl.url : '', \"#\").concat(this.config.iconPrefix); // Create <svg>\n\n\t var icon = document.createElementNS(namespace, 'svg');\n\t setAttributes$1(icon, extend$1(attributes, {\n\t 'aria-hidden': 'true',\n\t focusable: 'false'\n\t })); // Create the <use> to reference sprite\n\n\t var use = document.createElementNS(namespace, 'use');\n\t var path = \"\".concat(iconPath, \"-\").concat(type); // Set `href` attributes\n\t // https://github.com/sampotts/plyr/issues/460\n\t // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n\n\t if ('href' in use) {\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\t } // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n\n\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path); // Add <use> to <svg>\n\n\t icon.appendChild(use);\n\t return icon;\n\t },\n\t // Create hidden text label\n\t createLabel: function createLabel(key) {\n\t var attr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var text = i18n.get(key, this.config);\n\n\t var attributes = _objectSpread2({}, attr, {\n\t class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ')\n\t });\n\n\t return createElement$1('span', attributes, text);\n\t },\n\t // Create a badge\n\t createBadge: function createBadge(text) {\n\t if (is$2.empty(text)) {\n\t return null;\n\t }\n\n\t var badge = createElement$1('span', {\n\t class: this.config.classNames.menu.value\n\t });\n\t badge.appendChild(createElement$1('span', {\n\t class: this.config.classNames.menu.badge\n\t }, text));\n\t return badge;\n\t },\n\t // Create a <button>\n\t createButton: function createButton(buttonType, attr) {\n\t var _this = this;\n\n\t var attributes = extend$1({}, attr);\n\t var type = toCamelCase(buttonType);\n\t var props = {\n\t element: 'button',\n\t toggle: false,\n\t label: null,\n\t icon: null,\n\t labelPressed: null,\n\t iconPressed: null\n\t };\n\t ['element', 'icon', 'label'].forEach(function (key) {\n\t if (Object.keys(attributes).includes(key)) {\n\t props[key] = attributes[key];\n\t delete attributes[key];\n\t }\n\t }); // Default to 'button' type to prevent form submission\n\n\t if (props.element === 'button' && !Object.keys(attributes).includes('type')) {\n\t attributes.type = 'button';\n\t } // Set class name\n\n\n\t if (Object.keys(attributes).includes('class')) {\n\t if (!attributes.class.split(' ').some(function (c) {\n\t return c === _this.config.classNames.control;\n\t })) {\n\t extend$1(attributes, {\n\t class: \"\".concat(attributes.class, \" \").concat(this.config.classNames.control)\n\t });\n\t }\n\t } else {\n\t attributes.class = this.config.classNames.control;\n\t } // Large play button\n\n\n\t switch (buttonType) {\n\t case 'play':\n\t props.toggle = true;\n\t props.label = 'play';\n\t props.labelPressed = 'pause';\n\t props.icon = 'play';\n\t props.iconPressed = 'pause';\n\t break;\n\n\t case 'mute':\n\t props.toggle = true;\n\t props.label = 'mute';\n\t props.labelPressed = 'unmute';\n\t props.icon = 'volume';\n\t props.iconPressed = 'muted';\n\t break;\n\n\t case 'captions':\n\t props.toggle = true;\n\t props.label = 'enableCaptions';\n\t props.labelPressed = 'disableCaptions';\n\t props.icon = 'captions-off';\n\t props.iconPressed = 'captions-on';\n\t break;\n\n\t case 'fullscreen':\n\t props.toggle = true;\n\t props.label = 'enterFullscreen';\n\t props.labelPressed = 'exitFullscreen';\n\t props.icon = 'enter-fullscreen';\n\t props.iconPressed = 'exit-fullscreen';\n\t break;\n\n\t case 'play-large':\n\t attributes.class += \" \".concat(this.config.classNames.control, \"--overlaid\");\n\t type = 'play';\n\t props.label = 'play';\n\t props.icon = 'play';\n\t break;\n\n\t default:\n\t if (is$2.empty(props.label)) {\n\t props.label = type;\n\t }\n\n\t if (is$2.empty(props.icon)) {\n\t props.icon = buttonType;\n\t }\n\n\t }\n\n\t var button = createElement$1(props.element); // Setup toggle icon and labels\n\n\t if (props.toggle) {\n\t // Icon\n\t button.appendChild(controls.createIcon.call(this, props.iconPressed, {\n\t class: 'icon--pressed'\n\t }));\n\t button.appendChild(controls.createIcon.call(this, props.icon, {\n\t class: 'icon--not-pressed'\n\t })); // Label/Tooltip\n\n\t button.appendChild(controls.createLabel.call(this, props.labelPressed, {\n\t class: 'label--pressed'\n\t }));\n\t button.appendChild(controls.createLabel.call(this, props.label, {\n\t class: 'label--not-pressed'\n\t }));\n\t } else {\n\t button.appendChild(controls.createIcon.call(this, props.icon));\n\t button.appendChild(controls.createLabel.call(this, props.label));\n\t } // Merge and set attributes\n\n\n\t extend$1(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n\t setAttributes$1(button, attributes); // We have multiple play buttons\n\n\t if (type === 'play') {\n\t if (!is$2.array(this.elements.buttons[type])) {\n\t this.elements.buttons[type] = [];\n\t }\n\n\t this.elements.buttons[type].push(button);\n\t } else {\n\t this.elements.buttons[type] = button;\n\t }\n\n\t return button;\n\t },\n\t // Create an <input type='range'>\n\t createRange: function createRange(type, attributes) {\n\t // Seek input\n\t var input = createElement$1('input', extend$1(getAttributesFromSelector(this.config.selectors.inputs[type]), {\n\t type: 'range',\n\t min: 0,\n\t max: 100,\n\t step: 0.01,\n\t value: 0,\n\t autocomplete: 'off',\n\t // A11y fixes for https://github.com/sampotts/plyr/issues/905\n\t role: 'slider',\n\t 'aria-label': i18n.get(type, this.config),\n\t 'aria-valuemin': 0,\n\t 'aria-valuemax': 100,\n\t 'aria-valuenow': 0\n\t }, attributes));\n\t this.elements.inputs[type] = input; // Set the fill for webkit now\n\n\t controls.updateRangeFill.call(this, input); // Improve support on touch devices\n\n\t RangeTouch.setup(input);\n\t return input;\n\t },\n\t // Create a <progress>\n\t createProgress: function createProgress(type, attributes) {\n\t var progress = createElement$1('progress', extend$1(getAttributesFromSelector(this.config.selectors.display[type]), {\n\t min: 0,\n\t max: 100,\n\t value: 0,\n\t role: 'progressbar',\n\t 'aria-hidden': true\n\t }, attributes)); // Create the label inside\n\n\t if (type !== 'volume') {\n\t progress.appendChild(createElement$1('span', null, '0'));\n\t var suffixKey = {\n\t played: 'played',\n\t buffer: 'buffered'\n\t }[type];\n\t var suffix = suffixKey ? i18n.get(suffixKey, this.config) : '';\n\t progress.innerText = \"% \".concat(suffix.toLowerCase());\n\t }\n\n\t this.elements.display[type] = progress;\n\t return progress;\n\t },\n\t // Create time display\n\t createTime: function createTime(type, attrs) {\n\t var attributes = getAttributesFromSelector(this.config.selectors.display[type], attrs);\n\t var container = createElement$1('div', extend$1(attributes, {\n\t class: \"\".concat(attributes.class ? attributes.class : '', \" \").concat(this.config.classNames.display.time, \" \").trim(),\n\t 'aria-label': i18n.get(type, this.config)\n\t }), '00:00'); // Reference for updates\n\n\t this.elements.display[type] = container;\n\t return container;\n\t },\n\t // Bind keyboard shortcuts for a menu item\n\t // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n\t bindMenuItemShortcuts: function bindMenuItemShortcuts(menuItem, type) {\n\t var _this2 = this;\n\n\t // Navigate through menus via arrow keys and space\n\t on.call(this, menuItem, 'keydown keyup', function (event) {\n\t // We only care about space and ⬆️ ⬇️️ ➡️\n\t if (![32, 38, 39, 40].includes(event.which)) {\n\t return;\n\t } // Prevent play / seek\n\n\n\t event.preventDefault();\n\t event.stopPropagation(); // We're just here to prevent the keydown bubbling\n\n\t if (event.type === 'keydown') {\n\t return;\n\t }\n\n\t var isRadioButton = matches$2(menuItem, '[role=\"menuitemradio\"]'); // Show the respective menu\n\n\t if (!isRadioButton && [32, 39].includes(event.which)) {\n\t controls.showMenuPanel.call(_this2, type, true);\n\t } else {\n\t var target;\n\n\t if (event.which !== 32) {\n\t if (event.which === 40 || isRadioButton && event.which === 39) {\n\t target = menuItem.nextElementSibling;\n\n\t if (!is$2.element(target)) {\n\t target = menuItem.parentNode.firstElementChild;\n\t }\n\t } else {\n\t target = menuItem.previousElementSibling;\n\n\t if (!is$2.element(target)) {\n\t target = menuItem.parentNode.lastElementChild;\n\t }\n\t }\n\n\t setFocus.call(_this2, target, true);\n\t }\n\t }\n\t }, false); // Enter will fire a `click` event but we still need to manage focus\n\t // So we bind to keyup which fires after and set focus here\n\n\t on.call(this, menuItem, 'keyup', function (event) {\n\t if (event.which !== 13) {\n\t return;\n\t }\n\n\t controls.focusFirstMenuItem.call(_this2, null, true);\n\t });\n\t },\n\t // Create a settings menu item\n\t createMenuItem: function createMenuItem(_ref) {\n\t var _this3 = this;\n\n\t var value = _ref.value,\n\t list = _ref.list,\n\t type = _ref.type,\n\t title = _ref.title,\n\t _ref$badge = _ref.badge,\n\t badge = _ref$badge === void 0 ? null : _ref$badge,\n\t _ref$checked = _ref.checked,\n\t checked = _ref$checked === void 0 ? false : _ref$checked;\n\t var attributes = getAttributesFromSelector(this.config.selectors.inputs[type]);\n\t var menuItem = createElement$1('button', extend$1(attributes, {\n\t type: 'button',\n\t role: 'menuitemradio',\n\t class: \"\".concat(this.config.classNames.control, \" \").concat(attributes.class ? attributes.class : '').trim(),\n\t 'aria-checked': checked,\n\t value: value\n\t }));\n\t var flex = createElement$1('span'); // We have to set as HTML incase of special characters\n\n\t flex.innerHTML = title;\n\n\t if (is$2.element(badge)) {\n\t flex.appendChild(badge);\n\t }\n\n\t menuItem.appendChild(flex); // Replicate radio button behaviour\n\n\t Object.defineProperty(menuItem, 'checked', {\n\t enumerable: true,\n\t get: function get() {\n\t return menuItem.getAttribute('aria-checked') === 'true';\n\t },\n\t set: function set(check) {\n\t // Ensure exclusivity\n\t if (check) {\n\t Array.from(menuItem.parentNode.children).filter(function (node) {\n\t return matches$2(node, '[role=\"menuitemradio\"]');\n\t }).forEach(function (node) {\n\t return node.setAttribute('aria-checked', 'false');\n\t });\n\t }\n\n\t menuItem.setAttribute('aria-checked', check ? 'true' : 'false');\n\t }\n\t });\n\t this.listeners.bind(menuItem, 'click keyup', function (event) {\n\t if (is$2.keyboardEvent(event) && event.which !== 32) {\n\t return;\n\t }\n\n\t event.preventDefault();\n\t event.stopPropagation();\n\t menuItem.checked = true;\n\n\t switch (type) {\n\t case 'language':\n\t _this3.currentTrack = Number(value);\n\t break;\n\n\t case 'quality':\n\t _this3.quality = value;\n\t break;\n\n\t case 'speed':\n\t _this3.speed = parseFloat(value);\n\t break;\n\t }\n\n\t controls.showMenuPanel.call(_this3, 'home', is$2.keyboardEvent(event));\n\t }, type, false);\n\t controls.bindMenuItemShortcuts.call(this, menuItem, type);\n\t list.appendChild(menuItem);\n\t },\n\t // Format a time for display\n\t formatTime: function formatTime$1() {\n\t var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t // Bail if the value isn't a number\n\t if (!is$2.number(time)) {\n\t return time;\n\t } // Always display hours if duration is over an hour\n\n\n\t var forceHours = getHours(this.duration) > 0;\n\t return formatTime(time, forceHours, inverted);\n\t },\n\t // Update the displayed time\n\t updateTimeDisplay: function updateTimeDisplay() {\n\t var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t var inverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t // Bail if there's no element to display or the value isn't a number\n\t if (!is$2.element(target) || !is$2.number(time)) {\n\t return;\n\t } // eslint-disable-next-line no-param-reassign\n\n\n\t target.innerText = controls.formatTime(time, inverted);\n\t },\n\t // Update volume UI and storage\n\t updateVolume: function updateVolume() {\n\t if (!this.supported.ui) {\n\t return;\n\t } // Update range\n\n\n\t if (is$2.element(this.elements.inputs.volume)) {\n\t controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n\t } // Update mute state\n\n\n\t if (is$2.element(this.elements.buttons.mute)) {\n\t this.elements.buttons.mute.pressed = this.muted || this.volume === 0;\n\t }\n\t },\n\t // Update seek value and lower fill\n\t setRange: function setRange(target) {\n\t var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t if (!is$2.element(target)) {\n\t return;\n\t } // eslint-disable-next-line\n\n\n\t target.value = value; // Webkit range fill\n\n\t controls.updateRangeFill.call(this, target);\n\t },\n\t // Update <progress> elements\n\t updateProgress: function updateProgress(event) {\n\t var _this4 = this;\n\n\t if (!this.supported.ui || !is$2.event(event)) {\n\t return;\n\t }\n\n\t var value = 0;\n\n\t var setProgress = function setProgress(target, input) {\n\t var val = is$2.number(input) ? input : 0;\n\t var progress = is$2.element(target) ? target : _this4.elements.display.buffer; // Update value and label\n\n\t if (is$2.element(progress)) {\n\t progress.value = val; // Update text label inside\n\n\t var label = progress.getElementsByTagName('span')[0];\n\n\t if (is$2.element(label)) {\n\t label.childNodes[0].nodeValue = val;\n\t }\n\t }\n\t };\n\n\t if (event) {\n\t switch (event.type) {\n\t // Video playing\n\t case 'timeupdate':\n\t case 'seeking':\n\t case 'seeked':\n\t value = getPercentage(this.currentTime, this.duration); // Set seek range value only if it's a 'natural' time event\n\n\t if (event.type === 'timeupdate') {\n\t controls.setRange.call(this, this.elements.inputs.seek, value);\n\t }\n\n\t break;\n\t // Check buffer status\n\n\t case 'playing':\n\t case 'progress':\n\t setProgress(this.elements.display.buffer, this.buffered * 100);\n\t break;\n\t }\n\t }\n\t },\n\t // Webkit polyfill for lower fill range\n\t updateRangeFill: function updateRangeFill(target) {\n\t // Get range from event if event passed\n\t var range = is$2.event(target) ? target.target : target; // Needs to be a valid <input type='range'>\n\n\t if (!is$2.element(range) || range.getAttribute('type') !== 'range') {\n\t return;\n\t } // Set aria values for https://github.com/sampotts/plyr/issues/905\n\n\n\t if (matches$2(range, this.config.selectors.inputs.seek)) {\n\t range.setAttribute('aria-valuenow', this.currentTime);\n\t var currentTime = controls.formatTime(this.currentTime);\n\t var duration = controls.formatTime(this.duration);\n\t var format = i18n.get('seekLabel', this.config);\n\t range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));\n\t } else if (matches$2(range, this.config.selectors.inputs.volume)) {\n\t var percent = range.value * 100;\n\t range.setAttribute('aria-valuenow', percent);\n\t range.setAttribute('aria-valuetext', \"\".concat(percent.toFixed(1), \"%\"));\n\t } else {\n\t range.setAttribute('aria-valuenow', range.value);\n\t } // WebKit only\n\n\n\t if (!browser.isWebkit) {\n\t return;\n\t } // Set CSS custom property\n\n\n\t range.style.setProperty('--value', \"\".concat(range.value / range.max * 100, \"%\"));\n\t },\n\t // Update hover tooltip for seeking\n\t updateSeekTooltip: function updateSeekTooltip(event) {\n\t var _this5 = this;\n\n\t // Bail if setting not true\n\t if (!this.config.tooltips.seek || !is$2.element(this.elements.inputs.seek) || !is$2.element(this.elements.display.seekTooltip) || this.duration === 0) {\n\t return;\n\t }\n\n\t var visible = \"\".concat(this.config.classNames.tooltip, \"--visible\");\n\n\t var toggle = function toggle(show) {\n\t return toggleClass(_this5.elements.display.seekTooltip, visible, show);\n\t }; // Hide on touch\n\n\n\t if (this.touch) {\n\t toggle(false);\n\t return;\n\t } // Determine percentage, if already visible\n\n\n\t var percent = 0;\n\t var clientRect = this.elements.progress.getBoundingClientRect();\n\n\t if (is$2.event(event)) {\n\t percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n\t } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n\t percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n\t } else {\n\t return;\n\t } // Set bounds\n\n\n\t if (percent < 0) {\n\t percent = 0;\n\t } else if (percent > 100) {\n\t percent = 100;\n\t } // Display the time a click would seek to\n\n\n\t controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, this.duration / 100 * percent); // Set position\n\n\t this.elements.display.seekTooltip.style.left = \"\".concat(percent, \"%\"); // Show/hide the tooltip\n\t // If the event is a moues in/out and percentage is inside bounds\n\n\t if (is$2.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n\t toggle(event.type === 'mouseenter');\n\t }\n\t },\n\t // Handle time change event\n\t timeUpdate: function timeUpdate(event) {\n\t // Only invert if only one time element is displayed and used for both duration and currentTime\n\t var invert = !is$2.element(this.elements.display.duration) && this.config.invertTime; // Duration\n\n\t controls.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert); // Ignore updates while seeking\n\n\t if (event && event.type === 'timeupdate' && this.media.seeking) {\n\t return;\n\t } // Playing progress\n\n\n\t controls.updateProgress.call(this, event);\n\t },\n\t // Show the duration on metadataloaded or durationchange events\n\t durationUpdate: function durationUpdate() {\n\t // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n\t if (!this.supported.ui || !this.config.invertTime && this.currentTime) {\n\t return;\n\t } // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n\t // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n\t // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n\t // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n\n\n\t if (this.duration >= Math.pow(2, 32)) {\n\t toggleHidden(this.elements.display.currentTime, true);\n\t toggleHidden(this.elements.progress, true);\n\t return;\n\t } // Update ARIA values\n\n\n\t if (is$2.element(this.elements.inputs.seek)) {\n\t this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n\t } // If there's a spot to display duration\n\n\n\t var hasDuration = is$2.element(this.elements.display.duration); // If there's only one time display, display duration there\n\n\t if (!hasDuration && this.config.displayDuration && this.paused) {\n\t controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n\t } // If there's a duration element, update content\n\n\n\t if (hasDuration) {\n\t controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n\t } // Update the tooltip (if visible)\n\n\n\t controls.updateSeekTooltip.call(this);\n\t },\n\t // Hide/show a tab\n\t toggleMenuButton: function toggleMenuButton(setting, toggle) {\n\t toggleHidden(this.elements.settings.buttons[setting], !toggle);\n\t },\n\t // Update the selected setting\n\t updateSetting: function updateSetting(setting, container, input) {\n\t var pane = this.elements.settings.panels[setting];\n\t var value = null;\n\t var list = container;\n\n\t if (setting === 'captions') {\n\t value = this.currentTrack;\n\t } else {\n\t value = !is$2.empty(input) ? input : this[setting]; // Get default\n\n\t if (is$2.empty(value)) {\n\t value = this.config[setting].default;\n\t } // Unsupported value\n\n\n\t if (!is$2.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n\t this.debug.warn(\"Unsupported value of '\".concat(value, \"' for \").concat(setting));\n\t return;\n\t } // Disabled value\n\n\n\t if (!this.config[setting].options.includes(value)) {\n\t this.debug.warn(\"Disabled value of '\".concat(value, \"' for \").concat(setting));\n\t return;\n\t }\n\t } // Get the list if we need to\n\n\n\t if (!is$2.element(list)) {\n\t list = pane && pane.querySelector('[role=\"menu\"]');\n\t } // If there's no list it means it's not been rendered...\n\n\n\t if (!is$2.element(list)) {\n\t return;\n\t } // Update the label\n\n\n\t var label = this.elements.settings.buttons[setting].querySelector(\".\".concat(this.config.classNames.menu.value));\n\t label.innerHTML = controls.getLabel.call(this, setting, value); // Find the radio option and check it\n\n\t var target = list && list.querySelector(\"[value=\\\"\".concat(value, \"\\\"]\"));\n\n\t if (is$2.element(target)) {\n\t target.checked = true;\n\t }\n\t },\n\t // Translate a value into a nice label\n\t getLabel: function getLabel(setting, value) {\n\t switch (setting) {\n\t case 'speed':\n\t return value === 1 ? i18n.get('normal', this.config) : \"\".concat(value, \"×\");\n\n\t case 'quality':\n\t if (is$2.number(value)) {\n\t var label = i18n.get(\"qualityLabel.\".concat(value), this.config);\n\n\t if (!label.length) {\n\t return \"\".concat(value, \"p\");\n\t }\n\n\t return label;\n\t }\n\n\t return toTitleCase(value);\n\n\t case 'captions':\n\t return captions.getLabel.call(this);\n\n\t default:\n\t return null;\n\t }\n\t },\n\t // Set the quality menu\n\t setQualityMenu: function setQualityMenu(options) {\n\t var _this6 = this;\n\n\t // Menu required\n\t if (!is$2.element(this.elements.settings.panels.quality)) {\n\t return;\n\t }\n\n\t var type = 'quality';\n\t var list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]'); // Set options if passed and filter based on uniqueness and config\n\n\t if (is$2.array(options)) {\n\t this.options.quality = dedupe(options).filter(function (quality) {\n\t return _this6.config.quality.options.includes(quality);\n\t });\n\t } // Toggle the pane and tab\n\n\n\t var toggle = !is$2.empty(this.options.quality) && this.options.quality.length > 1;\n\t controls.toggleMenuButton.call(this, type, toggle); // Empty the menu\n\n\t emptyElement(list); // Check if we need to toggle the parent\n\n\t controls.checkMenu.call(this); // If we're hiding, nothing more to do\n\n\t if (!toggle) {\n\t return;\n\t } // Get the badge HTML for HD, 4K etc\n\n\n\t var getBadge = function getBadge(quality) {\n\t var label = i18n.get(\"qualityBadge.\".concat(quality), _this6.config);\n\n\t if (!label.length) {\n\t return null;\n\t }\n\n\t return controls.createBadge.call(_this6, label);\n\t }; // Sort options by the config and then render options\n\n\n\t this.options.quality.sort(function (a, b) {\n\t var sorting = _this6.config.quality.options;\n\t return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n\t }).forEach(function (quality) {\n\t controls.createMenuItem.call(_this6, {\n\t value: quality,\n\t list: list,\n\t type: type,\n\t title: controls.getLabel.call(_this6, 'quality', quality),\n\t badge: getBadge(quality)\n\t });\n\t });\n\t controls.updateSetting.call(this, type, list);\n\t },\n\t // Set the looping options\n\n\t /* setLoopMenu() {\n\t // Menu required\n\t if (!is.element(this.elements.settings.panels.loop)) {\n\t return;\n\t }\n\t const options = ['start', 'end', 'all', 'reset'];\n\t const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\t // Show the pane and tab\n\t toggleHidden(this.elements.settings.buttons.loop, false);\n\t toggleHidden(this.elements.settings.panels.loop, false);\n\t // Toggle the pane and tab\n\t const toggle = !is.empty(this.loop.options);\n\t controls.toggleMenuButton.call(this, 'loop', toggle);\n\t // Empty the menu\n\t emptyElement(list);\n\t options.forEach(option => {\n\t const item = createElement('li');\n\t const button = createElement(\n\t 'button',\n\t extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n\t type: 'button',\n\t class: this.config.classNames.control,\n\t 'data-plyr-loop-action': option,\n\t }),\n\t i18n.get(option, this.config)\n\t );\n\t if (['start', 'end'].includes(option)) {\n\t const badge = controls.createBadge.call(this, '00:00');\n\t button.appendChild(badge);\n\t }\n\t item.appendChild(button);\n\t list.appendChild(item);\n\t });\n\t }, */\n\t // Get current selected caption language\n\t // TODO: rework this to user the getter in the API?\n\t // Set a list of available captions languages\n\t setCaptionsMenu: function setCaptionsMenu() {\n\t var _this7 = this;\n\n\t // Menu required\n\t if (!is$2.element(this.elements.settings.panels.captions)) {\n\t return;\n\t } // TODO: Captions or language? Currently it's mixed\n\n\n\t var type = 'captions';\n\t var list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n\t var tracks = captions.getTracks.call(this);\n\t var toggle = Boolean(tracks.length); // Toggle the pane and tab\n\n\t controls.toggleMenuButton.call(this, type, toggle); // Empty the menu\n\n\t emptyElement(list); // Check if we need to toggle the parent\n\n\t controls.checkMenu.call(this); // If there's no captions, bail\n\n\t if (!toggle) {\n\t return;\n\t } // Generate options data\n\n\n\t var options = tracks.map(function (track, value) {\n\t return {\n\t value: value,\n\t checked: _this7.captions.toggled && _this7.currentTrack === value,\n\t title: captions.getLabel.call(_this7, track),\n\t badge: track.language && controls.createBadge.call(_this7, track.language.toUpperCase()),\n\t list: list,\n\t type: 'language'\n\t };\n\t }); // Add the \"Disabled\" option to turn off captions\n\n\t options.unshift({\n\t value: -1,\n\t checked: !this.captions.toggled,\n\t title: i18n.get('disabled', this.config),\n\t list: list,\n\t type: 'language'\n\t }); // Generate options\n\n\t options.forEach(controls.createMenuItem.bind(this));\n\t controls.updateSetting.call(this, type, list);\n\t },\n\t // Set a list of available captions languages\n\t setSpeedMenu: function setSpeedMenu() {\n\t var _this8 = this;\n\n\t // Menu required\n\t if (!is$2.element(this.elements.settings.panels.speed)) {\n\t return;\n\t }\n\n\t var type = 'speed';\n\t var list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]'); // Filter out invalid speeds\n\n\t this.options.speed = this.options.speed.filter(function (o) {\n\t return o >= _this8.minimumSpeed && o <= _this8.maximumSpeed;\n\t }); // Toggle the pane and tab\n\n\t var toggle = !is$2.empty(this.options.speed) && this.options.speed.length > 1;\n\t controls.toggleMenuButton.call(this, type, toggle); // Empty the menu\n\n\t emptyElement(list); // Check if we need to toggle the parent\n\n\t controls.checkMenu.call(this); // If we're hiding, nothing more to do\n\n\t if (!toggle) {\n\t return;\n\t } // Create items\n\n\n\t this.options.speed.forEach(function (speed) {\n\t controls.createMenuItem.call(_this8, {\n\t value: speed,\n\t list: list,\n\t type: type,\n\t title: controls.getLabel.call(_this8, 'speed', speed)\n\t });\n\t });\n\t controls.updateSetting.call(this, type, list);\n\t },\n\t // Check if we need to hide/show the settings menu\n\t checkMenu: function checkMenu() {\n\t var buttons = this.elements.settings.buttons;\n\t var visible = !is$2.empty(buttons) && Object.values(buttons).some(function (button) {\n\t return !button.hidden;\n\t });\n\t toggleHidden(this.elements.settings.menu, !visible);\n\t },\n\t // Focus the first menu item in a given (or visible) menu\n\t focusFirstMenuItem: function focusFirstMenuItem(pane) {\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (this.elements.settings.popup.hidden) {\n\t return;\n\t }\n\n\t var target = pane;\n\n\t if (!is$2.element(target)) {\n\t target = Object.values(this.elements.settings.panels).find(function (p) {\n\t return !p.hidden;\n\t });\n\t }\n\n\t var firstItem = target.querySelector('[role^=\"menuitem\"]');\n\t setFocus.call(this, firstItem, tabFocus);\n\t },\n\t // Show/hide menu\n\t toggleMenu: function toggleMenu(input) {\n\t var popup = this.elements.settings.popup;\n\t var button = this.elements.buttons.settings; // Menu and button are required\n\n\t if (!is$2.element(popup) || !is$2.element(button)) {\n\t return;\n\t } // True toggle by default\n\n\n\t var hidden = popup.hidden;\n\t var show = hidden;\n\n\t if (is$2.boolean(input)) {\n\t show = input;\n\t } else if (is$2.keyboardEvent(input) && input.which === 27) {\n\t show = false;\n\t } else if (is$2.event(input)) {\n\t // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n\t // Element in the shadowDOM. The path, if available, is complete.\n\t var target = is$2.function(input.composedPath) ? input.composedPath()[0] : input.target;\n\t var isMenuItem = popup.contains(target); // If the click was inside the menu or if the click\n\t // wasn't the button or menu item and we're trying to\n\t // show the menu (a doc click shouldn't show the menu)\n\n\t if (isMenuItem || !isMenuItem && input.target !== button && show) {\n\t return;\n\t }\n\t } // Set button attributes\n\n\n\t button.setAttribute('aria-expanded', show); // Show the actual popup\n\n\t toggleHidden(popup, !show); // Add class hook\n\n\t toggleClass(this.elements.container, this.config.classNames.menu.open, show); // Focus the first item if key interaction\n\n\t if (show && is$2.keyboardEvent(input)) {\n\t controls.focusFirstMenuItem.call(this, null, true);\n\t } else if (!show && !hidden) {\n\t // If closing, re-focus the button\n\t setFocus.call(this, button, is$2.keyboardEvent(input));\n\t }\n\t },\n\t // Get the natural size of a menu panel\n\t getMenuSize: function getMenuSize(tab) {\n\t var clone = tab.cloneNode(true);\n\t clone.style.position = 'absolute';\n\t clone.style.opacity = 0;\n\t clone.removeAttribute('hidden'); // Append to parent so we get the \"real\" size\n\n\t tab.parentNode.appendChild(clone); // Get the sizes before we remove\n\n\t var width = clone.scrollWidth;\n\t var height = clone.scrollHeight; // Remove from the DOM\n\n\t removeElement(clone);\n\t return {\n\t width: width,\n\t height: height\n\t };\n\t },\n\t // Show a panel in the menu\n\t showMenuPanel: function showMenuPanel() {\n\t var _this9 = this;\n\n\t var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var target = this.elements.container.querySelector(\"#plyr-settings-\".concat(this.id, \"-\").concat(type)); // Nothing to show, bail\n\n\t if (!is$2.element(target)) {\n\t return;\n\t } // Hide all other panels\n\n\n\t var container = target.parentNode;\n\t var current = Array.from(container.children).find(function (node) {\n\t return !node.hidden;\n\t }); // If we can do fancy animations, we'll animate the height/width\n\n\t if (support.transitions && !support.reducedMotion) {\n\t // Set the current width as a base\n\t container.style.width = \"\".concat(current.scrollWidth, \"px\");\n\t container.style.height = \"\".concat(current.scrollHeight, \"px\"); // Get potential sizes\n\n\t var size = controls.getMenuSize.call(this, target); // Restore auto height/width\n\n\t var restore = function restore(event) {\n\t // We're only bothered about height and width on the container\n\t if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n\t return;\n\t } // Revert back to auto\n\n\n\t container.style.width = '';\n\t container.style.height = ''; // Only listen once\n\n\t off.call(_this9, container, transitionEndEvent, restore);\n\t }; // Listen for the transition finishing and restore auto height/width\n\n\n\t on.call(this, container, transitionEndEvent, restore); // Set dimensions to target\n\n\t container.style.width = \"\".concat(size.width, \"px\");\n\t container.style.height = \"\".concat(size.height, \"px\");\n\t } // Set attributes on current tab\n\n\n\t toggleHidden(current, true); // Set attributes on target\n\n\t toggleHidden(target, false); // Focus the first item\n\n\t controls.focusFirstMenuItem.call(this, target, tabFocus);\n\t },\n\t // Set the download URL\n\t setDownloadUrl: function setDownloadUrl() {\n\t var button = this.elements.buttons.download; // Bail if no button\n\n\t if (!is$2.element(button)) {\n\t return;\n\t } // Set attribute\n\n\n\t button.setAttribute('href', this.download);\n\t },\n\t // Build the default HTML\n\t create: function create(data) {\n\t var _this10 = this;\n\n\t var bindMenuItemShortcuts = controls.bindMenuItemShortcuts,\n\t createButton = controls.createButton,\n\t createProgress = controls.createProgress,\n\t createRange = controls.createRange,\n\t createTime = controls.createTime,\n\t setQualityMenu = controls.setQualityMenu,\n\t setSpeedMenu = controls.setSpeedMenu,\n\t showMenuPanel = controls.showMenuPanel;\n\t this.elements.controls = null; // Larger overlaid play button\n\n\t if (this.config.controls.includes('play-large')) {\n\t this.elements.container.appendChild(createButton.call(this, 'play-large'));\n\t } // Create the container\n\n\n\t var container = createElement$1('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n\t this.elements.controls = container; // Default item attributes\n\n\t var defaultAttributes = {\n\t class: 'plyr__controls__item'\n\t }; // Loop through controls in order\n\n\t dedupe(this.config.controls).forEach(function (control) {\n\t // Restart button\n\t if (control === 'restart') {\n\t container.appendChild(createButton.call(_this10, 'restart', defaultAttributes));\n\t } // Rewind button\n\n\n\t if (control === 'rewind') {\n\t container.appendChild(createButton.call(_this10, 'rewind', defaultAttributes));\n\t } // Play/Pause button\n\n\n\t if (control === 'play') {\n\t container.appendChild(createButton.call(_this10, 'play', defaultAttributes));\n\t } // Fast forward button\n\n\n\t if (control === 'fast-forward') {\n\t container.appendChild(createButton.call(_this10, 'fast-forward', defaultAttributes));\n\t } // Progress\n\n\n\t if (control === 'progress') {\n\t var progressContainer = createElement$1('div', {\n\t class: \"\".concat(defaultAttributes.class, \" plyr__progress__container\")\n\t });\n\t var progress = createElement$1('div', getAttributesFromSelector(_this10.config.selectors.progress)); // Seek range slider\n\n\t progress.appendChild(createRange.call(_this10, 'seek', {\n\t id: \"plyr-seek-\".concat(data.id)\n\t })); // Buffer progress\n\n\t progress.appendChild(createProgress.call(_this10, 'buffer')); // TODO: Add loop display indicator\n\t // Seek tooltip\n\n\t if (_this10.config.tooltips.seek) {\n\t var tooltip = createElement$1('span', {\n\t class: _this10.config.classNames.tooltip\n\t }, '00:00');\n\t progress.appendChild(tooltip);\n\t _this10.elements.display.seekTooltip = tooltip;\n\t }\n\n\t _this10.elements.progress = progress;\n\t progressContainer.appendChild(_this10.elements.progress);\n\t container.appendChild(progressContainer);\n\t } // Media current time display\n\n\n\t if (control === 'current-time') {\n\t container.appendChild(createTime.call(_this10, 'currentTime', defaultAttributes));\n\t } // Media duration display\n\n\n\t if (control === 'duration') {\n\t container.appendChild(createTime.call(_this10, 'duration', defaultAttributes));\n\t } // Volume controls\n\n\n\t if (control === 'mute' || control === 'volume') {\n\t var volume = _this10.elements.volume; // Create the volume container if needed\n\n\t if (!is$2.element(volume) || !container.contains(volume)) {\n\t volume = createElement$1('div', extend$1({}, defaultAttributes, {\n\t class: \"\".concat(defaultAttributes.class, \" plyr__volume\").trim()\n\t }));\n\t _this10.elements.volume = volume;\n\t container.appendChild(volume);\n\t } // Toggle mute button\n\n\n\t if (control === 'mute') {\n\t volume.appendChild(createButton.call(_this10, 'mute'));\n\t } // Volume range control\n\t // Ignored on iOS as it's handled globally\n\t // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n\n\n\t if (control === 'volume' && !browser.isIos) {\n\t // Set the attributes\n\t var attributes = {\n\t max: 1,\n\t step: 0.05,\n\t value: _this10.config.volume\n\t }; // Create the volume range slider\n\n\t volume.appendChild(createRange.call(_this10, 'volume', extend$1(attributes, {\n\t id: \"plyr-volume-\".concat(data.id)\n\t })));\n\t }\n\t } // Toggle captions button\n\n\n\t if (control === 'captions') {\n\t container.appendChild(createButton.call(_this10, 'captions', defaultAttributes));\n\t } // Settings button / menu\n\n\n\t if (control === 'settings' && !is$2.empty(_this10.config.settings)) {\n\t var wrapper = createElement$1('div', extend$1({}, defaultAttributes, {\n\t class: \"\".concat(defaultAttributes.class, \" plyr__menu\").trim(),\n\t hidden: ''\n\t }));\n\t wrapper.appendChild(createButton.call(_this10, 'settings', {\n\t 'aria-haspopup': true,\n\t 'aria-controls': \"plyr-settings-\".concat(data.id),\n\t 'aria-expanded': false\n\t }));\n\t var popup = createElement$1('div', {\n\t class: 'plyr__menu__container',\n\t id: \"plyr-settings-\".concat(data.id),\n\t hidden: ''\n\t });\n\t var inner = createElement$1('div');\n\t var home = createElement$1('div', {\n\t id: \"plyr-settings-\".concat(data.id, \"-home\")\n\t }); // Create the menu\n\n\t var menu = createElement$1('div', {\n\t role: 'menu'\n\t });\n\t home.appendChild(menu);\n\t inner.appendChild(home);\n\t _this10.elements.settings.panels.home = home; // Build the menu items\n\n\t _this10.config.settings.forEach(function (type) {\n\t // TODO: bundle this with the createMenuItem helper and bindings\n\t var menuItem = createElement$1('button', extend$1(getAttributesFromSelector(_this10.config.selectors.buttons.settings), {\n\t type: 'button',\n\t class: \"\".concat(_this10.config.classNames.control, \" \").concat(_this10.config.classNames.control, \"--forward\"),\n\t role: 'menuitem',\n\t 'aria-haspopup': true,\n\t hidden: ''\n\t })); // Bind menu shortcuts for keyboard users\n\n\t bindMenuItemShortcuts.call(_this10, menuItem, type); // Show menu on click\n\n\t on.call(_this10, menuItem, 'click', function () {\n\t showMenuPanel.call(_this10, type, false);\n\t });\n\t var flex = createElement$1('span', null, i18n.get(type, _this10.config));\n\t var value = createElement$1('span', {\n\t class: _this10.config.classNames.menu.value\n\t }); // Speed contains HTML entities\n\n\t value.innerHTML = data[type];\n\t flex.appendChild(value);\n\t menuItem.appendChild(flex);\n\t menu.appendChild(menuItem); // Build the panes\n\n\t var pane = createElement$1('div', {\n\t id: \"plyr-settings-\".concat(data.id, \"-\").concat(type),\n\t hidden: ''\n\t }); // Back button\n\n\t var backButton = createElement$1('button', {\n\t type: 'button',\n\t class: \"\".concat(_this10.config.classNames.control, \" \").concat(_this10.config.classNames.control, \"--back\")\n\t }); // Visible label\n\n\t backButton.appendChild(createElement$1('span', {\n\t 'aria-hidden': true\n\t }, i18n.get(type, _this10.config))); // Screen reader label\n\n\t backButton.appendChild(createElement$1('span', {\n\t class: _this10.config.classNames.hidden\n\t }, i18n.get('menuBack', _this10.config))); // Go back via keyboard\n\n\t on.call(_this10, pane, 'keydown', function (event) {\n\t // We only care about <-\n\t if (event.which !== 37) {\n\t return;\n\t } // Prevent seek\n\n\n\t event.preventDefault();\n\t event.stopPropagation(); // Show the respective menu\n\n\t showMenuPanel.call(_this10, 'home', true);\n\t }, false); // Go back via button click\n\n\t on.call(_this10, backButton, 'click', function () {\n\t showMenuPanel.call(_this10, 'home', false);\n\t }); // Add to pane\n\n\t pane.appendChild(backButton); // Menu\n\n\t pane.appendChild(createElement$1('div', {\n\t role: 'menu'\n\t }));\n\t inner.appendChild(pane);\n\t _this10.elements.settings.buttons[type] = menuItem;\n\t _this10.elements.settings.panels[type] = pane;\n\t });\n\n\t popup.appendChild(inner);\n\t wrapper.appendChild(popup);\n\t container.appendChild(wrapper);\n\t _this10.elements.settings.popup = popup;\n\t _this10.elements.settings.menu = wrapper;\n\t } // Picture in picture button\n\n\n\t if (control === 'pip' && support.pip) {\n\t container.appendChild(createButton.call(_this10, 'pip', defaultAttributes));\n\t } // Airplay button\n\n\n\t if (control === 'airplay' && support.airplay) {\n\t container.appendChild(createButton.call(_this10, 'airplay', defaultAttributes));\n\t } // Download button\n\n\n\t if (control === 'download') {\n\t var _attributes = extend$1({}, defaultAttributes, {\n\t element: 'a',\n\t href: _this10.download,\n\t target: '_blank'\n\t }); // Set download attribute for HTML5 only\n\n\n\t if (_this10.isHTML5) {\n\t _attributes.download = '';\n\t }\n\n\t var download = _this10.config.urls.download;\n\n\t if (!is$2.url(download) && _this10.isEmbed) {\n\t extend$1(_attributes, {\n\t icon: \"logo-\".concat(_this10.provider),\n\t label: _this10.provider\n\t });\n\t }\n\n\t container.appendChild(createButton.call(_this10, 'download', _attributes));\n\t } // Toggle fullscreen button\n\n\n\t if (control === 'fullscreen') {\n\t container.appendChild(createButton.call(_this10, 'fullscreen', defaultAttributes));\n\t }\n\t }); // Set available quality levels\n\n\t if (this.isHTML5) {\n\t setQualityMenu.call(this, html5.getQualityOptions.call(this));\n\t }\n\n\t setSpeedMenu.call(this);\n\t return container;\n\t },\n\t // Insert controls\n\t inject: function inject() {\n\t var _this11 = this;\n\n\t // Sprite\n\t if (this.config.loadSprite) {\n\t var icon = controls.getIconUrl.call(this); // Only load external sprite using AJAX\n\n\t if (icon.cors) {\n\t loadSprite(icon.url, 'sprite-plyr');\n\t }\n\t } // Create a unique ID\n\n\n\t this.id = Math.floor(Math.random() * 10000); // Null by default\n\n\t var container = null;\n\t this.elements.controls = null; // Set template properties\n\n\t var props = {\n\t id: this.id,\n\t seektime: this.config.seekTime,\n\t title: this.config.title\n\t };\n\t var update = true; // If function, run it and use output\n\n\t if (is$2.function(this.config.controls)) {\n\t this.config.controls = this.config.controls.call(this, props);\n\t } // Convert falsy controls to empty array (primarily for empty strings)\n\n\n\t if (!this.config.controls) {\n\t this.config.controls = [];\n\t }\n\n\t if (is$2.element(this.config.controls) || is$2.string(this.config.controls)) {\n\t // HTMLElement or Non-empty string passed as the option\n\t container = this.config.controls;\n\t } else {\n\t // Create controls\n\t container = controls.create.call(this, {\n\t id: this.id,\n\t seektime: this.config.seekTime,\n\t speed: this.speed,\n\t quality: this.quality,\n\t captions: captions.getLabel.call(this) // TODO: Looping\n\t // loop: 'None',\n\n\t });\n\t update = false;\n\t } // Replace props with their value\n\n\n\t var replace = function replace(input) {\n\t var result = input;\n\t Object.entries(props).forEach(function (_ref2) {\n\t var _ref3 = _slicedToArray(_ref2, 2),\n\t key = _ref3[0],\n\t value = _ref3[1];\n\n\t result = replaceAll(result, \"{\".concat(key, \"}\"), value);\n\t });\n\t return result;\n\t }; // Update markup\n\n\n\t if (update) {\n\t if (is$2.string(this.config.controls)) {\n\t container = replace(container);\n\t } else if (is$2.element(container)) {\n\t container.innerHTML = replace(container.innerHTML);\n\t }\n\t } // Controls container\n\n\n\t var target; // Inject to custom location\n\n\t if (is$2.string(this.config.selectors.controls.container)) {\n\t target = document.querySelector(this.config.selectors.controls.container);\n\t } // Inject into the container by default\n\n\n\t if (!is$2.element(target)) {\n\t target = this.elements.container;\n\t } // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n\n\n\t var insertMethod = is$2.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n\t target[insertMethod]('afterbegin', container); // Find the elements if need be\n\n\t if (!is$2.element(this.elements.controls)) {\n\t controls.findElements.call(this);\n\t } // Add pressed property to buttons\n\n\n\t if (!is$2.empty(this.elements.buttons)) {\n\t var addProperty = function addProperty(button) {\n\t var className = _this11.config.classNames.controlPressed;\n\t Object.defineProperty(button, 'pressed', {\n\t enumerable: true,\n\t get: function get() {\n\t return hasClass(button, className);\n\t },\n\t set: function set() {\n\t var pressed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t toggleClass(button, className, pressed);\n\t }\n\t });\n\t }; // Toggle classname when pressed property is set\n\n\n\t Object.values(this.elements.buttons).filter(Boolean).forEach(function (button) {\n\t if (is$2.array(button) || is$2.nodeList(button)) {\n\t Array.from(button).filter(Boolean).forEach(addProperty);\n\t } else {\n\t addProperty(button);\n\t }\n\t });\n\t } // Edge sometimes doesn't finish the paint so force a repaint\n\n\n\t if (browser.isEdge) {\n\t repaint(target);\n\t } // Setup tooltips\n\n\n\t if (this.config.tooltips.controls) {\n\t var _this$config = this.config,\n\t classNames = _this$config.classNames,\n\t selectors = _this$config.selectors;\n\t var selector = \"\".concat(selectors.controls.wrapper, \" \").concat(selectors.labels, \" .\").concat(classNames.hidden);\n\t var labels = getElements.call(this, selector);\n\t Array.from(labels).forEach(function (label) {\n\t toggleClass(label, _this11.config.classNames.hidden, false);\n\t toggleClass(label, _this11.config.classNames.tooltip, true);\n\t });\n\t }\n\t }\n\t};\n\n\t/**\n\t * Parse a string to a URL object\n\t * @param {String} input - the URL to be parsed\n\t * @param {Boolean} safe - failsafe parsing\n\t */\n\n\tfunction parseUrl$2(input) {\n\t var safe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t var url = input;\n\n\t if (safe) {\n\t var parser = document.createElement('a');\n\t parser.href = url;\n\t url = parser.href;\n\t }\n\n\t try {\n\t return new URL(url);\n\t } catch (e) {\n\t return null;\n\t }\n\t} // Convert object to URLSearchParams\n\n\tfunction buildUrlParams(input) {\n\t var params = new URLSearchParams();\n\n\t if (is$2.object(input)) {\n\t Object.entries(input).forEach(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t key = _ref2[0],\n\t value = _ref2[1];\n\n\t params.set(key, value);\n\t });\n\t }\n\n\t return params;\n\t}\n\n\tvar captions = {\n\t // Setup captions\n\t setup: function setup() {\n\t // Requires UI support\n\t if (!this.supported.ui) {\n\t return;\n\t } // Only Vimeo and HTML5 video supported at this point\n\n\n\t if (!this.isVideo || this.isYouTube || this.isHTML5 && !support.textTracks) {\n\t // Clear menu and hide\n\t if (is$2.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {\n\t controls.setCaptionsMenu.call(this);\n\t }\n\n\t return;\n\t } // Inject the container\n\n\n\t if (!is$2.element(this.elements.captions)) {\n\t this.elements.captions = createElement$1('div', getAttributesFromSelector(this.config.selectors.captions));\n\t insertAfter(this.elements.captions, this.elements.wrapper);\n\t } // Fix IE captions if CORS is used\n\t // Fetch captions and inject as blobs instead (data URIs not supported!)\n\n\n\t if (browser.isIE && window.URL) {\n\t var elements = this.media.querySelectorAll('track');\n\t Array.from(elements).forEach(function (track) {\n\t var src = track.getAttribute('src');\n\t var url = parseUrl$2(src);\n\n\t if (url !== null && url.hostname !== window.location.href.hostname && ['http:', 'https:'].includes(url.protocol)) {\n\t fetch(src, 'blob').then(function (blob) {\n\t track.setAttribute('src', window.URL.createObjectURL(blob));\n\t }).catch(function () {\n\t removeElement(track);\n\t });\n\t }\n\t });\n\t } // Get and set initial data\n\t // The \"preferred\" options are not realized unless / until the wanted language has a match\n\t // * languages: Array of user's browser languages.\n\t // * language: The language preferred by user settings or config\n\t // * active: The state preferred by user settings or config\n\t // * toggled: The real captions state\n\n\n\t var browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n\t var languages = dedupe(browserLanguages.map(function (language) {\n\t return language.split('-')[0];\n\t }));\n\t var language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase(); // Use first browser language when language is 'auto'\n\n\t if (language === 'auto') {\n\t var _languages = _slicedToArray(languages, 1);\n\n\t language = _languages[0];\n\t }\n\n\t var active = this.storage.get('captions');\n\n\t if (!is$2.boolean(active)) {\n\t active = this.config.captions.active;\n\t }\n\n\t Object.assign(this.captions, {\n\t toggled: false,\n\t active: active,\n\t language: language,\n\t languages: languages\n\t }); // Watch changes to textTracks and update captions menu\n\n\t if (this.isHTML5) {\n\t var trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n\t on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n\t } // Update available languages in list next tick (the event must not be triggered before the listeners)\n\n\n\t setTimeout(captions.update.bind(this), 0);\n\t },\n\t // Update available language options in settings based on tracks\n\t update: function update() {\n\t var _this = this;\n\n\t var tracks = captions.getTracks.call(this, true); // Get the wanted language\n\n\t var _this$captions = this.captions,\n\t active = _this$captions.active,\n\t language = _this$captions.language,\n\t meta = _this$captions.meta,\n\t currentTrackNode = _this$captions.currentTrackNode;\n\t var languageExists = Boolean(tracks.find(function (track) {\n\t return track.language === language;\n\t })); // Handle tracks (add event listener and \"pseudo\"-default)\n\n\t if (this.isHTML5 && this.isVideo) {\n\t tracks.filter(function (track) {\n\t return !meta.get(track);\n\t }).forEach(function (track) {\n\t _this.debug.log('Track added', track); // Attempt to store if the original dom element was \"default\"\n\n\n\t meta.set(track, {\n\t default: track.mode === 'showing'\n\t }); // Turn off native caption rendering to avoid double captions\n\t // eslint-disable-next-line no-param-reassign\n\n\t track.mode = 'hidden'; // Add event listener for cue changes\n\n\t on.call(_this, track, 'cuechange', function () {\n\t return captions.updateCues.call(_this);\n\t });\n\t });\n\t } // Update language first time it matches, or if the previous matching track was removed\n\n\n\t if (languageExists && this.language !== language || !tracks.includes(currentTrackNode)) {\n\t captions.setLanguage.call(this, language);\n\t captions.toggle.call(this, active && languageExists);\n\t } // Enable or disable captions based on track length\n\n\n\t toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is$2.empty(tracks)); // Update available languages in list\n\n\t if (is$2.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {\n\t controls.setCaptionsMenu.call(this);\n\t }\n\t },\n\t // Toggle captions display\n\t // Used internally for the toggleCaptions method, with the passive option forced to false\n\t toggle: function toggle(input) {\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t // If there's no full support\n\t if (!this.supported.ui) {\n\t return;\n\t }\n\n\t var toggled = this.captions.toggled; // Current state\n\n\t var activeClass = this.config.classNames.captions.active; // Get the next state\n\t // If the method is called without parameter, toggle based on current value\n\n\t var active = is$2.nullOrUndefined(input) ? !toggled : input; // Update state and trigger event\n\n\t if (active !== toggled) {\n\t // When passive, don't override user preferences\n\t if (!passive) {\n\t this.captions.active = active;\n\t this.storage.set({\n\t captions: active\n\t });\n\t } // Force language if the call isn't passive and there is no matching language to toggle to\n\n\n\t if (!this.language && active && !passive) {\n\t var tracks = captions.getTracks.call(this);\n\t var track = captions.findTrack.call(this, [this.captions.language].concat(_toConsumableArray(this.captions.languages)), true); // Override user preferences to avoid switching languages if a matching track is added\n\n\t this.captions.language = track.language; // Set caption, but don't store in localStorage as user preference\n\n\t captions.set.call(this, tracks.indexOf(track));\n\t return;\n\t } // Toggle button if it's enabled\n\n\n\t if (this.elements.buttons.captions) {\n\t this.elements.buttons.captions.pressed = active;\n\t } // Add class hook\n\n\n\t toggleClass(this.elements.container, activeClass, active);\n\t this.captions.toggled = active; // Update settings menu\n\n\t controls.updateSetting.call(this, 'captions'); // Trigger event (not used internally)\n\n\t triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n\t }\n\t },\n\t // Set captions by track index\n\t // Used internally for the currentTrack setter with the passive option forced to false\n\t set: function set(index) {\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t var tracks = captions.getTracks.call(this); // Disable captions if setting to -1\n\n\t if (index === -1) {\n\t captions.toggle.call(this, false, passive);\n\t return;\n\t }\n\n\t if (!is$2.number(index)) {\n\t this.debug.warn('Invalid caption argument', index);\n\t return;\n\t }\n\n\t if (!(index in tracks)) {\n\t this.debug.warn('Track not found', index);\n\t return;\n\t }\n\n\t if (this.captions.currentTrack !== index) {\n\t this.captions.currentTrack = index;\n\t var track = tracks[index];\n\n\t var _ref = track || {},\n\t language = _ref.language; // Store reference to node for invalidation on remove\n\n\n\t this.captions.currentTrackNode = track; // Update settings menu\n\n\t controls.updateSetting.call(this, 'captions'); // When passive, don't override user preferences\n\n\t if (!passive) {\n\t this.captions.language = language;\n\t this.storage.set({\n\t language: language\n\t });\n\t } // Handle Vimeo captions\n\n\n\t if (this.isVimeo) {\n\t this.embed.enableTextTrack(language);\n\t } // Trigger event\n\n\n\t triggerEvent.call(this, this.media, 'languagechange');\n\t } // Show captions\n\n\n\t captions.toggle.call(this, true, passive);\n\n\t if (this.isHTML5 && this.isVideo) {\n\t // If we change the active track while a cue is already displayed we need to update it\n\t captions.updateCues.call(this);\n\t }\n\t },\n\t // Set captions by language\n\t // Used internally for the language setter with the passive option forced to false\n\t setLanguage: function setLanguage(input) {\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t if (!is$2.string(input)) {\n\t this.debug.warn('Invalid language argument', input);\n\t return;\n\t } // Normalize\n\n\n\t var language = input.toLowerCase();\n\t this.captions.language = language; // Set currentTrack\n\n\t var tracks = captions.getTracks.call(this);\n\t var track = captions.findTrack.call(this, [language]);\n\t captions.set.call(this, tracks.indexOf(track), passive);\n\t },\n\t // Get current valid caption tracks\n\t // If update is false it will also ignore tracks without metadata\n\t // This is used to \"freeze\" the language options when captions.update is false\n\t getTracks: function getTracks() {\n\t var _this2 = this;\n\n\t var update = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t // Handle media or textTracks missing or null\n\t var tracks = Array.from((this.media || {}).textTracks || []); // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n\t // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n\n\t return tracks.filter(function (track) {\n\t return !_this2.isHTML5 || update || _this2.captions.meta.has(track);\n\t }).filter(function (track) {\n\t return ['captions', 'subtitles'].includes(track.kind);\n\t });\n\t },\n\t // Match tracks based on languages and get the first\n\t findTrack: function findTrack(languages) {\n\t var _this3 = this;\n\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var tracks = captions.getTracks.call(this);\n\n\t var sortIsDefault = function sortIsDefault(track) {\n\t return Number((_this3.captions.meta.get(track) || {}).default);\n\t };\n\n\t var sorted = Array.from(tracks).sort(function (a, b) {\n\t return sortIsDefault(b) - sortIsDefault(a);\n\t });\n\t var track;\n\t languages.every(function (language) {\n\t track = sorted.find(function (t) {\n\t return t.language === language;\n\t });\n\t return !track; // Break iteration if there is a match\n\t }); // If no match is found but is required, get first\n\n\t return track || (force ? sorted[0] : undefined);\n\t },\n\t // Get the current track\n\t getCurrentTrack: function getCurrentTrack() {\n\t return captions.getTracks.call(this)[this.currentTrack];\n\t },\n\t // Get UI label for track\n\t getLabel: function getLabel(track) {\n\t var currentTrack = track;\n\n\t if (!is$2.track(currentTrack) && support.textTracks && this.captions.toggled) {\n\t currentTrack = captions.getCurrentTrack.call(this);\n\t }\n\n\t if (is$2.track(currentTrack)) {\n\t if (!is$2.empty(currentTrack.label)) {\n\t return currentTrack.label;\n\t }\n\n\t if (!is$2.empty(currentTrack.language)) {\n\t return track.language.toUpperCase();\n\t }\n\n\t return i18n.get('enabled', this.config);\n\t }\n\n\t return i18n.get('disabled', this.config);\n\t },\n\t // Update captions using current track's active cues\n\t // Also optional array argument in case there isn't any track (ex: vimeo)\n\t updateCues: function updateCues(input) {\n\t // Requires UI\n\t if (!this.supported.ui) {\n\t return;\n\t }\n\n\t if (!is$2.element(this.elements.captions)) {\n\t this.debug.warn('No captions element to render to');\n\t return;\n\t } // Only accept array or empty input\n\n\n\t if (!is$2.nullOrUndefined(input) && !Array.isArray(input)) {\n\t this.debug.warn('updateCues: Invalid input', input);\n\t return;\n\t }\n\n\t var cues = input; // Get cues from track\n\n\t if (!cues) {\n\t var track = captions.getCurrentTrack.call(this);\n\t cues = Array.from((track || {}).activeCues || []).map(function (cue) {\n\t return cue.getCueAsHTML();\n\t }).map(getHTML);\n\t } // Set new caption text\n\n\n\t var content = cues.map(function (cueText) {\n\t return cueText.trim();\n\t }).join('\\n');\n\t var changed = content !== this.elements.captions.innerHTML;\n\n\t if (changed) {\n\t // Empty the container and create a new child element\n\t emptyElement(this.elements.captions);\n\t var caption = createElement$1('span', getAttributesFromSelector(this.config.selectors.caption));\n\t caption.innerHTML = content;\n\t this.elements.captions.appendChild(caption); // Trigger event\n\n\t triggerEvent.call(this, this.media, 'cuechange');\n\t }\n\t }\n\t};\n\n\t// ==========================================================================\n\t// Plyr default config\n\t// ==========================================================================\n\tvar defaults$2 = {\n\t // Disable\n\t enabled: true,\n\t // Custom media title\n\t title: '',\n\t // Logging to console\n\t debug: false,\n\t // Auto play (if supported)\n\t autoplay: false,\n\t // Only allow one media playing at once (vimeo only)\n\t autopause: true,\n\t // Allow inline playback on iOS (this effects YouTube/Vimeo - HTML5 requires the attribute present)\n\t // TODO: Remove iosNative fullscreen option in favour of this (logic needs work)\n\t playsinline: true,\n\t // Default time to skip when rewind/fast forward\n\t seekTime: 10,\n\t // Default volume\n\t volume: 1,\n\t muted: false,\n\t // Pass a custom duration\n\t duration: null,\n\t // Display the media duration on load in the current time position\n\t // If you have opted to display both duration and currentTime, this is ignored\n\t displayDuration: true,\n\t // Invert the current time to be a countdown\n\t invertTime: true,\n\t // Clicking the currentTime inverts it's value to show time left rather than elapsed\n\t toggleInvert: true,\n\t // Force an aspect ratio\n\t // The format must be `'w:h'` (e.g. `'16:9'`)\n\t ratio: null,\n\t // Click video container to play/pause\n\t clickToPlay: true,\n\t // Auto hide the controls\n\t hideControls: true,\n\t // Reset to start when playback ended\n\t resetOnEnd: false,\n\t // Disable the standard context menu\n\t disableContextMenu: true,\n\t // Sprite (for icons)\n\t loadSprite: true,\n\t iconPrefix: 'plyr',\n\t iconUrl: 'https://cdn.plyr.io/3.5.10/plyr.svg',\n\t // Blank video (used to prevent errors on source change)\n\t blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\t // Quality default\n\t quality: {\n\t default: 576,\n\t // The options to display in the UI, if available for the source media\n\t options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n\t forced: false,\n\t onChange: null\n\t },\n\t // Set loops\n\t loop: {\n\t active: false // start: null,\n\t // end: null,\n\n\t },\n\t // Speed default and options to display\n\t speed: {\n\t selected: 1,\n\t // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n\t options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4]\n\t },\n\t // Keyboard shortcut settings\n\t keyboard: {\n\t focused: true,\n\t global: false\n\t },\n\t // Display tooltips\n\t tooltips: {\n\t controls: false,\n\t seek: true\n\t },\n\t // Captions settings\n\t captions: {\n\t active: false,\n\t language: 'auto',\n\t // Listen to new tracks added after Plyr is initialized.\n\t // This is needed for streaming captions, but may result in unselectable options\n\t update: false\n\t },\n\t // Fullscreen settings\n\t fullscreen: {\n\t enabled: true,\n\t // Allow fullscreen?\n\t fallback: true,\n\t // Fallback using full viewport/window\n\t iosNative: false // Use the native fullscreen in iOS (disables custom controls)\n\n\t },\n\t // Local storage\n\t storage: {\n\t enabled: true,\n\t key: 'plyr'\n\t },\n\t // Default controls\n\t controls: ['play-large', // 'restart',\n\t // 'rewind',\n\t 'play', // 'fast-forward',\n\t 'progress', 'current-time', // 'duration',\n\t 'mute', 'volume', 'captions', 'settings', 'pip', 'airplay', // 'download',\n\t 'fullscreen'],\n\t settings: ['captions', 'quality', 'speed'],\n\t // Localisation\n\t i18n: {\n\t restart: 'Restart',\n\t rewind: 'Rewind {seektime}s',\n\t play: 'Play',\n\t pause: 'Pause',\n\t fastForward: 'Forward {seektime}s',\n\t seek: 'Seek',\n\t seekLabel: '{currentTime} of {duration}',\n\t played: 'Played',\n\t buffered: 'Buffered',\n\t currentTime: 'Current time',\n\t duration: 'Duration',\n\t volume: 'Volume',\n\t mute: 'Mute',\n\t unmute: 'Unmute',\n\t enableCaptions: 'Enable captions',\n\t disableCaptions: 'Disable captions',\n\t download: 'Download',\n\t enterFullscreen: 'Enter fullscreen',\n\t exitFullscreen: 'Exit fullscreen',\n\t frameTitle: 'Player for {title}',\n\t captions: 'Captions',\n\t settings: 'Settings',\n\t pip: 'PIP',\n\t menuBack: 'Go back to previous menu',\n\t speed: 'Speed',\n\t normal: 'Normal',\n\t quality: 'Quality',\n\t loop: 'Loop',\n\t start: 'Start',\n\t end: 'End',\n\t all: 'All',\n\t reset: 'Reset',\n\t disabled: 'Disabled',\n\t enabled: 'Enabled',\n\t advertisement: 'Ad',\n\t qualityBadge: {\n\t 2160: '4K',\n\t 1440: 'HD',\n\t 1080: 'HD',\n\t 720: 'HD',\n\t 576: 'SD',\n\t 480: 'SD'\n\t }\n\t },\n\t // URLs\n\t urls: {\n\t download: null,\n\t vimeo: {\n\t sdk: 'https://player.vimeo.com/api/player.js',\n\t iframe: 'https://player.vimeo.com/video/{0}?{1}',\n\t api: 'https://vimeo.com/api/v2/video/{0}.json'\n\t },\n\t youtube: {\n\t sdk: 'https://www.youtube.com/iframe_api',\n\t api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}'\n\t },\n\t googleIMA: {\n\t sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js'\n\t }\n\t },\n\t // Custom control listeners\n\t listeners: {\n\t seek: null,\n\t play: null,\n\t pause: null,\n\t restart: null,\n\t rewind: null,\n\t fastForward: null,\n\t mute: null,\n\t volume: null,\n\t captions: null,\n\t download: null,\n\t fullscreen: null,\n\t pip: null,\n\t airplay: null,\n\t speed: null,\n\t quality: null,\n\t loop: null,\n\t language: null\n\t },\n\t // Events to watch and bubble\n\t events: [// Events to watch on HTML5 media elements and bubble\n\t // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n\t 'ended', 'progress', 'stalled', 'playing', 'waiting', 'canplay', 'canplaythrough', 'loadstart', 'loadeddata', 'loadedmetadata', 'timeupdate', 'volumechange', 'play', 'pause', 'error', 'seeking', 'seeked', 'emptied', 'ratechange', 'cuechange', // Custom events\n\t 'download', 'enterfullscreen', 'exitfullscreen', 'captionsenabled', 'captionsdisabled', 'languagechange', 'controlshidden', 'controlsshown', 'ready', // YouTube\n\t 'statechange', // Quality\n\t 'qualitychange', // Ads\n\t 'adsloaded', 'adscontentpause', 'adscontentresume', 'adstarted', 'adsmidpoint', 'adscomplete', 'adsallcomplete', 'adsimpression', 'adsclick'],\n\t // Selectors\n\t // Change these to match your template if using custom HTML\n\t selectors: {\n\t editable: 'input, textarea, select, [contenteditable]',\n\t container: '.plyr',\n\t controls: {\n\t container: null,\n\t wrapper: '.plyr__controls'\n\t },\n\t labels: '[data-plyr]',\n\t buttons: {\n\t play: '[data-plyr=\"play\"]',\n\t pause: '[data-plyr=\"pause\"]',\n\t restart: '[data-plyr=\"restart\"]',\n\t rewind: '[data-plyr=\"rewind\"]',\n\t fastForward: '[data-plyr=\"fast-forward\"]',\n\t mute: '[data-plyr=\"mute\"]',\n\t captions: '[data-plyr=\"captions\"]',\n\t download: '[data-plyr=\"download\"]',\n\t fullscreen: '[data-plyr=\"fullscreen\"]',\n\t pip: '[data-plyr=\"pip\"]',\n\t airplay: '[data-plyr=\"airplay\"]',\n\t settings: '[data-plyr=\"settings\"]',\n\t loop: '[data-plyr=\"loop\"]'\n\t },\n\t inputs: {\n\t seek: '[data-plyr=\"seek\"]',\n\t volume: '[data-plyr=\"volume\"]',\n\t speed: '[data-plyr=\"speed\"]',\n\t language: '[data-plyr=\"language\"]',\n\t quality: '[data-plyr=\"quality\"]'\n\t },\n\t display: {\n\t currentTime: '.plyr__time--current',\n\t duration: '.plyr__time--duration',\n\t buffer: '.plyr__progress__buffer',\n\t loop: '.plyr__progress__loop',\n\t // Used later\n\t volume: '.plyr__volume--display'\n\t },\n\t progress: '.plyr__progress',\n\t captions: '.plyr__captions',\n\t caption: '.plyr__caption'\n\t },\n\t // Class hooks added to the player in different states\n\t classNames: {\n\t type: 'plyr--{0}',\n\t provider: 'plyr--{0}',\n\t video: 'plyr__video-wrapper',\n\t embed: 'plyr__video-embed',\n\t videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n\t embedContainer: 'plyr__video-embed__container',\n\t poster: 'plyr__poster',\n\t posterEnabled: 'plyr__poster-enabled',\n\t ads: 'plyr__ads',\n\t control: 'plyr__control',\n\t controlPressed: 'plyr__control--pressed',\n\t playing: 'plyr--playing',\n\t paused: 'plyr--paused',\n\t stopped: 'plyr--stopped',\n\t loading: 'plyr--loading',\n\t hover: 'plyr--hover',\n\t tooltip: 'plyr__tooltip',\n\t cues: 'plyr__cues',\n\t hidden: 'plyr__sr-only',\n\t hideControls: 'plyr--hide-controls',\n\t isIos: 'plyr--is-ios',\n\t isTouch: 'plyr--is-touch',\n\t uiSupported: 'plyr--full-ui',\n\t noTransition: 'plyr--no-transition',\n\t display: {\n\t time: 'plyr__time'\n\t },\n\t menu: {\n\t value: 'plyr__menu__value',\n\t badge: 'plyr__badge',\n\t open: 'plyr--menu-open'\n\t },\n\t captions: {\n\t enabled: 'plyr--captions-enabled',\n\t active: 'plyr--captions-active'\n\t },\n\t fullscreen: {\n\t enabled: 'plyr--fullscreen-enabled',\n\t fallback: 'plyr--fullscreen-fallback'\n\t },\n\t pip: {\n\t supported: 'plyr--pip-supported',\n\t active: 'plyr--pip-active'\n\t },\n\t airplay: {\n\t supported: 'plyr--airplay-supported',\n\t active: 'plyr--airplay-active'\n\t },\n\t tabFocus: 'plyr__tab-focus',\n\t previewThumbnails: {\n\t // Tooltip thumbs\n\t thumbContainer: 'plyr__preview-thumb',\n\t thumbContainerShown: 'plyr__preview-thumb--is-shown',\n\t imageContainer: 'plyr__preview-thumb__image-container',\n\t timeContainer: 'plyr__preview-thumb__time-container',\n\t // Scrubbing\n\t scrubbingContainer: 'plyr__preview-scrubbing',\n\t scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown'\n\t }\n\t },\n\t // Embed attributes\n\t attributes: {\n\t embed: {\n\t provider: 'data-plyr-provider',\n\t id: 'data-plyr-embed-id'\n\t }\n\t },\n\t // Advertisements plugin\n\t // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n\t ads: {\n\t enabled: false,\n\t publisherId: '',\n\t tagUrl: ''\n\t },\n\t // Preview Thumbnails plugin\n\t previewThumbnails: {\n\t enabled: false,\n\t src: ''\n\t },\n\t // Vimeo plugin\n\t vimeo: {\n\t byline: false,\n\t portrait: false,\n\t title: false,\n\t speed: true,\n\t transparent: false,\n\t // These settings require a pro or premium account to work\n\t sidedock: false,\n\t controls: false,\n\t // Custom settings from Plyr\n\t referrerPolicy: null // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n\n\t },\n\t // YouTube plugin\n\t youtube: {\n\t noCookie: false,\n\t // Whether to use an alternative version of YouTube without cookies\n\t rel: 0,\n\t // No related vids\n\t showinfo: 0,\n\t // Hide info\n\t iv_load_policy: 3,\n\t // Hide annotations\n\t modestbranding: 1 // Hide logos as much as possible (they still show one in the corner when paused)\n\n\t }\n\t};\n\n\t// ==========================================================================\n\t// Plyr states\n\t// ==========================================================================\n\tvar pip = {\n\t active: 'picture-in-picture',\n\t inactive: 'inline'\n\t};\n\n\t// ==========================================================================\n\t// Plyr supported types and providers\n\t// ==========================================================================\n\tvar providers = {\n\t html5: 'html5',\n\t youtube: 'youtube',\n\t vimeo: 'vimeo'\n\t};\n\tvar types = {\n\t audio: 'audio',\n\t video: 'video'\n\t};\n\t/**\n\t * Get provider by URL\n\t * @param {String} url\n\t */\n\n\tfunction getProviderByUrl(url) {\n\t // YouTube\n\t if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n\t return providers.youtube;\n\t } // Vimeo\n\n\n\t if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n\t return providers.vimeo;\n\t }\n\n\t return null;\n\t}\n\n\t// ==========================================================================\n\t// Console wrapper\n\t// ==========================================================================\n\tvar noop$1 = function noop() {};\n\n\tvar Console$1 = /*#__PURE__*/function () {\n\t function Console() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t _classCallCheck(this, Console);\n\n\t this.enabled = window.console && enabled;\n\n\t if (this.enabled) {\n\t this.log('Debugging enabled');\n\t }\n\t }\n\n\t _createClass(Console, [{\n\t key: \"log\",\n\t get: function get() {\n\t // eslint-disable-next-line no-console\n\t return this.enabled ? Function.prototype.bind.call(console.log, console) : noop$1;\n\t }\n\t }, {\n\t key: \"warn\",\n\t get: function get() {\n\t // eslint-disable-next-line no-console\n\t return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop$1;\n\t }\n\t }, {\n\t key: \"error\",\n\t get: function get() {\n\t // eslint-disable-next-line no-console\n\t return this.enabled ? Function.prototype.bind.call(console.error, console) : noop$1;\n\t }\n\t }]);\n\n\t return Console;\n\t}();\n\n\tvar Fullscreen = /*#__PURE__*/function () {\n\t function Fullscreen(player) {\n\t var _this = this;\n\n\t _classCallCheck(this, Fullscreen);\n\n\t // Keep reference to parent\n\t this.player = player; // Get prefix\n\n\t this.prefix = Fullscreen.prefix;\n\t this.property = Fullscreen.property; // Scroll position\n\n\t this.scrollPosition = {\n\t x: 0,\n\t y: 0\n\t }; // Force the use of 'full window/browser' rather than fullscreen\n\n\t this.forceFallback = player.config.fullscreen.fallback === 'force'; // Register event listeners\n\t // Handle event (incase user presses escape etc)\n\n\t on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : \"\".concat(this.prefix, \"fullscreenchange\"), function () {\n\t // TODO: Filter for target??\n\t _this.onChange();\n\t }); // Fullscreen toggle on double click\n\n\t on.call(this.player, this.player.elements.container, 'dblclick', function (event) {\n\t // Ignore double click in controls\n\t if (is$2.element(_this.player.elements.controls) && _this.player.elements.controls.contains(event.target)) {\n\t return;\n\t }\n\n\t _this.toggle();\n\t }); // Tap focus when in fullscreen\n\n\t on.call(this, this.player.elements.container, 'keydown', function (event) {\n\t return _this.trapFocus(event);\n\t }); // Update the UI\n\n\t this.update();\n\t } // Determine if native supported\n\n\n\t _createClass(Fullscreen, [{\n\t key: \"onChange\",\n\t value: function onChange() {\n\t if (!this.enabled) {\n\t return;\n\t } // Update toggle button\n\n\n\t var button = this.player.elements.buttons.fullscreen;\n\n\t if (is$2.element(button)) {\n\t button.pressed = this.active;\n\t } // Trigger an event\n\n\n\t triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n\t }\n\t }, {\n\t key: \"toggleFallback\",\n\t value: function toggleFallback() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t // Store or restore scroll position\n\t if (toggle) {\n\t this.scrollPosition = {\n\t x: window.scrollX || 0,\n\t y: window.scrollY || 0\n\t };\n\t } else {\n\t window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n\t } // Toggle scroll\n\n\n\t document.body.style.overflow = toggle ? 'hidden' : ''; // Toggle class hook\n\n\t toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle); // Force full viewport on iPhone X+\n\n\t if (browser.isIos) {\n\t var viewport = document.head.querySelector('meta[name=\"viewport\"]');\n\t var property = 'viewport-fit=cover'; // Inject the viewport meta if required\n\n\t if (!viewport) {\n\t viewport = document.createElement('meta');\n\t viewport.setAttribute('name', 'viewport');\n\t } // Check if the property already exists\n\n\n\t var hasProperty = is$2.string(viewport.content) && viewport.content.includes(property);\n\n\t if (toggle) {\n\t this.cleanupViewport = !hasProperty;\n\n\t if (!hasProperty) {\n\t viewport.content += \",\".concat(property);\n\t }\n\t } else if (this.cleanupViewport) {\n\t viewport.content = viewport.content.split(',').filter(function (part) {\n\t return part.trim() !== property;\n\t }).join(',');\n\t }\n\t } // Toggle button and fire events\n\n\n\t this.onChange();\n\t } // Trap focus inside container\n\n\t }, {\n\t key: \"trapFocus\",\n\t value: function trapFocus(event) {\n\t // Bail if iOS, not active, not the tab key\n\t if (browser.isIos || !this.active || event.key !== 'Tab' || event.keyCode !== 9) {\n\t return;\n\t } // Get the current focused element\n\n\n\t var focused = document.activeElement;\n\t var focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n\n\t var _focusable = _slicedToArray(focusable, 1),\n\t first = _focusable[0];\n\n\t var last = focusable[focusable.length - 1];\n\n\t if (focused === last && !event.shiftKey) {\n\t // Move focus to first element that can be tabbed if Shift isn't used\n\t first.focus();\n\t event.preventDefault();\n\t } else if (focused === first && event.shiftKey) {\n\t // Move focus to last element that can be tabbed if Shift is used\n\t last.focus();\n\t event.preventDefault();\n\t }\n\t } // Update UI\n\n\t }, {\n\t key: \"update\",\n\t value: function update() {\n\t if (this.enabled) {\n\t var mode;\n\n\t if (this.forceFallback) {\n\t mode = 'Fallback (forced)';\n\t } else if (Fullscreen.native) {\n\t mode = 'Native';\n\t } else {\n\t mode = 'Fallback';\n\t }\n\n\t this.player.debug.log(\"\".concat(mode, \" fullscreen enabled\"));\n\t } else {\n\t this.player.debug.log('Fullscreen not supported and fallback disabled');\n\t } // Add styling hook to show button\n\n\n\t toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n\t } // Make an element fullscreen\n\n\t }, {\n\t key: \"enter\",\n\t value: function enter() {\n\t if (!this.enabled) {\n\t return;\n\t } // iOS native fullscreen doesn't need the request step\n\n\n\t if (browser.isIos && this.player.config.fullscreen.iosNative) {\n\t this.target.webkitEnterFullscreen();\n\t } else if (!Fullscreen.native || this.forceFallback) {\n\t this.toggleFallback(true);\n\t } else if (!this.prefix) {\n\t this.target.requestFullscreen({\n\t navigationUI: 'hide'\n\t });\n\t } else if (!is$2.empty(this.prefix)) {\n\t this.target[\"\".concat(this.prefix, \"Request\").concat(this.property)]();\n\t }\n\t } // Bail from fullscreen\n\n\t }, {\n\t key: \"exit\",\n\t value: function exit() {\n\t if (!this.enabled) {\n\t return;\n\t } // iOS native fullscreen\n\n\n\t if (browser.isIos && this.player.config.fullscreen.iosNative) {\n\t this.target.webkitExitFullscreen();\n\t this.player.play();\n\t } else if (!Fullscreen.native || this.forceFallback) {\n\t this.toggleFallback(false);\n\t } else if (!this.prefix) {\n\t (document.cancelFullScreen || document.exitFullscreen).call(document);\n\t } else if (!is$2.empty(this.prefix)) {\n\t var action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n\t document[\"\".concat(this.prefix).concat(action).concat(this.property)]();\n\t }\n\t } // Toggle state\n\n\t }, {\n\t key: \"toggle\",\n\t value: function toggle() {\n\t if (!this.active) {\n\t this.enter();\n\t } else {\n\t this.exit();\n\t }\n\t }\n\t }, {\n\t key: \"usingNative\",\n\t // If we're actually using native\n\t get: function get() {\n\t return Fullscreen.native && !this.forceFallback;\n\t } // Get the prefix for handlers\n\n\t }, {\n\t key: \"enabled\",\n\t // Determine if fullscreen is enabled\n\t get: function get() {\n\t return (Fullscreen.native || this.player.config.fullscreen.fallback) && this.player.config.fullscreen.enabled && this.player.supported.ui && this.player.isVideo;\n\t } // Get active state\n\n\t }, {\n\t key: \"active\",\n\t get: function get() {\n\t if (!this.enabled) {\n\t return false;\n\t } // Fallback using classname\n\n\n\t if (!Fullscreen.native || this.forceFallback) {\n\t return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n\t }\n\n\t var element = !this.prefix ? document.fullscreenElement : document[\"\".concat(this.prefix).concat(this.property, \"Element\")];\n\t return element === this.target;\n\t } // Get target element\n\n\t }, {\n\t key: \"target\",\n\t get: function get() {\n\t return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.container;\n\t }\n\t }], [{\n\t key: \"native\",\n\t get: function get() {\n\t return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n\t }\n\t }, {\n\t key: \"prefix\",\n\t get: function get() {\n\t // No prefix\n\t if (is$2.function(document.exitFullscreen)) {\n\t return '';\n\t } // Check for fullscreen support by vendor prefix\n\n\n\t var value = '';\n\t var prefixes = ['webkit', 'moz', 'ms'];\n\t prefixes.some(function (pre) {\n\t if (is$2.function(document[\"\".concat(pre, \"ExitFullscreen\")]) || is$2.function(document[\"\".concat(pre, \"CancelFullScreen\")])) {\n\t value = pre;\n\t return true;\n\t }\n\n\t return false;\n\t });\n\t return value;\n\t }\n\t }, {\n\t key: \"property\",\n\t get: function get() {\n\t return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n\t }\n\t }]);\n\n\t return Fullscreen;\n\t}();\n\n\t// `Math.sign` method implementation\n\t// https://tc39.github.io/ecma262/#sec-math.sign\n\tvar mathSign = Math.sign || function sign(x) {\n\t // eslint-disable-next-line no-self-compare\n\t return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n\t};\n\n\t// `Math.sign` method\n\t// https://tc39.github.io/ecma262/#sec-math.sign\n\t_export$1({ target: 'Math', stat: true }, {\n\t sign: mathSign\n\t});\n\n\t// ==========================================================================\n\t// Load image avoiding xhr/fetch CORS issues\n\t// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n\t// By default it checks if it is at least 1px, but you can add a second argument to change this\n\t// ==========================================================================\n\tfunction loadImage(src) {\n\t var minWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\t return new Promise(function (resolve, reject) {\n\t var image = new Image();\n\n\t var handler = function handler() {\n\t delete image.onload;\n\t delete image.onerror;\n\t (image.naturalWidth >= minWidth ? resolve : reject)(image);\n\t };\n\n\t Object.assign(image, {\n\t onload: handler,\n\t onerror: handler,\n\t src: src\n\t });\n\t });\n\t}\n\n\tvar ui = {\n\t addStyleHook: function addStyleHook() {\n\t toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n\t toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n\t },\n\t // Toggle native HTML5 media controls\n\t toggleNativeControls: function toggleNativeControls() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t if (toggle && this.isHTML5) {\n\t this.media.setAttribute('controls', '');\n\t } else {\n\t this.media.removeAttribute('controls');\n\t }\n\t },\n\t // Setup the UI\n\t build: function build() {\n\t var _this = this;\n\n\t // Re-attach media element listeners\n\t // TODO: Use event bubbling?\n\t this.listeners.media(); // Don't setup interface if no support\n\n\t if (!this.supported.ui) {\n\t this.debug.warn(\"Basic support only for \".concat(this.provider, \" \").concat(this.type)); // Restore native controls\n\n\t ui.toggleNativeControls.call(this, true); // Bail\n\n\t return;\n\t } // Inject custom controls if not present\n\n\n\t if (!is$2.element(this.elements.controls)) {\n\t // Inject custom controls\n\t controls.inject.call(this); // Re-attach control listeners\n\n\t this.listeners.controls();\n\t } // Remove native controls\n\n\n\t ui.toggleNativeControls.call(this); // Setup captions for HTML5\n\n\t if (this.isHTML5) {\n\t captions.setup.call(this);\n\t } // Reset volume\n\n\n\t this.volume = null; // Reset mute state\n\n\t this.muted = null; // Reset loop state\n\n\t this.loop = null; // Reset quality setting\n\n\t this.quality = null; // Reset speed\n\n\t this.speed = null; // Reset volume display\n\n\t controls.updateVolume.call(this); // Reset time display\n\n\t controls.timeUpdate.call(this); // Update the UI\n\n\t ui.checkPlaying.call(this); // Check for picture-in-picture support\n\n\t toggleClass(this.elements.container, this.config.classNames.pip.supported, support.pip && this.isHTML5 && this.isVideo); // Check for airplay support\n\n\t toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5); // Add iOS class\n\n\t toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos); // Add touch class\n\n\t toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch); // Ready for API calls\n\n\t this.ready = true; // Ready event at end of execution stack\n\n\t setTimeout(function () {\n\t triggerEvent.call(_this, _this.media, 'ready');\n\t }, 0); // Set the title\n\n\t ui.setTitle.call(this); // Assure the poster image is set, if the property was added before the element was created\n\n\t if (this.poster) {\n\t ui.setPoster.call(this, this.poster, false).catch(function () {});\n\t } // Manually set the duration if user has overridden it.\n\t // The event listeners for it doesn't get called if preload is disabled (#701)\n\n\n\t if (this.config.duration) {\n\t controls.durationUpdate.call(this);\n\t }\n\t },\n\t // Setup aria attribute for play and iframe title\n\t setTitle: function setTitle() {\n\t // Find the current text\n\t var label = i18n.get('play', this.config); // If there's a media title set, use that for the label\n\n\t if (is$2.string(this.config.title) && !is$2.empty(this.config.title)) {\n\t label += \", \".concat(this.config.title);\n\t } // If there's a play button, set label\n\n\n\t Array.from(this.elements.buttons.play || []).forEach(function (button) {\n\t button.setAttribute('aria-label', label);\n\t }); // Set iframe title\n\t // https://github.com/sampotts/plyr/issues/124\n\n\t if (this.isEmbed) {\n\t var iframe = getElement.call(this, 'iframe');\n\n\t if (!is$2.element(iframe)) {\n\t return;\n\t } // Default to media type\n\n\n\t var title = !is$2.empty(this.config.title) ? this.config.title : 'video';\n\t var format = i18n.get('frameTitle', this.config);\n\t iframe.setAttribute('title', format.replace('{title}', title));\n\t }\n\t },\n\t // Toggle poster\n\t togglePoster: function togglePoster(enable) {\n\t toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n\t },\n\t // Set the poster image (async)\n\t // Used internally for the poster setter, with the passive option forced to false\n\t setPoster: function setPoster(poster) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t // Don't override if call is passive\n\t if (passive && this.poster) {\n\t return Promise.reject(new Error('Poster already set'));\n\t } // Set property synchronously to respect the call order\n\n\n\t this.media.setAttribute('poster', poster); // HTML5 uses native poster attribute\n\n\t if (this.isHTML5) {\n\t return Promise.resolve(poster);\n\t } // Wait until ui is ready\n\n\n\t return ready.call(this) // Load image\n\t .then(function () {\n\t return loadImage(poster);\n\t }).catch(function (err) {\n\t // Hide poster on error unless it's been set by another call\n\t if (poster === _this2.poster) {\n\t ui.togglePoster.call(_this2, false);\n\t } // Rethrow\n\n\n\t throw err;\n\t }).then(function () {\n\t // Prevent race conditions\n\t if (poster !== _this2.poster) {\n\t throw new Error('setPoster cancelled by later call to setPoster');\n\t }\n\t }).then(function () {\n\t Object.assign(_this2.elements.poster.style, {\n\t backgroundImage: \"url('\".concat(poster, \"')\"),\n\t // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n\t backgroundSize: ''\n\t });\n\t ui.togglePoster.call(_this2, true);\n\t return poster;\n\t });\n\t },\n\t // Check playing state\n\t checkPlaying: function checkPlaying(event) {\n\t var _this3 = this;\n\n\t // Class hooks\n\t toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n\t toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n\t toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped); // Set state\n\n\t Array.from(this.elements.buttons.play || []).forEach(function (target) {\n\t Object.assign(target, {\n\t pressed: _this3.playing\n\t });\n\t target.setAttribute('aria-label', i18n.get(_this3.playing ? 'pause' : 'play', _this3.config));\n\t }); // Only update controls on non timeupdate events\n\n\t if (is$2.event(event) && event.type === 'timeupdate') {\n\t return;\n\t } // Toggle controls\n\n\n\t ui.toggleControls.call(this);\n\t },\n\t // Check if media is loading\n\t checkLoading: function checkLoading(event) {\n\t var _this4 = this;\n\n\t this.loading = ['stalled', 'waiting'].includes(event.type); // Clear timer\n\n\t clearTimeout(this.timers.loading); // Timer to prevent flicker when seeking\n\n\t this.timers.loading = setTimeout(function () {\n\t // Update progress bar loading class state\n\t toggleClass(_this4.elements.container, _this4.config.classNames.loading, _this4.loading); // Update controls visibility\n\n\t ui.toggleControls.call(_this4);\n\t }, this.loading ? 250 : 0);\n\t },\n\t // Toggle controls based on state and `force` argument\n\t toggleControls: function toggleControls(force) {\n\t var controlsElement = this.elements.controls;\n\n\t if (controlsElement && this.config.hideControls) {\n\t // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n\t var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n\n\t this.toggleControls(Boolean(force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek));\n\t }\n\t }\n\t};\n\n\tvar Listeners = /*#__PURE__*/function () {\n\t function Listeners(player) {\n\t _classCallCheck(this, Listeners);\n\n\t this.player = player;\n\t this.lastKey = null;\n\t this.focusTimer = null;\n\t this.lastKeyDown = null;\n\t this.handleKey = this.handleKey.bind(this);\n\t this.toggleMenu = this.toggleMenu.bind(this);\n\t this.setTabFocus = this.setTabFocus.bind(this);\n\t this.firstTouch = this.firstTouch.bind(this);\n\t } // Handle key presses\n\n\n\t _createClass(Listeners, [{\n\t key: \"handleKey\",\n\t value: function handleKey(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var pressed = event.type === 'keydown';\n\t var repeat = pressed && code === this.lastKey; // Bail if a modifier key is set\n\n\t if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n\t return;\n\t } // If the event is bubbled from the media element\n\t // Firefox doesn't get the keycode for whatever reason\n\n\n\t if (!is$2.number(code)) {\n\t return;\n\t } // Seek by the number keys\n\n\n\t var seekByKey = function seekByKey() {\n\t // Divide the max duration into 10th's and times by the number value\n\t player.currentTime = player.duration / 10 * (code - 48);\n\t }; // Handle the key on keydown\n\t // Reset on keyup\n\n\n\t if (pressed) {\n\t // Check focused element\n\t // and if the focused element is not editable (e.g. text input)\n\t // and any that accept key input http://webaim.org/techniques/keyboard/\n\t var focused = document.activeElement;\n\n\t if (is$2.element(focused)) {\n\t var editable = player.config.selectors.editable;\n\t var seek = elements.inputs.seek;\n\n\t if (focused !== seek && matches$2(focused, editable)) {\n\t return;\n\t }\n\n\t if (event.which === 32 && matches$2(focused, 'button, [role^=\"menuitem\"]')) {\n\t return;\n\t }\n\t } // Which keycodes should we prevent default\n\n\n\t var preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79]; // If the code is found prevent default (e.g. prevent scrolling for arrows)\n\n\t if (preventDefault.includes(code)) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t }\n\n\t switch (code) {\n\t case 48:\n\t case 49:\n\t case 50:\n\t case 51:\n\t case 52:\n\t case 53:\n\t case 54:\n\t case 55:\n\t case 56:\n\t case 57:\n\t // 0-9\n\t if (!repeat) {\n\t seekByKey();\n\t }\n\n\t break;\n\n\t case 32:\n\t case 75:\n\t // Space and K key\n\t if (!repeat) {\n\t player.togglePlay();\n\t }\n\n\t break;\n\n\t case 38:\n\t // Arrow up\n\t player.increaseVolume(0.1);\n\t break;\n\n\t case 40:\n\t // Arrow down\n\t player.decreaseVolume(0.1);\n\t break;\n\n\t case 77:\n\t // M key\n\t if (!repeat) {\n\t player.muted = !player.muted;\n\t }\n\n\t break;\n\n\t case 39:\n\t // Arrow forward\n\t player.forward();\n\t break;\n\n\t case 37:\n\t // Arrow back\n\t player.rewind();\n\t break;\n\n\t case 70:\n\t // F key\n\t player.fullscreen.toggle();\n\t break;\n\n\t case 67:\n\t // C key\n\t if (!repeat) {\n\t player.toggleCaptions();\n\t }\n\n\t break;\n\n\t case 76:\n\t // L key\n\t player.loop = !player.loop;\n\t break;\n\t } // Escape is handle natively when in full screen\n\t // So we only need to worry about non native\n\n\n\t if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n\t player.fullscreen.toggle();\n\t } // Store last code for next cycle\n\n\n\t this.lastKey = code;\n\t } else {\n\t this.lastKey = null;\n\t }\n\t } // Toggle menu\n\n\t }, {\n\t key: \"toggleMenu\",\n\t value: function toggleMenu(event) {\n\t controls.toggleMenu.call(this.player, event);\n\t } // Device is touch enabled\n\n\t }, {\n\t key: \"firstTouch\",\n\t value: function firstTouch() {\n\t var player = this.player;\n\t var elements = player.elements;\n\t player.touch = true; // Add touch class\n\n\t toggleClass(elements.container, player.config.classNames.isTouch, true);\n\t }\n\t }, {\n\t key: \"setTabFocus\",\n\t value: function setTabFocus(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t clearTimeout(this.focusTimer); // Ignore any key other than tab\n\n\t if (event.type === 'keydown' && event.which !== 9) {\n\t return;\n\t } // Store reference to event timeStamp\n\n\n\t if (event.type === 'keydown') {\n\t this.lastKeyDown = event.timeStamp;\n\t } // Remove current classes\n\n\n\t var removeCurrent = function removeCurrent() {\n\t var className = player.config.classNames.tabFocus;\n\t var current = getElements.call(player, \".\".concat(className));\n\t toggleClass(current, className, false);\n\t }; // Determine if a key was pressed to trigger this event\n\n\n\t var wasKeyDown = event.timeStamp - this.lastKeyDown <= 20; // Ignore focus events if a key was pressed prior\n\n\t if (event.type === 'focus' && !wasKeyDown) {\n\t return;\n\t } // Remove all current\n\n\n\t removeCurrent(); // Delay the adding of classname until the focus has changed\n\t // This event fires before the focusin event\n\n\t this.focusTimer = setTimeout(function () {\n\t var focused = document.activeElement; // Ignore if current focus element isn't inside the player\n\n\t if (!elements.container.contains(focused)) {\n\t return;\n\t }\n\n\t toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n\t }, 10);\n\t } // Global window & document listeners\n\n\t }, {\n\t key: \"global\",\n\t value: function global() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t var player = this.player; // Keyboard shortcuts\n\n\t if (player.config.keyboard.global) {\n\t toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n\t } // Click anywhere closes menu\n\n\n\t toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle); // Detect touch by events\n\n\t once.call(player, document.body, 'touchstart', this.firstTouch); // Tab focus detection\n\n\t toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true);\n\t } // Container listeners\n\n\t }, {\n\t key: \"container\",\n\t value: function container() {\n\t var player = this.player;\n\t var config = player.config,\n\t elements = player.elements,\n\t timers = player.timers; // Keyboard shortcuts\n\n\t if (!config.keyboard.global && config.keyboard.focused) {\n\t on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n\t } // Toggle controls on mouse events and entering fullscreen\n\n\n\t on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {\n\t var controlsElement = elements.controls; // Remove button states for fullscreen\n\n\t if (controlsElement && event.type === 'enterfullscreen') {\n\t controlsElement.pressed = false;\n\t controlsElement.hover = false;\n\t } // Show, then hide after a timeout unless another control event occurs\n\n\n\t var show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\t var delay = 0;\n\n\t if (show) {\n\t ui.toggleControls.call(player, true); // Use longer timeout for touch devices\n\n\t delay = player.touch ? 3000 : 2000;\n\t } // Clear timer\n\n\n\t clearTimeout(timers.controls); // Set new timer to prevent flicker when seeking\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Set a gutter for Vimeo\n\n\t var setGutter = function setGutter(ratio, padding, toggle) {\n\t if (!player.isVimeo) {\n\t return;\n\t }\n\n\t var target = player.elements.wrapper.firstChild;\n\n\t var _ratio = _slicedToArray(ratio, 2),\n\t y = _ratio[1];\n\n\t var _getAspectRatio$call = getAspectRatio.call(player),\n\t _getAspectRatio$call2 = _slicedToArray(_getAspectRatio$call, 2),\n\t videoX = _getAspectRatio$call2[0],\n\t videoY = _getAspectRatio$call2[1];\n\n\t target.style.maxWidth = toggle ? \"\".concat(y / videoY * videoX, \"px\") : null;\n\t target.style.margin = toggle ? '0 auto' : null;\n\t }; // Resize on fullscreen change\n\n\n\t var setPlayerSize = function setPlayerSize(measure) {\n\t // If we don't need to measure the viewport\n\t if (!measure) {\n\t return setAspectRatio.call(player);\n\t }\n\n\t var rect = elements.container.getBoundingClientRect();\n\t var width = rect.width,\n\t height = rect.height;\n\t return setAspectRatio.call(player, \"\".concat(width, \":\").concat(height));\n\t };\n\n\t var resized = function resized() {\n\t clearTimeout(timers.resized);\n\t timers.resized = setTimeout(setPlayerSize, 50);\n\t };\n\n\t on.call(player, elements.container, 'enterfullscreen exitfullscreen', function (event) {\n\t var _player$fullscreen = player.fullscreen,\n\t target = _player$fullscreen.target,\n\t usingNative = _player$fullscreen.usingNative; // Ignore events not from target\n\n\t if (target !== elements.container) {\n\t return;\n\t } // If it's not an embed and no ratio specified\n\n\n\t if (!player.isEmbed && is$2.empty(player.config.ratio)) {\n\t return;\n\t }\n\n\t var isEnter = event.type === 'enterfullscreen'; // Set the player size when entering fullscreen to viewport size\n\n\t var _setPlayerSize = setPlayerSize(isEnter),\n\t padding = _setPlayerSize.padding,\n\t ratio = _setPlayerSize.ratio; // Set Vimeo gutter\n\n\n\t setGutter(ratio, padding, isEnter); // If not using native fullscreen, we need to check for resizes of viewport\n\n\t if (!usingNative) {\n\t if (isEnter) {\n\t on.call(player, window, 'resize', resized);\n\t } else {\n\t off.call(player, window, 'resize', resized);\n\t }\n\t }\n\t });\n\t } // Listen for media events\n\n\t }, {\n\t key: \"media\",\n\t value: function media() {\n\t var _this = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // Time change on media\n\n\t on.call(player, player.media, 'timeupdate seeking seeked', function (event) {\n\t return controls.timeUpdate.call(player, event);\n\t }); // Display duration\n\n\t on.call(player, player.media, 'durationchange loadeddata loadedmetadata', function (event) {\n\t return controls.durationUpdate.call(player, event);\n\t }); // Handle the media finishing\n\n\t on.call(player, player.media, 'ended', function () {\n\t // Show poster on end\n\t if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n\t // Restart\n\t player.restart(); // Call pause otherwise IE11 will start playing the video again\n\n\t player.pause();\n\t }\n\t }); // Check for buffer progress\n\n\t on.call(player, player.media, 'progress playing seeking seeked', function (event) {\n\t return controls.updateProgress.call(player, event);\n\t }); // Handle volume changes\n\n\t on.call(player, player.media, 'volumechange', function (event) {\n\t return controls.updateVolume.call(player, event);\n\t }); // Handle play/pause\n\n\t on.call(player, player.media, 'playing play pause ended emptied timeupdate', function (event) {\n\t return ui.checkPlaying.call(player, event);\n\t }); // Loading state\n\n\t on.call(player, player.media, 'waiting canplay seeked playing', function (event) {\n\t return ui.checkLoading.call(player, event);\n\t }); // Click video\n\n\t if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n\t // Re-fetch the wrapper\n\t var wrapper = getElement.call(player, \".\".concat(player.config.classNames.video)); // Bail if there's no wrapper (this should never happen)\n\n\t if (!is$2.element(wrapper)) {\n\t return;\n\t } // On click play, pause or restart\n\n\n\t on.call(player, elements.container, 'click', function (event) {\n\t var targets = [elements.container, wrapper]; // Ignore if click if not container or in video wrapper\n\n\t if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n\t return;\n\t } // Touch devices will just show controls (if hidden)\n\n\n\t if (player.touch && player.config.hideControls) {\n\t return;\n\t }\n\n\t if (player.ended) {\n\t _this.proxy(event, player.restart, 'restart');\n\n\t _this.proxy(event, player.play, 'play');\n\t } else {\n\t _this.proxy(event, player.togglePlay, 'play');\n\t }\n\t });\n\t } // Disable right click\n\n\n\t if (player.supported.ui && player.config.disableContextMenu) {\n\t on.call(player, elements.wrapper, 'contextmenu', function (event) {\n\t event.preventDefault();\n\t }, false);\n\t } // Volume change\n\n\n\t on.call(player, player.media, 'volumechange', function () {\n\t // Save to storage\n\t player.storage.set({\n\t volume: player.volume,\n\t muted: player.muted\n\t });\n\t }); // Speed change\n\n\t on.call(player, player.media, 'ratechange', function () {\n\t // Update UI\n\t controls.updateSetting.call(player, 'speed'); // Save to storage\n\n\n\t player.storage.set({\n\t speed: player.speed\n\t });\n\t }); // Quality change\n\n\t on.call(player, player.media, 'qualitychange', function (event) {\n\t // Update UI\n\t controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n\t }); // Update download link when ready and if quality changes\n\n\t on.call(player, player.media, 'ready qualitychange', function () {\n\t controls.setDownloadUrl.call(player);\n\t }); // Proxy events to container\n\t // Bubble up key events for Edge\n\n\t var proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\t on.call(player, player.media, proxyEvents, function (event) {\n\t var _event$detail = event.detail,\n\t detail = _event$detail === void 0 ? {} : _event$detail; // Get error details from media\n\n\t if (event.type === 'error') {\n\t detail = player.media.error;\n\t }\n\n\t triggerEvent.call(player, elements.container, event.type, true, detail);\n\t });\n\t } // Run default and custom handlers\n\n\t }, {\n\t key: \"proxy\",\n\t value: function proxy(event, defaultHandler, customHandlerKey) {\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$2.function(customHandler);\n\t var returned = true; // Execute custom handler\n\n\t if (hasCustomHandler) {\n\t returned = customHandler.call(player, event);\n\t } // Only call default handler if not prevented in custom handler\n\n\n\t if (returned !== false && is$2.function(defaultHandler)) {\n\t defaultHandler.call(player, event);\n\t }\n\t } // Trigger custom and default handlers\n\n\t }, {\n\t key: \"bind\",\n\t value: function bind(element, type, defaultHandler, customHandlerKey) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$2.function(customHandler);\n\t on.call(player, element, type, function (event) {\n\t return _this2.proxy(event, defaultHandler, customHandlerKey);\n\t }, passive && !hasCustomHandler);\n\t } // Listen for control events\n\n\t }, {\n\t key: \"controls\",\n\t value: function controls$1() {\n\t var _this3 = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // IE doesn't support input event, so we fallback to change\n\n\t var inputEvent = browser.isIE ? 'change' : 'input'; // Play/pause toggle\n\n\t if (elements.buttons.play) {\n\t Array.from(elements.buttons.play).forEach(function (button) {\n\t _this3.bind(button, 'click', player.togglePlay, 'play');\n\t });\n\t } // Pause\n\n\n\t this.bind(elements.buttons.restart, 'click', player.restart, 'restart'); // Rewind\n\n\t this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind'); // Rewind\n\n\t this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward'); // Mute toggle\n\n\t this.bind(elements.buttons.mute, 'click', function () {\n\t player.muted = !player.muted;\n\t }, 'mute'); // Captions toggle\n\n\t this.bind(elements.buttons.captions, 'click', function () {\n\t return player.toggleCaptions();\n\t }); // Download\n\n\t this.bind(elements.buttons.download, 'click', function () {\n\t triggerEvent.call(player, player.media, 'download');\n\t }, 'download'); // Fullscreen toggle\n\n\t this.bind(elements.buttons.fullscreen, 'click', function () {\n\t player.fullscreen.toggle();\n\t }, 'fullscreen'); // Picture-in-Picture\n\n\t this.bind(elements.buttons.pip, 'click', function () {\n\t player.pip = 'toggle';\n\t }, 'pip'); // Airplay\n\n\t this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay'); // Settings menu - click toggle\n\n\t this.bind(elements.buttons.settings, 'click', function (event) {\n\t // Prevent the document click listener closing the menu\n\t event.stopPropagation();\n\t event.preventDefault();\n\n\t controls.toggleMenu.call(player, event);\n\t }, null, false); // Can't be passive as we're preventing default\n\t // Settings menu - keyboard toggle\n\t // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n\n\t this.bind(elements.buttons.settings, 'keyup', function (event) {\n\t var code = event.which; // We only care about space and return\n\n\t if (![13, 32].includes(code)) {\n\t return;\n\t } // Because return triggers a click anyway, all we need to do is set focus\n\n\n\t if (code === 13) {\n\t controls.focusFirstMenuItem.call(player, null, true);\n\n\t return;\n\t } // Prevent scroll\n\n\n\t event.preventDefault(); // Prevent playing video (Firefox)\n\n\t event.stopPropagation(); // Toggle menu\n\n\t controls.toggleMenu.call(player, event);\n\t }, null, false // Can't be passive as we're preventing default\n\t ); // Escape closes menu\n\n\t this.bind(elements.settings.menu, 'keydown', function (event) {\n\t if (event.which === 27) {\n\t controls.toggleMenu.call(player, event);\n\t }\n\t }); // Set range input alternative \"value\", which matches the tooltip time (#954)\n\n\t this.bind(elements.inputs.seek, 'mousedown mousemove', function (event) {\n\t var rect = elements.progress.getBoundingClientRect();\n\t var percent = 100 / rect.width * (event.pageX - rect.left);\n\t event.currentTarget.setAttribute('seek-value', percent);\n\t }); // Pause while seeking\n\n\t this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', function (event) {\n\t var seek = event.currentTarget;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var attribute = 'play-on-seeked';\n\n\t if (is$2.keyboardEvent(event) && code !== 39 && code !== 37) {\n\t return;\n\t } // Record seek time so we can prevent hiding controls for a few seconds after seek\n\n\n\t player.lastSeekTime = Date.now(); // Was playing before?\n\n\t var play = seek.hasAttribute(attribute); // Done seeking\n\n\t var done = ['mouseup', 'touchend', 'keyup'].includes(event.type); // If we're done seeking and it was playing, resume playback\n\n\t if (play && done) {\n\t seek.removeAttribute(attribute);\n\t player.play();\n\t } else if (!done && player.playing) {\n\t seek.setAttribute(attribute, '');\n\t player.pause();\n\t }\n\t }); // Fix range inputs on iOS\n\t // Super weird iOS bug where after you interact with an <input type=\"range\">,\n\t // it takes over further interactions on the page. This is a hack\n\n\t if (browser.isIos) {\n\t var inputs = getElements.call(player, 'input[type=\"range\"]');\n\t Array.from(inputs).forEach(function (input) {\n\t return _this3.bind(input, inputEvent, function (event) {\n\t return repaint(event.target);\n\t });\n\t });\n\t } // Seek\n\n\n\t this.bind(elements.inputs.seek, inputEvent, function (event) {\n\t var seek = event.currentTarget; // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n\n\t var seekTo = seek.getAttribute('seek-value');\n\n\t if (is$2.empty(seekTo)) {\n\t seekTo = seek.value;\n\t }\n\n\t seek.removeAttribute('seek-value');\n\t player.currentTime = seekTo / seek.max * player.duration;\n\t }, 'seek'); // Seek tooltip\n\n\t this.bind(elements.progress, 'mouseenter mouseleave mousemove', function (event) {\n\t return controls.updateSeekTooltip.call(player, event);\n\t }); // Preview thumbnails plugin\n\t // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n\n\t this.bind(elements.progress, 'mousemove touchmove', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startMove(event);\n\t }\n\t }); // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n\n\t this.bind(elements.progress, 'mouseleave touchend click', function () {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endMove(false, true);\n\t }\n\t }); // Show scrubbing preview\n\n\t this.bind(elements.progress, 'mousedown touchstart', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startScrubbing(event);\n\t }\n\t });\n\t this.bind(elements.progress, 'mouseup touchend', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endScrubbing(event);\n\t }\n\t }); // Polyfill for lower fill in <input type=\"range\"> for webkit\n\n\t if (browser.isWebkit) {\n\t Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(function (element) {\n\t _this3.bind(element, 'input', function (event) {\n\t return controls.updateRangeFill.call(player, event.target);\n\t });\n\t });\n\t } // Current time invert\n\t // Only if one time element is used for both currentTime and duration\n\n\n\t if (player.config.toggleInvert && !is$2.element(elements.display.duration)) {\n\t this.bind(elements.display.currentTime, 'click', function () {\n\t // Do nothing if we're at the start\n\t if (player.currentTime === 0) {\n\t return;\n\t }\n\n\t player.config.invertTime = !player.config.invertTime;\n\n\t controls.timeUpdate.call(player);\n\t });\n\t } // Volume\n\n\n\t this.bind(elements.inputs.volume, inputEvent, function (event) {\n\t player.volume = event.target.value;\n\t }, 'volume'); // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mouseenter mouseleave', function (event) {\n\t elements.controls.hover = !player.touch && event.type === 'mouseenter';\n\t }); // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', function (event) {\n\t elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n\t }); // Show controls when they receive focus (e.g., when using keyboard tab key)\n\n\t this.bind(elements.controls, 'focusin', function () {\n\t var config = player.config,\n\t timers = player.timers; // Skip transition to prevent focus from scrolling the parent element\n\n\t toggleClass(elements.controls, config.classNames.noTransition, true); // Toggle\n\n\t ui.toggleControls.call(player, true); // Restore transition\n\n\t setTimeout(function () {\n\t toggleClass(elements.controls, config.classNames.noTransition, false);\n\t }, 0); // Delay a little more for mouse users\n\n\t var delay = _this3.touch ? 3000 : 4000; // Clear timer\n\n\t clearTimeout(timers.controls); // Hide again after delay\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Mouse wheel for volume\n\n\t this.bind(elements.inputs.volume, 'wheel', function (event) {\n\t // Detect \"natural\" scroll - suppored on OS X Safari only\n\t // Other browsers on OS X will be inverted until support improves\n\t var inverted = event.webkitDirectionInvertedFromDevice; // Get delta from event. Invert if `inverted` is true\n\n\t var _map = [event.deltaX, -event.deltaY].map(function (value) {\n\t return inverted ? -value : value;\n\t }),\n\t _map2 = _slicedToArray(_map, 2),\n\t x = _map2[0],\n\t y = _map2[1]; // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n\n\n\t var direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y); // Change the volume by 2%\n\n\t player.increaseVolume(direction / 50); // Don't break page scrolling at max and min\n\n\t var volume = player.media.volume;\n\n\t if (direction === 1 && volume < 1 || direction === -1 && volume > 0) {\n\t event.preventDefault();\n\t }\n\t }, 'volume', false);\n\t }\n\t }]);\n\n\t return Listeners;\n\t}();\n\n\tvar HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$1('splice');\n\tvar USES_TO_LENGTH$a = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\n\tvar max$7 = Math.max;\n\tvar min$a = Math.min;\n\tvar MAX_SAFE_INTEGER$3 = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED$1 = 'Maximum allowed length exceeded';\n\n\t// `Array.prototype.splice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n\t// with adding support of @@species\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$a }, {\n\t splice: function splice(start, deleteCount /* , ...items */) {\n\t var O = toObject$1(this);\n\t var len = toLength$1(O.length);\n\t var actualStart = toAbsoluteIndex$1(start, len);\n\t var argumentsLength = arguments.length;\n\t var insertCount, actualDeleteCount, A, k, from, to;\n\t if (argumentsLength === 0) {\n\t insertCount = actualDeleteCount = 0;\n\t } else if (argumentsLength === 1) {\n\t insertCount = 0;\n\t actualDeleteCount = len - actualStart;\n\t } else {\n\t insertCount = argumentsLength - 2;\n\t actualDeleteCount = min$a(max$7(toInteger$1(deleteCount), 0), len - actualStart);\n\t }\n\t if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$3) {\n\t throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED$1);\n\t }\n\t A = arraySpeciesCreate$1(O, actualDeleteCount);\n\t for (k = 0; k < actualDeleteCount; k++) {\n\t from = actualStart + k;\n\t if (from in O) createProperty$1(A, k, O[from]);\n\t }\n\t A.length = actualDeleteCount;\n\t if (insertCount < actualDeleteCount) {\n\t for (k = actualStart; k < len - actualDeleteCount; k++) {\n\t from = k + actualDeleteCount;\n\t to = k + insertCount;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n\t } else if (insertCount > actualDeleteCount) {\n\t for (k = len - actualDeleteCount; k > actualStart; k--) {\n\t from = k + actualDeleteCount - 1;\n\t to = k + insertCount - 1;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t }\n\t for (k = 0; k < insertCount; k++) {\n\t O[k + actualStart] = arguments[k + 2];\n\t }\n\t O.length = len - actualDeleteCount + insertCount;\n\t return A;\n\t }\n\t});\n\n\tvar loadjs_umd = createCommonjsModule(function (module, exports) {\n\t (function (root, factory) {\n\t {\n\t module.exports = factory();\n\t }\n\t })(commonjsGlobal, function () {\n\t /**\n\t * Global dependencies.\n\t * @global {Object} document - DOM\n\t */\n\t var devnull = function devnull() {},\n\t bundleIdCache = {},\n\t bundleResultCache = {},\n\t bundleCallbackQueue = {};\n\t /**\n\t * Subscribe to bundle load event.\n\t * @param {string[]} bundleIds - Bundle ids\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function subscribe(bundleIds, callbackFn) {\n\t // listify\n\t bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\t var depsNotFound = [],\n\t i = bundleIds.length,\n\t numWaiting = i,\n\t fn,\n\t bundleId,\n\t r,\n\t q; // define callback function\n\n\t fn = function fn(bundleId, pathsNotFound) {\n\t if (pathsNotFound.length) depsNotFound.push(bundleId);\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(depsNotFound);\n\t }; // register callback\n\n\n\t while (i--) {\n\t bundleId = bundleIds[i]; // execute callback if in result cache\n\n\t r = bundleResultCache[bundleId];\n\n\t if (r) {\n\t fn(bundleId, r);\n\t continue;\n\t } // add to callback queue\n\n\n\t q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n\t q.push(fn);\n\t }\n\t }\n\t /**\n\t * Publish bundle load event.\n\t * @param {string} bundleId - Bundle id\n\t * @param {string[]} pathsNotFound - List of files not found\n\t */\n\n\n\t function publish(bundleId, pathsNotFound) {\n\t // exit if id isn't defined\n\t if (!bundleId) return;\n\t var q = bundleCallbackQueue[bundleId]; // cache result\n\n\t bundleResultCache[bundleId] = pathsNotFound; // exit if queue is empty\n\n\t if (!q) return; // empty callback queue\n\n\t while (q.length) {\n\t q[0](bundleId, pathsNotFound);\n\t q.splice(0, 1);\n\t }\n\t }\n\t /**\n\t * Execute callbacks.\n\t * @param {Object or Function} args - The callback args\n\t * @param {string[]} depsNotFound - List of dependencies not found\n\t */\n\n\n\t function executeCallbacks(args, depsNotFound) {\n\t // accept function as argument\n\t if (args.call) args = {\n\t success: args\n\t }; // success and error callbacks\n\n\t if (depsNotFound.length) (args.error || devnull)(depsNotFound);else (args.success || devnull)(args);\n\t }\n\t /**\n\t * Load individual file.\n\t * @param {string} path - The file path\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function loadFile(path, callbackFn, args, numTries) {\n\t var doc = document,\n\t async = args.async,\n\t maxTries = (args.numRetries || 0) + 1,\n\t beforeCallbackFn = args.before || devnull,\n\t pathname = path.replace(/[\\?|#].*$/, ''),\n\t pathStripped = path.replace(/^(css|img)!/, ''),\n\t isLegacyIECss,\n\t e;\n\t numTries = numTries || 0;\n\n\t if (/(^css!|\\.css$)/.test(pathname)) {\n\t // css\n\t e = doc.createElement('link');\n\t e.rel = 'stylesheet';\n\t e.href = pathStripped; // tag IE9+\n\n\t isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)\n\n\t if (isLegacyIECss && e.relList) {\n\t isLegacyIECss = 0;\n\t e.rel = 'preload';\n\t e.as = 'style';\n\t }\n\t } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n\t // image\n\t e = doc.createElement('img');\n\t e.src = pathStripped;\n\t } else {\n\t // javascript\n\t e = doc.createElement('script');\n\t e.src = path;\n\t e.async = async === undefined ? true : async;\n\t }\n\n\t e.onload = e.onerror = e.onbeforeload = function (ev) {\n\t var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror\n\t // support in IE9-11\n\n\t if (isLegacyIECss) {\n\t try {\n\t if (!e.sheet.cssText.length) result = 'e';\n\t } catch (x) {\n\t // sheets objects created from load errors don't allow access to\n\t // `cssText` (unless error is Code:18 SecurityError)\n\t if (x.code != 18) result = 'e';\n\t }\n\t } // handle retries in case of load failure\n\n\n\t if (result == 'e') {\n\t // increment counter\n\t numTries += 1; // exit function and try again\n\n\t if (numTries < maxTries) {\n\t return loadFile(path, callbackFn, args, numTries);\n\t }\n\t } else if (e.rel == 'preload' && e.as == 'style') {\n\t // activate preloaded stylesheets\n\t return e.rel = 'stylesheet'; // jshint ignore:line\n\t } // execute callback\n\n\n\t callbackFn(path, result, ev.defaultPrevented);\n\t }; // add to document (unless callback returns `false`)\n\n\n\t if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n\t }\n\t /**\n\t * Load multiple files.\n\t * @param {string[]} paths - The file paths\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function loadFiles(paths, callbackFn, args) {\n\t // listify paths\n\t paths = paths.push ? paths : [paths];\n\t var numWaiting = paths.length,\n\t x = numWaiting,\n\t pathsNotFound = [],\n\t fn,\n\t i; // define callback function\n\n\t fn = function fn(path, result, defaultPrevented) {\n\t // handle error\n\t if (result == 'e') pathsNotFound.push(path); // handle beforeload event. If defaultPrevented then that means the load\n\t // will be blocked (ex. Ghostery/ABP on Safari)\n\n\t if (result == 'b') {\n\t if (defaultPrevented) pathsNotFound.push(path);else return;\n\t }\n\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(pathsNotFound);\n\t }; // load scripts\n\n\n\t for (i = 0; i < x; i++) {\n\t loadFile(paths[i], fn, args);\n\t }\n\t }\n\t /**\n\t * Initiate script load and register bundle.\n\t * @param {(string|string[])} paths - The file paths\n\t * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n\t * callback or (3) object literal with success/error arguments, numRetries,\n\t * etc.\n\t * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n\t * literal with success/error arguments, numRetries, etc.\n\t */\n\n\n\t function loadjs(paths, arg1, arg2) {\n\t var bundleId, args; // bundleId (if string)\n\n\t if (arg1 && arg1.trim) bundleId = arg1; // args (default is {})\n\n\t args = (bundleId ? arg2 : arg1) || {}; // throw error if bundle is already defined\n\n\t if (bundleId) {\n\t if (bundleId in bundleIdCache) {\n\t throw \"LoadJS\";\n\t } else {\n\t bundleIdCache[bundleId] = true;\n\t }\n\t }\n\n\t function loadFn(resolve, reject) {\n\t loadFiles(paths, function (pathsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, pathsNotFound); // resolve Promise\n\n\t if (resolve) {\n\t executeCallbacks({\n\t success: resolve,\n\t error: reject\n\t }, pathsNotFound);\n\t } // publish bundle load event\n\n\n\t publish(bundleId, pathsNotFound);\n\t }, args);\n\t }\n\n\t if (args.returnPromise) return new Promise(loadFn);else loadFn();\n\t }\n\t /**\n\t * Execute callbacks when dependencies have been satisfied.\n\t * @param {(string|string[])} deps - List of bundle ids\n\t * @param {Object} args - success/error arguments\n\t */\n\n\n\t loadjs.ready = function ready(deps, args) {\n\t // subscribe to bundle load event\n\t subscribe(deps, function (depsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, depsNotFound);\n\t });\n\t return loadjs;\n\t };\n\t /**\n\t * Manually satisfy bundle dependencies.\n\t * @param {string} bundleId - The bundle id\n\t */\n\n\n\t loadjs.done = function done(bundleId) {\n\t publish(bundleId, []);\n\t };\n\t /**\n\t * Reset loadjs dependencies statuses\n\t */\n\n\n\t loadjs.reset = function reset() {\n\t bundleIdCache = {};\n\t bundleResultCache = {};\n\t bundleCallbackQueue = {};\n\t };\n\t /**\n\t * Determine if bundle has already been defined\n\t * @param String} bundleId - The bundle id\n\t */\n\n\n\t loadjs.isDefined = function isDefined(bundleId) {\n\t return bundleId in bundleIdCache;\n\t }; // export\n\n\n\t return loadjs;\n\t });\n\t});\n\n\tfunction loadScript(url) {\n\t return new Promise(function (resolve, reject) {\n\t loadjs_umd(url, {\n\t success: resolve,\n\t error: reject\n\t });\n\t });\n\t}\n\n\tfunction parseId(url) {\n\t if (is$2.empty(url)) {\n\t return null;\n\t }\n\n\t if (is$2.number(Number(url))) {\n\t return url;\n\t }\n\n\t var regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tvar vimeo = {\n\t setup: function setup() {\n\t var player = this; // Add embed class for responsive\n\n\t toggleClass(player.elements.wrapper, player.config.classNames.embed, true); // Set speed options from config\n\n\t player.options.speed = player.config.speed.options; // Set intial ratio\n\n\t setAspectRatio.call(player); // Load the SDK if not already\n\n\t if (!is$2.object(window.Vimeo)) {\n\t loadScript(player.config.urls.vimeo.sdk).then(function () {\n\t vimeo.ready.call(player);\n\t }).catch(function (error) {\n\t player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n\t });\n\t } else {\n\t vimeo.ready.call(player);\n\t }\n\t },\n\t // API Ready\n\t ready: function ready() {\n\t var _this = this;\n\n\t var player = this;\n\t var config = player.config.vimeo; // Get Vimeo params for the iframe\n\n\t var params = buildUrlParams(extend$1({}, {\n\t loop: player.config.loop.active,\n\t autoplay: player.autoplay,\n\t muted: player.muted,\n\t gesture: 'media',\n\t playsinline: !this.config.fullscreen.iosNative\n\t }, config)); // Get the source URL or ID\n\n\t var source = player.media.getAttribute('src'); // Get from <div> if needed\n\n\t if (is$2.empty(source)) {\n\t source = player.media.getAttribute(player.config.attributes.embed.id);\n\t }\n\n\t var id = parseId(source); // Build an iframe\n\n\t var iframe = createElement$1('iframe');\n\t var src = format(player.config.urls.vimeo.iframe, id, params);\n\t iframe.setAttribute('src', src);\n\t iframe.setAttribute('allowfullscreen', '');\n\t iframe.setAttribute('allowtransparency', '');\n\t iframe.setAttribute('allow', 'autoplay'); // Set the referrer policy if required\n\n\t if (!is$2.empty(config.referrerPolicy)) {\n\t iframe.setAttribute('referrerPolicy', config.referrerPolicy);\n\t } // Get poster, if already set\n\n\n\t var poster = player.poster; // Inject the package\n\n\t var wrapper = createElement$1('div', {\n\t poster: poster,\n\t class: player.config.classNames.embedContainer\n\t });\n\t wrapper.appendChild(iframe);\n\t player.media = replaceElement(wrapper, player.media); // Get poster image\n\n\t fetch(format(player.config.urls.vimeo.api, id), 'json').then(function (response) {\n\t if (is$2.empty(response)) {\n\t return;\n\t } // Get the URL for thumbnail\n\n\n\t var url = new URL(response[0].thumbnail_large); // Get original image\n\n\t url.pathname = \"\".concat(url.pathname.split('_')[0], \".jpg\"); // Set and show poster\n\n\t ui.setPoster.call(player, url.href).catch(function () {});\n\t }); // Setup instance\n\t // https://github.com/vimeo/player.js\n\n\t player.embed = new window.Vimeo.Player(iframe, {\n\t autopause: player.config.autopause,\n\t muted: player.muted\n\t });\n\t player.media.paused = true;\n\t player.media.currentTime = 0; // Disable native text track rendering\n\n\t if (player.supported.ui) {\n\t player.embed.disableTextTrack();\n\t } // Create a faux HTML5 API using the Vimeo API\n\n\n\t player.media.play = function () {\n\t assurePlaybackState.call(player, true);\n\t return player.embed.play();\n\t };\n\n\t player.media.pause = function () {\n\t assurePlaybackState.call(player, false);\n\t return player.embed.pause();\n\t };\n\n\t player.media.stop = function () {\n\t player.pause();\n\t player.currentTime = 0;\n\t }; // Seeking\n\n\n\t var currentTime = player.media.currentTime;\n\t Object.defineProperty(player.media, 'currentTime', {\n\t get: function get() {\n\t return currentTime;\n\t },\n\t set: function set(time) {\n\t // Vimeo will automatically play on seek if the video hasn't been played before\n\t // Get current paused state and volume etc\n\t var embed = player.embed,\n\t media = player.media,\n\t paused = player.paused,\n\t volume = player.volume;\n\t var restorePause = paused && !embed.hasPlayed; // Set seeking state and trigger event\n\n\t media.seeking = true;\n\t triggerEvent.call(player, media, 'seeking'); // If paused, mute until seek is complete\n\n\t Promise.resolve(restorePause && embed.setVolume(0)) // Seek\n\t .then(function () {\n\t return embed.setCurrentTime(time);\n\t }) // Restore paused\n\t .then(function () {\n\t return restorePause && embed.pause();\n\t }) // Restore volume\n\t .then(function () {\n\t return restorePause && embed.setVolume(volume);\n\t }).catch(function () {// Do nothing\n\t });\n\t }\n\t }); // Playback speed\n\n\t var speed = player.config.speed.selected;\n\t Object.defineProperty(player.media, 'playbackRate', {\n\t get: function get() {\n\t return speed;\n\t },\n\t set: function set(input) {\n\t player.embed.setPlaybackRate(input).then(function () {\n\t speed = input;\n\t triggerEvent.call(player, player.media, 'ratechange');\n\t });\n\t }\n\t }); // Volume\n\n\t var volume = player.config.volume;\n\t Object.defineProperty(player.media, 'volume', {\n\t get: function get() {\n\t return volume;\n\t },\n\t set: function set(input) {\n\t player.embed.setVolume(input).then(function () {\n\t volume = input;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Muted\n\n\t var muted = player.config.muted;\n\t Object.defineProperty(player.media, 'muted', {\n\t get: function get() {\n\t return muted;\n\t },\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : false;\n\t player.embed.setVolume(toggle ? 0 : player.config.volume).then(function () {\n\t muted = toggle;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Loop\n\n\t var loop = player.config.loop;\n\t Object.defineProperty(player.media, 'loop', {\n\t get: function get() {\n\t return loop;\n\t },\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : player.config.loop.active;\n\t player.embed.setLoop(toggle).then(function () {\n\t loop = toggle;\n\t });\n\t }\n\t }); // Source\n\n\t var currentSrc;\n\t player.embed.getVideoUrl().then(function (value) {\n\t currentSrc = value;\n\t controls.setDownloadUrl.call(player);\n\t }).catch(function (error) {\n\t _this.debug.warn(error);\n\t });\n\t Object.defineProperty(player.media, 'currentSrc', {\n\t get: function get() {\n\t return currentSrc;\n\t }\n\t }); // Ended\n\n\t Object.defineProperty(player.media, 'ended', {\n\t get: function get() {\n\t return player.currentTime === player.duration;\n\t }\n\t }); // Set aspect ratio based on video size\n\n\t Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(function (dimensions) {\n\t var _dimensions = _slicedToArray(dimensions, 2),\n\t width = _dimensions[0],\n\t height = _dimensions[1];\n\n\t player.embed.ratio = [width, height];\n\t setAspectRatio.call(_this);\n\t }); // Set autopause\n\n\t player.embed.setAutopause(player.config.autopause).then(function (state) {\n\t player.config.autopause = state;\n\t }); // Get title\n\n\t player.embed.getVideoTitle().then(function (title) {\n\t player.config.title = title;\n\t ui.setTitle.call(_this);\n\t }); // Get current time\n\n\t player.embed.getCurrentTime().then(function (value) {\n\t currentTime = value;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t }); // Get duration\n\n\t player.embed.getDuration().then(function (value) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }); // Get captions\n\n\t player.embed.getTextTracks().then(function (tracks) {\n\t player.media.textTracks = tracks;\n\t captions.setup.call(player);\n\t });\n\t player.embed.on('cuechange', function (_ref) {\n\t var _ref$cues = _ref.cues,\n\t cues = _ref$cues === void 0 ? [] : _ref$cues;\n\t var strippedCues = cues.map(function (cue) {\n\t return stripHTML(cue.text);\n\t });\n\t captions.updateCues.call(player, strippedCues);\n\t });\n\t player.embed.on('loaded', function () {\n\t // Assure state and events are updated on autoplay\n\t player.embed.getPaused().then(function (paused) {\n\t assurePlaybackState.call(player, !paused);\n\n\t if (!paused) {\n\t triggerEvent.call(player, player.media, 'playing');\n\t }\n\t });\n\n\t if (is$2.element(player.embed.element) && player.supported.ui) {\n\t var frame = player.embed.element; // Fix keyboard focus issues\n\t // https://github.com/sampotts/plyr/issues/317\n\n\t frame.setAttribute('tabindex', -1);\n\t }\n\t });\n\t player.embed.on('bufferstart', function () {\n\t triggerEvent.call(player, player.media, 'waiting');\n\t });\n\t player.embed.on('bufferend', function () {\n\t triggerEvent.call(player, player.media, 'playing');\n\t });\n\t player.embed.on('play', function () {\n\t assurePlaybackState.call(player, true);\n\t triggerEvent.call(player, player.media, 'playing');\n\t });\n\t player.embed.on('pause', function () {\n\t assurePlaybackState.call(player, false);\n\t });\n\t player.embed.on('timeupdate', function (data) {\n\t player.media.seeking = false;\n\t currentTime = data.seconds;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t });\n\t player.embed.on('progress', function (data) {\n\t player.media.buffered = data.percent;\n\t triggerEvent.call(player, player.media, 'progress'); // Check all loaded\n\n\t if (parseInt(data.percent, 10) === 1) {\n\t triggerEvent.call(player, player.media, 'canplaythrough');\n\t } // Get duration as if we do it before load, it gives an incorrect value\n\t // https://github.com/sampotts/plyr/issues/891\n\n\n\t player.embed.getDuration().then(function (value) {\n\t if (value !== player.media.duration) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }\n\t });\n\t });\n\t player.embed.on('seeked', function () {\n\t player.media.seeking = false;\n\t triggerEvent.call(player, player.media, 'seeked');\n\t });\n\t player.embed.on('ended', function () {\n\t player.media.paused = true;\n\t triggerEvent.call(player, player.media, 'ended');\n\t });\n\t player.embed.on('error', function (detail) {\n\t player.media.error = detail;\n\t triggerEvent.call(player, player.media, 'error');\n\t }); // Rebuild UI\n\n\t setTimeout(function () {\n\t return ui.build.call(player);\n\t }, 0);\n\t }\n\t};\n\n\tfunction parseId$1(url) {\n\t if (is$2.empty(url)) {\n\t return null;\n\t }\n\n\t var regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState$1(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tfunction getHost$2(config) {\n\t if (config.noCookie) {\n\t return 'https://www.youtube-nocookie.com';\n\t }\n\n\t if (window.location.protocol === 'http:') {\n\t return 'http://www.youtube.com';\n\t } // Use YouTube's default\n\n\n\t return undefined;\n\t}\n\n\tvar youtube = {\n\t setup: function setup() {\n\t var _this = this;\n\n\t // Add embed class for responsive\n\t toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Setup API\n\n\t if (is$2.object(window.YT) && is$2.function(window.YT.Player)) {\n\t youtube.ready.call(this);\n\t } else {\n\t // Reference current global callback\n\t var callback = window.onYouTubeIframeAPIReady; // Set callback to process queue\n\n\t window.onYouTubeIframeAPIReady = function () {\n\t // Call global callback if set\n\t if (is$2.function(callback)) {\n\t callback();\n\t }\n\n\t youtube.ready.call(_this);\n\t }; // Load the SDK\n\n\n\t loadScript(this.config.urls.youtube.sdk).catch(function (error) {\n\t _this.debug.warn('YouTube API failed to load', error);\n\t });\n\t }\n\t },\n\t // Get the media title\n\t getTitle: function getTitle(videoId) {\n\t var _this2 = this;\n\n\t var url = format(this.config.urls.youtube.api, videoId);\n\t fetch(url).then(function (data) {\n\t if (is$2.object(data)) {\n\t var title = data.title,\n\t height = data.height,\n\t width = data.width; // Set title\n\n\t _this2.config.title = title;\n\t ui.setTitle.call(_this2); // Set aspect ratio\n\n\t _this2.embed.ratio = [width, height];\n\t }\n\n\t setAspectRatio.call(_this2);\n\t }).catch(function () {\n\t // Set aspect ratio\n\t setAspectRatio.call(_this2);\n\t });\n\t },\n\t // API ready\n\t ready: function ready() {\n\t var player = this; // Ignore already setup (race condition)\n\n\t var currentId = player.media && player.media.getAttribute('id');\n\n\t if (!is$2.empty(currentId) && currentId.startsWith('youtube-')) {\n\t return;\n\t } // Get the source URL or ID\n\n\n\t var source = player.media.getAttribute('src'); // Get from <div> if needed\n\n\t if (is$2.empty(source)) {\n\t source = player.media.getAttribute(this.config.attributes.embed.id);\n\t } // Replace the <iframe> with a <div> due to YouTube API issues\n\n\n\t var videoId = parseId$1(source);\n\t var id = generateId(player.provider); // Get poster, if already set\n\n\t var poster = player.poster; // Replace media element\n\n\t var container = createElement$1('div', {\n\t id: id,\n\t poster: poster\n\t });\n\t player.media = replaceElement(container, player.media); // Id to poster wrapper\n\n\t var posterSrc = function posterSrc(s) {\n\t return \"https://i.ytimg.com/vi/\".concat(videoId, \"/\").concat(s, \"default.jpg\");\n\t }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)\n\n\n\t loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded\n\t .catch(function () {\n\t return loadImage(posterSrc('sd'), 121);\n\t }) // 480p padded 4:3\n\t .catch(function () {\n\t return loadImage(posterSrc('hq'));\n\t }) // 360p padded 4:3. Always exists\n\t .then(function (image) {\n\t return ui.setPoster.call(player, image.src);\n\t }).then(function (src) {\n\t // If the image is padded, use background-size \"cover\" instead (like youtube does too with their posters)\n\t if (!src.includes('maxres')) {\n\t player.elements.poster.style.backgroundSize = 'cover';\n\t }\n\t }).catch(function () {});\n\t var config = player.config.youtube; // Setup instance\n\t // https://developers.google.com/youtube/iframe_api_reference\n\n\t player.embed = new window.YT.Player(id, {\n\t videoId: videoId,\n\t host: getHost$2(config),\n\t playerVars: extend$1({}, {\n\t autoplay: player.config.autoplay ? 1 : 0,\n\t // Autoplay\n\t hl: player.config.hl,\n\t // iframe interface language\n\t controls: player.supported.ui ? 0 : 1,\n\t // Only show controls if not fully supported\n\t disablekb: 1,\n\t // Disable keyboard as we handle it\n\t playsinline: !player.config.fullscreen.iosNative ? 1 : 0,\n\t // Allow iOS inline playback\n\t // Captions are flaky on YouTube\n\t cc_load_policy: player.captions.active ? 1 : 0,\n\t cc_lang_pref: player.config.captions.language,\n\t // Tracking for stats\n\t widget_referrer: window ? window.location.href : null\n\t }, config),\n\t events: {\n\t onError: function onError(event) {\n\t // YouTube may fire onError twice, so only handle it once\n\t if (!player.media.error) {\n\t var code = event.data; // Messages copied from https://developers.google.com/youtube/iframe_api_reference#onError\n\n\t var message = {\n\t 2: 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.',\n\t 5: 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.',\n\t 100: 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.',\n\t 101: 'The owner of the requested video does not allow it to be played in embedded players.',\n\t 150: 'The owner of the requested video does not allow it to be played in embedded players.'\n\t }[code] || 'An unknown error occured';\n\t player.media.error = {\n\t code: code,\n\t message: message\n\t };\n\t triggerEvent.call(player, player.media, 'error');\n\t }\n\t },\n\t onPlaybackRateChange: function onPlaybackRateChange(event) {\n\t // Get the instance\n\t var instance = event.target; // Get current speed\n\n\t player.media.playbackRate = instance.getPlaybackRate();\n\t triggerEvent.call(player, player.media, 'ratechange');\n\t },\n\t onReady: function onReady(event) {\n\t // Bail if onReady has already been called. See issue #1108\n\t if (is$2.function(player.media.play)) {\n\t return;\n\t } // Get the instance\n\n\n\t var instance = event.target; // Get the title\n\n\t youtube.getTitle.call(player, videoId); // Create a faux HTML5 API using the YouTube API\n\n\t player.media.play = function () {\n\t assurePlaybackState$1.call(player, true);\n\t instance.playVideo();\n\t };\n\n\t player.media.pause = function () {\n\t assurePlaybackState$1.call(player, false);\n\t instance.pauseVideo();\n\t };\n\n\t player.media.stop = function () {\n\t instance.stopVideo();\n\t };\n\n\t player.media.duration = instance.getDuration();\n\t player.media.paused = true; // Seeking\n\n\t player.media.currentTime = 0;\n\t Object.defineProperty(player.media, 'currentTime', {\n\t get: function get() {\n\t return Number(instance.getCurrentTime());\n\t },\n\t set: function set(time) {\n\t // If paused and never played, mute audio preventively (YouTube starts playing on seek if the video hasn't been played yet).\n\t if (player.paused && !player.embed.hasPlayed) {\n\t player.embed.mute();\n\t } // Set seeking state and trigger event\n\n\n\t player.media.seeking = true;\n\t triggerEvent.call(player, player.media, 'seeking'); // Seek after events sent\n\n\t instance.seekTo(time);\n\t }\n\t }); // Playback speed\n\n\t Object.defineProperty(player.media, 'playbackRate', {\n\t get: function get() {\n\t return instance.getPlaybackRate();\n\t },\n\t set: function set(input) {\n\t instance.setPlaybackRate(input);\n\t }\n\t }); // Volume\n\n\t var volume = player.config.volume;\n\t Object.defineProperty(player.media, 'volume', {\n\t get: function get() {\n\t return volume;\n\t },\n\t set: function set(input) {\n\t volume = input;\n\t instance.setVolume(volume * 100);\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t }\n\t }); // Muted\n\n\t var muted = player.config.muted;\n\t Object.defineProperty(player.media, 'muted', {\n\t get: function get() {\n\t return muted;\n\t },\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : muted;\n\t muted = toggle;\n\t instance[toggle ? 'mute' : 'unMute']();\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t }\n\t }); // Source\n\n\t Object.defineProperty(player.media, 'currentSrc', {\n\t get: function get() {\n\t return instance.getVideoUrl();\n\t }\n\t }); // Ended\n\n\t Object.defineProperty(player.media, 'ended', {\n\t get: function get() {\n\t return player.currentTime === player.duration;\n\t }\n\t }); // Get available speeds\n\n\t var speeds = instance.getAvailablePlaybackRates(); // Filter based on config\n\n\t player.options.speed = speeds.filter(function (s) {\n\t return player.config.speed.options.includes(s);\n\t }); // Set the tabindex to avoid focus entering iframe\n\n\t if (player.supported.ui) {\n\t player.media.setAttribute('tabindex', -1);\n\t }\n\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t triggerEvent.call(player, player.media, 'durationchange'); // Reset timer\n\n\t clearInterval(player.timers.buffering); // Setup buffering\n\n\t player.timers.buffering = setInterval(function () {\n\t // Get loaded % from YouTube\n\t player.media.buffered = instance.getVideoLoadedFraction(); // Trigger progress only when we actually buffer something\n\n\t if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) {\n\t triggerEvent.call(player, player.media, 'progress');\n\t } // Set last buffer point\n\n\n\t player.media.lastBuffered = player.media.buffered; // Bail if we're at 100%\n\n\t if (player.media.buffered === 1) {\n\t clearInterval(player.timers.buffering); // Trigger event\n\n\t triggerEvent.call(player, player.media, 'canplaythrough');\n\t }\n\t }, 200); // Rebuild UI\n\n\t setTimeout(function () {\n\t return ui.build.call(player);\n\t }, 50);\n\t },\n\t onStateChange: function onStateChange(event) {\n\t // Get the instance\n\t var instance = event.target; // Reset timer\n\n\t clearInterval(player.timers.playing);\n\t var seeked = player.media.seeking && [1, 2].includes(event.data);\n\n\t if (seeked) {\n\t // Unset seeking and fire seeked event\n\t player.media.seeking = false;\n\t triggerEvent.call(player, player.media, 'seeked');\n\t } // Handle events\n\t // -1 Unstarted\n\t // 0 Ended\n\t // 1 Playing\n\t // 2 Paused\n\t // 3 Buffering\n\t // 5 Video cued\n\n\n\t switch (event.data) {\n\t case -1:\n\t // Update scrubber\n\t triggerEvent.call(player, player.media, 'timeupdate'); // Get loaded % from YouTube\n\n\t player.media.buffered = instance.getVideoLoadedFraction();\n\t triggerEvent.call(player, player.media, 'progress');\n\t break;\n\n\t case 0:\n\t assurePlaybackState$1.call(player, false); // YouTube doesn't support loop for a single video, so mimick it.\n\n\t if (player.media.loop) {\n\t // YouTube needs a call to `stopVideo` before playing again\n\t instance.stopVideo();\n\t instance.playVideo();\n\t } else {\n\t triggerEvent.call(player, player.media, 'ended');\n\t }\n\n\t break;\n\n\t case 1:\n\t // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)\n\t if (!player.config.autoplay && player.media.paused && !player.embed.hasPlayed) {\n\t player.media.pause();\n\t } else {\n\t assurePlaybackState$1.call(player, true);\n\t triggerEvent.call(player, player.media, 'playing'); // Poll to get playback progress\n\n\t player.timers.playing = setInterval(function () {\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t }, 50); // Check duration again due to YouTube bug\n\t // https://github.com/sampotts/plyr/issues/374\n\t // https://code.google.com/p/gdata-issues/issues/detail?id=8690\n\n\t if (player.media.duration !== instance.getDuration()) {\n\t player.media.duration = instance.getDuration();\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }\n\t }\n\n\t break;\n\n\t case 2:\n\t // Restore audio (YouTube starts playing on seek if the video hasn't been played yet)\n\t if (!player.muted) {\n\t player.embed.unMute();\n\t }\n\n\t assurePlaybackState$1.call(player, false);\n\t break;\n\n\t case 3:\n\t // Trigger waiting event to add loading classes to container as the video buffers.\n\t triggerEvent.call(player, player.media, 'waiting');\n\t break;\n\t }\n\n\t triggerEvent.call(player, player.elements.container, 'statechange', false, {\n\t code: event.data\n\t });\n\t }\n\t }\n\t });\n\t }\n\t};\n\n\tvar media = {\n\t // Setup media\n\t setup: function setup() {\n\t // If there's no media, bail\n\t if (!this.media) {\n\t this.debug.warn('No media element found!');\n\t return;\n\t } // Add type class\n\n\n\t toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', this.type), true); // Add provider class\n\n\t toggleClass(this.elements.container, this.config.classNames.provider.replace('{0}', this.provider), true); // Add video class for embeds\n\t // This will require changes if audio embeds are added\n\n\t if (this.isEmbed) {\n\t toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', 'video'), true);\n\t } // Inject the player wrapper\n\n\n\t if (this.isVideo) {\n\t // Create the wrapper div\n\t this.elements.wrapper = createElement$1('div', {\n\t class: this.config.classNames.video\n\t }); // Wrap the video in a container\n\n\t wrap$3(this.media, this.elements.wrapper); // Faux poster container\n\n\t if (this.isEmbed) {\n\t this.elements.poster = createElement$1('div', {\n\t class: this.config.classNames.poster\n\t });\n\t this.elements.wrapper.appendChild(this.elements.poster);\n\t }\n\t }\n\n\t if (this.isHTML5) {\n\t html5.setup.call(this);\n\t } else if (this.isYouTube) {\n\t youtube.setup.call(this);\n\t } else if (this.isVimeo) {\n\t vimeo.setup.call(this);\n\t }\n\t }\n\t};\n\n\tvar destroy = function destroy(instance) {\n\t // Destroy our adsManager\n\t if (instance.manager) {\n\t instance.manager.destroy();\n\t } // Destroy our adsManager\n\n\n\t if (instance.elements.displayContainer) {\n\t instance.elements.displayContainer.destroy();\n\t }\n\n\t instance.elements.container.remove();\n\t};\n\n\tvar Ads = /*#__PURE__*/function () {\n\t /**\n\t * Ads constructor.\n\t * @param {Object} player\n\t * @return {Ads}\n\t */\n\t function Ads(player) {\n\t var _this = this;\n\n\t _classCallCheck(this, Ads);\n\n\t this.player = player;\n\t this.config = player.config.ads;\n\t this.playing = false;\n\t this.initialized = false;\n\t this.elements = {\n\t container: null,\n\t displayContainer: null\n\t };\n\t this.manager = null;\n\t this.loader = null;\n\t this.cuePoints = null;\n\t this.events = {};\n\t this.safetyTimer = null;\n\t this.countdownTimer = null; // Setup a promise to resolve when the IMA manager is ready\n\n\t this.managerPromise = new Promise(function (resolve, reject) {\n\t // The ad is loaded and ready\n\t _this.on('loaded', resolve); // Ads failed\n\n\n\t _this.on('error', reject);\n\t });\n\t this.load();\n\t }\n\n\t _createClass(Ads, [{\n\t key: \"load\",\n\n\t /**\n\t * Load the IMA SDK\n\t */\n\t value: function load() {\n\t var _this2 = this;\n\n\t if (!this.enabled) {\n\t return;\n\t } // Check if the Google IMA3 SDK is loaded or load it ourselves\n\n\n\t if (!is$2.object(window.google) || !is$2.object(window.google.ima)) {\n\t loadScript(this.player.config.urls.googleIMA.sdk).then(function () {\n\t _this2.ready();\n\t }).catch(function () {\n\t // Script failed to load or is blocked\n\t _this2.trigger('error', new Error('Google IMA SDK failed to load'));\n\t });\n\t } else {\n\t this.ready();\n\t }\n\t }\n\t /**\n\t * Get the ads instance ready\n\t */\n\n\t }, {\n\t key: \"ready\",\n\t value: function ready() {\n\t var _this3 = this;\n\n\t // Double check we're enabled\n\t if (!this.enabled) {\n\t destroy(this);\n\t } // Start ticking our safety timer. If the whole advertisement\n\t // thing doesn't resolve within our set time; we bail\n\n\n\t this.startSafetyTimer(12000, 'ready()'); // Clear the safety timer\n\n\t this.managerPromise.then(function () {\n\t _this3.clearSafetyTimer('onAdsManagerLoaded()');\n\t }); // Set listeners on the Plyr instance\n\n\t this.listeners(); // Setup the IMA SDK\n\n\t this.setupIMA();\n\t } // Build the tag URL\n\n\t }, {\n\t key: \"setupIMA\",\n\n\t /**\n\t * In order for the SDK to display ads for our video, we need to tell it where to put them,\n\t * so here we define our ad container. This div is set up to render on top of the video player.\n\t * Using the code below, we tell the SDK to render ads within that div. We also provide a\n\t * handle to the content video player - the SDK will poll the current time of our player to\n\t * properly place mid-rolls. After we create the ad display container, we initialize it. On\n\t * mobile devices, this initialization is done as the result of a user action.\n\t */\n\t value: function setupIMA() {\n\t // Create the container for our advertisements\n\t this.elements.container = createElement$1('div', {\n\t class: this.player.config.classNames.ads\n\t });\n\t this.player.elements.container.appendChild(this.elements.container); // So we can run VPAID2\n\n\t google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED); // Set language\n\n\t google.ima.settings.setLocale(this.player.config.ads.language); // Set playback for iOS10+\n\n\t google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads\n\n\t this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Request video ads to be pre-loaded\n\n\t this.requestAds();\n\t }\n\t /**\n\t * Request advertisements\n\t */\n\n\t }, {\n\t key: \"requestAds\",\n\t value: function requestAds() {\n\t var _this4 = this;\n\n\t var container = this.player.elements.container;\n\n\t try {\n\t // Create ads loader\n\t this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events\n\n\t this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) {\n\t return _this4.onAdsManagerLoaded(event);\n\t }, false);\n\t this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {\n\t return _this4.onAdError(error);\n\t }, false); // Request video ads\n\n\t var request = new google.ima.AdsRequest();\n\t request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK\n\t // to select the correct creative if multiple are returned\n\n\t request.linearAdSlotWidth = container.offsetWidth;\n\t request.linearAdSlotHeight = container.offsetHeight;\n\t request.nonLinearAdSlotWidth = container.offsetWidth;\n\t request.nonLinearAdSlotHeight = container.offsetHeight; // We only overlay ads as we only support video.\n\n\t request.forceNonLinearFullSlot = false; // Mute based on current state\n\n\t request.setAdWillPlayMuted(!this.player.muted);\n\t this.loader.requestAds(request);\n\t } catch (e) {\n\t this.onAdError(e);\n\t }\n\t }\n\t /**\n\t * Update the ad countdown\n\t * @param {Boolean} start\n\t */\n\n\t }, {\n\t key: \"pollCountdown\",\n\t value: function pollCountdown() {\n\t var _this5 = this;\n\n\t var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t if (!start) {\n\t clearInterval(this.countdownTimer);\n\t this.elements.container.removeAttribute('data-badge-text');\n\t return;\n\t }\n\n\t var update = function update() {\n\t var time = formatTime(Math.max(_this5.manager.getRemainingTime(), 0));\n\t var label = \"\".concat(i18n.get('advertisement', _this5.player.config), \" - \").concat(time);\n\n\t _this5.elements.container.setAttribute('data-badge-text', label);\n\t };\n\n\t this.countdownTimer = setInterval(update, 100);\n\t }\n\t /**\n\t * This method is called whenever the ads are ready inside the AdDisplayContainer\n\t * @param {Event} adsManagerLoadedEvent\n\t */\n\n\t }, {\n\t key: \"onAdsManagerLoaded\",\n\t value: function onAdsManagerLoaded(event) {\n\t var _this6 = this;\n\n\t // Load could occur after a source change (race condition)\n\t if (!this.enabled) {\n\t return;\n\t } // Get the ads manager\n\n\n\t var settings = new google.ima.AdsRenderingSettings(); // Tell the SDK to save and restore content video state on our behalf\n\n\t settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n\t settings.enablePreloading = true; // The SDK is polling currentTime on the contentPlayback. And needs a duration\n\t // so it can determine when to start the mid- and post-roll\n\n\t this.manager = event.getAdsManager(this.player, settings); // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n\n\t this.cuePoints = this.manager.getCuePoints(); // Add listeners to the required events\n\t // Advertisement error events\n\n\t this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {\n\t return _this6.onAdError(error);\n\t }); // Advertisement regular events\n\n\t Object.keys(google.ima.AdEvent.Type).forEach(function (type) {\n\t _this6.manager.addEventListener(google.ima.AdEvent.Type[type], function (e) {\n\t return _this6.onAdEvent(e);\n\t });\n\t }); // Resolve our adsManager\n\n\t this.trigger('loaded');\n\t }\n\t }, {\n\t key: \"addCuePoints\",\n\t value: function addCuePoints() {\n\t var _this7 = this;\n\n\t // Add advertisement cue's within the time line if available\n\t if (!is$2.empty(this.cuePoints)) {\n\t this.cuePoints.forEach(function (cuePoint) {\n\t if (cuePoint !== 0 && cuePoint !== -1 && cuePoint < _this7.player.duration) {\n\t var seekElement = _this7.player.elements.progress;\n\n\t if (is$2.element(seekElement)) {\n\t var cuePercentage = 100 / _this7.player.duration * cuePoint;\n\t var cue = createElement$1('span', {\n\t class: _this7.player.config.classNames.cues\n\t });\n\t cue.style.left = \"\".concat(cuePercentage.toString(), \"%\");\n\t seekElement.appendChild(cue);\n\t }\n\t }\n\t });\n\t }\n\t }\n\t /**\n\t * This is where all the event handling takes place. Retrieve the ad from the event. Some\n\t * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n\t * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n\t * @param {Event} event\n\t */\n\n\t }, {\n\t key: \"onAdEvent\",\n\t value: function onAdEvent(event) {\n\t var _this8 = this;\n\n\t var container = this.player.elements.container; // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n\t // don't have ad object associated\n\n\t var ad = event.getAd();\n\t var adData = event.getAdData(); // Proxy event\n\n\t var dispatchEvent = function dispatchEvent(type) {\n\t triggerEvent.call(_this8.player, _this8.player.media, \"ads\".concat(type.replace(/_/g, '').toLowerCase()));\n\t }; // Bubble the event\n\n\n\t dispatchEvent(event.type);\n\n\t switch (event.type) {\n\t case google.ima.AdEvent.Type.LOADED:\n\t // This is the first event sent for an ad - it is possible to determine whether the\n\t // ad is a video ad or an overlay\n\t this.trigger('loaded'); // Start countdown\n\n\t this.pollCountdown(true);\n\n\t if (!ad.isLinear()) {\n\t // Position AdDisplayContainer correctly for overlay\n\t ad.width = container.offsetWidth;\n\t ad.height = container.offsetHeight;\n\t } // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n\t // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n\n\n\t break;\n\n\t case google.ima.AdEvent.Type.STARTED:\n\t // Set volume to match player\n\t this.manager.setVolume(this.player.volume);\n\t break;\n\n\t case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n\t // All ads for the current videos are done. We can now request new advertisements\n\t // in case the video is re-played\n\t // TODO: Example for what happens when a next video in a playlist would be loaded.\n\t // So here we load a new video when all ads are done.\n\t // Then we load new ads within a new adsManager. When the video\n\t // Is started - after - the ads are loaded, then we get ads.\n\t // You can also easily test cancelling and reloading by running\n\t // player.ads.cancel() and player.ads.play from the console I guess.\n\t // this.player.source = {\n\t // type: 'video',\n\t // title: 'View From A Blue Moon',\n\t // sources: [{\n\t // src:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n\t // 'video/mp4', }], poster:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n\t // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n\t // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n\t // };\n\t // TODO: So there is still this thing where a video should only be allowed to start\n\t // playing when the IMA SDK is ready or has failed\n\t this.loadAds();\n\t break;\n\n\t case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n\t // This event indicates the ad has started - the video player can adjust the UI,\n\t // for example display a pause button and remaining time. Fired when content should\n\t // be paused. This usually happens right before an ad is about to cover the content\n\t this.pauseContent();\n\t break;\n\n\t case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n\t // This event indicates the ad has finished - the video player can perform\n\t // appropriate UI actions, such as removing the timer for remaining time detection.\n\t // Fired when content should be resumed. This usually happens when an ad finishes\n\t // or collapses\n\t this.pollCountdown();\n\t this.resumeContent();\n\t break;\n\n\t case google.ima.AdEvent.Type.LOG:\n\t if (adData.adError) {\n\t this.player.debug.warn(\"Non-fatal ad error: \".concat(adData.adError.getMessage()));\n\t }\n\n\t break;\n\t }\n\t }\n\t /**\n\t * Any ad error handling comes through here\n\t * @param {Event} event\n\t */\n\n\t }, {\n\t key: \"onAdError\",\n\t value: function onAdError(event) {\n\t this.cancel();\n\t this.player.debug.warn('Ads error', event);\n\t }\n\t /**\n\t * Setup hooks for Plyr and window events. This ensures\n\t * the mid- and post-roll launch at the correct time. And\n\t * resize the advertisement when the player resizes\n\t */\n\n\t }, {\n\t key: \"listeners\",\n\t value: function listeners() {\n\t var _this9 = this;\n\n\t var container = this.player.elements.container;\n\t var time;\n\t this.player.on('canplay', function () {\n\t _this9.addCuePoints();\n\t });\n\t this.player.on('ended', function () {\n\t _this9.loader.contentComplete();\n\t });\n\t this.player.on('timeupdate', function () {\n\t time = _this9.player.currentTime;\n\t });\n\t this.player.on('seeked', function () {\n\t var seekedTime = _this9.player.currentTime;\n\n\t if (is$2.empty(_this9.cuePoints)) {\n\t return;\n\t }\n\n\t _this9.cuePoints.forEach(function (cuePoint, index) {\n\t if (time < cuePoint && cuePoint < seekedTime) {\n\t _this9.manager.discardAdBreak();\n\n\t _this9.cuePoints.splice(index, 1);\n\t }\n\t });\n\t }); // Listen to the resizing of the window. And resize ad accordingly\n\t // TODO: eventually implement ResizeObserver\n\n\t window.addEventListener('resize', function () {\n\t if (_this9.manager) {\n\t _this9.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\t }\n\t });\n\t }\n\t /**\n\t * Initialize the adsManager and start playing advertisements\n\t */\n\n\t }, {\n\t key: \"play\",\n\t value: function play() {\n\t var _this10 = this;\n\n\t var container = this.player.elements.container;\n\n\t if (!this.managerPromise) {\n\t this.resumeContent();\n\t } // Play the requested advertisement whenever the adsManager is ready\n\n\n\t this.managerPromise.then(function () {\n\t // Set volume to match player\n\t _this10.manager.setVolume(_this10.player.volume); // Initialize the container. Must be done via a user action on mobile devices\n\n\n\t _this10.elements.displayContainer.initialize();\n\n\t try {\n\t if (!_this10.initialized) {\n\t // Initialize the ads manager. Ad rules playlist will start at this time\n\t _this10.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will\n\t // start at this time; the call will be ignored for ad rules\n\n\n\t _this10.manager.start();\n\t }\n\n\t _this10.initialized = true;\n\t } catch (adError) {\n\t // An error may be thrown if there was a problem with the\n\t // VAST response\n\t _this10.onAdError(adError);\n\t }\n\t }).catch(function () {});\n\t }\n\t /**\n\t * Resume our video\n\t */\n\n\t }, {\n\t key: \"resumeContent\",\n\t value: function resumeContent() {\n\t // Hide the advertisement container\n\t this.elements.container.style.zIndex = ''; // Ad is stopped\n\n\t this.playing = false; // Play video\n\n\t this.player.media.play();\n\t }\n\t /**\n\t * Pause our video\n\t */\n\n\t }, {\n\t key: \"pauseContent\",\n\t value: function pauseContent() {\n\t // Show the advertisement container\n\t this.elements.container.style.zIndex = 3; // Ad is playing\n\n\t this.playing = true; // Pause our video.\n\n\t this.player.media.pause();\n\t }\n\t /**\n\t * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n\t * allowed to call new ads based on google policies, as they interpret this as an accidental\n\t * video requests. https://developers.google.com/interactive-\n\t * media-ads/docs/sdks/android/faq#8\n\t */\n\n\t }, {\n\t key: \"cancel\",\n\t value: function cancel() {\n\t // Pause our video\n\t if (this.initialized) {\n\t this.resumeContent();\n\t } // Tell our instance that we're done for now\n\n\n\t this.trigger('error'); // Re-create our adsManager\n\n\t this.loadAds();\n\t }\n\t /**\n\t * Re-create our adsManager\n\t */\n\n\t }, {\n\t key: \"loadAds\",\n\t value: function loadAds() {\n\t var _this11 = this;\n\n\t // Tell our adsManager to go bye bye\n\t this.managerPromise.then(function () {\n\t // Destroy our adsManager\n\t if (_this11.manager) {\n\t _this11.manager.destroy();\n\t } // Re-set our adsManager promises\n\n\n\t _this11.managerPromise = new Promise(function (resolve) {\n\t _this11.on('loaded', resolve);\n\n\t _this11.player.debug.log(_this11.manager);\n\t }); // Now request some new advertisements\n\n\t _this11.requestAds();\n\t }).catch(function () {});\n\t }\n\t /**\n\t * Handles callbacks after an ad event was invoked\n\t * @param {String} event - Event type\n\t */\n\n\t }, {\n\t key: \"trigger\",\n\t value: function trigger(event) {\n\t var _this12 = this;\n\n\t for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t var handlers = this.events[event];\n\n\t if (is$2.array(handlers)) {\n\t handlers.forEach(function (handler) {\n\t if (is$2.function(handler)) {\n\t handler.apply(_this12, args);\n\t }\n\t });\n\t }\n\t }\n\t /**\n\t * Add event listeners\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t * @return {Ads}\n\t */\n\n\t }, {\n\t key: \"on\",\n\t value: function on(event, callback) {\n\t if (!is$2.array(this.events[event])) {\n\t this.events[event] = [];\n\t }\n\n\t this.events[event].push(callback);\n\t return this;\n\t }\n\t /**\n\t * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n\t * The advertisement has 12 seconds to get its things together. We stop this timer when the\n\t * advertisement is playing, or when a user action is required to start, then we clear the\n\t * timer on ad ready\n\t * @param {Number} time\n\t * @param {String} from\n\t */\n\n\t }, {\n\t key: \"startSafetyTimer\",\n\t value: function startSafetyTimer(time, from) {\n\t var _this13 = this;\n\n\t this.player.debug.log(\"Safety timer invoked from: \".concat(from));\n\t this.safetyTimer = setTimeout(function () {\n\t _this13.cancel();\n\n\t _this13.clearSafetyTimer('startSafetyTimer()');\n\t }, time);\n\t }\n\t /**\n\t * Clear our safety timer(s)\n\t * @param {String} from\n\t */\n\n\t }, {\n\t key: \"clearSafetyTimer\",\n\t value: function clearSafetyTimer(from) {\n\t if (!is$2.nullOrUndefined(this.safetyTimer)) {\n\t this.player.debug.log(\"Safety timer cleared from: \".concat(from));\n\t clearTimeout(this.safetyTimer);\n\t this.safetyTimer = null;\n\t }\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t var config = this.config;\n\t return this.player.isHTML5 && this.player.isVideo && config.enabled && (!is$2.empty(config.publisherId) || is$2.url(config.tagUrl));\n\t }\n\t }, {\n\t key: \"tagUrl\",\n\t get: function get() {\n\t var config = this.config;\n\n\t if (is$2.url(config.tagUrl)) {\n\t return config.tagUrl;\n\t }\n\n\t var params = {\n\t AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n\t AV_CHANNELID: '5a0458dc28a06145e4519d21',\n\t AV_URL: window.location.hostname,\n\t cb: Date.now(),\n\t AV_WIDTH: 640,\n\t AV_HEIGHT: 480,\n\t AV_CDIM2: config.publisherId\n\t };\n\t var base = 'https://go.aniview.com/api/adserver6/vast/';\n\t return \"\".concat(base, \"?\").concat(buildUrlParams(params));\n\t }\n\t }]);\n\n\t return Ads;\n\t}();\n\n\tvar $findIndex = arrayIteration.findIndex;\n\n\n\n\tvar FIND_INDEX = 'findIndex';\n\tvar SKIPS_HOLES$2 = true;\n\n\tvar USES_TO_LENGTH$b = arrayMethodUsesToLength(FIND_INDEX);\n\n\t// Shouldn't skip holes\n\tif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES$2 = false; });\n\n\t// `Array.prototype.findIndex` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n\t_export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$2 || !USES_TO_LENGTH$b }, {\n\t findIndex: function findIndex(callbackfn /* , that = undefined */) {\n\t return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1(FIND_INDEX);\n\n\tvar min$b = Math.min;\n\tvar nativeLastIndexOf$1 = [].lastIndexOf;\n\tvar NEGATIVE_ZERO$3 = !!nativeLastIndexOf$1 && 1 / [1].lastIndexOf(1, -0) < 0;\n\tvar STRICT_METHOD$6 = arrayMethodIsStrict('lastIndexOf');\n\t// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\n\tvar USES_TO_LENGTH$c = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\tvar FORCED$b = NEGATIVE_ZERO$3 || !STRICT_METHOD$6 || !USES_TO_LENGTH$c;\n\n\t// `Array.prototype.lastIndexOf` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\tvar arrayLastIndexOf$1 = FORCED$b ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n\t // convert -0 to +0\n\t if (NEGATIVE_ZERO$3) return nativeLastIndexOf$1.apply(this, arguments) || 0;\n\t var O = toIndexedObject$1(this);\n\t var length = toLength$1(O.length);\n\t var index = length - 1;\n\t if (arguments.length > 1) index = min$b(index, toInteger$1(arguments[1]));\n\t if (index < 0) index = length + index;\n\t for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n\t return -1;\n\t} : nativeLastIndexOf$1;\n\n\t// `Array.prototype.lastIndexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\t_export$1({ target: 'Array', proto: true, forced: arrayLastIndexOf$1 !== [].lastIndexOf }, {\n\t lastIndexOf: arrayLastIndexOf$1\n\t});\n\n\tvar parseVtt = function parseVtt(vttDataString) {\n\t var processedList = [];\n\t var frames = vttDataString.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/);\n\t frames.forEach(function (frame) {\n\t var result = {};\n\t var lines = frame.split(/\\r\\n|\\n|\\r/);\n\t lines.forEach(function (line) {\n\t if (!is$2.number(result.startTime)) {\n\t // The line with start and end times on it is the first line of interest\n\t var matchTimes = line.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/); // Note that this currently ignores caption formatting directives that are optionally on the end of this line - fine for non-captions VTT\n\n\t if (matchTimes) {\n\t result.startTime = Number(matchTimes[1] || 0) * 60 * 60 + Number(matchTimes[2]) * 60 + Number(matchTimes[3]) + Number(\"0.\".concat(matchTimes[4]));\n\t result.endTime = Number(matchTimes[6] || 0) * 60 * 60 + Number(matchTimes[7]) * 60 + Number(matchTimes[8]) + Number(\"0.\".concat(matchTimes[9]));\n\t }\n\t } else if (!is$2.empty(line.trim()) && is$2.empty(result.text)) {\n\t // If we already have the startTime, then we're definitely up to the text line(s)\n\t var lineSplit = line.trim().split('#xywh=');\n\n\t var _lineSplit = _slicedToArray(lineSplit, 1);\n\n\t result.text = _lineSplit[0];\n\n\t // If there's content in lineSplit[1], then we have sprites. If not, then it's just one frame per image\n\t if (lineSplit[1]) {\n\t var _lineSplit$1$split = lineSplit[1].split(',');\n\n\t var _lineSplit$1$split2 = _slicedToArray(_lineSplit$1$split, 4);\n\n\t result.x = _lineSplit$1$split2[0];\n\t result.y = _lineSplit$1$split2[1];\n\t result.w = _lineSplit$1$split2[2];\n\t result.h = _lineSplit$1$split2[3];\n\t }\n\t }\n\t });\n\n\t if (result.text) {\n\t processedList.push(result);\n\t }\n\t });\n\t return processedList;\n\t};\n\t/**\n\t * Preview thumbnails for seek hover and scrubbing\n\t * Seeking: Hover over the seek bar (desktop only): shows a small preview container above the seek bar\n\t * Scrubbing: Click and drag the seek bar (desktop and mobile): shows the preview image over the entire video, as if the video is scrubbing at very high speed\n\t *\n\t * Notes:\n\t * - Thumbs are set via JS settings on Plyr init, not HTML5 'track' property. Using the track property would be a bit gross, because it doesn't support custom 'kinds'. kind=metadata might be used for something else, and we want to allow multiple thumbnails tracks. Tracks must have a unique combination of 'kind' and 'label'. We would have to do something like kind=metadata,label=thumbnails1 / kind=metadata,label=thumbnails2. Square peg, round hole\n\t * - VTT info: the image URL is relative to the VTT, not the current document. But if the url starts with a slash, it will naturally be relative to the current domain. https://support.jwplayer.com/articles/how-to-add-preview-thumbnails\n\t * - This implementation uses multiple separate img elements. Other implementations use background-image on one element. This would be nice and simple, but Firefox and Safari have flickering issues with replacing backgrounds of larger images. It seems that YouTube perhaps only avoids this because they don't have the option for high-res previews (even the fullscreen ones, when mousedown/seeking). Images appear over the top of each other, and previous ones are discarded once the new ones have been rendered\n\t */\n\n\n\tvar fitRatio = function fitRatio(ratio, outer) {\n\t var targetRatio = outer.width / outer.height;\n\t var result = {};\n\n\t if (ratio > targetRatio) {\n\t result.width = outer.width;\n\t result.height = 1 / ratio * outer.width;\n\t } else {\n\t result.height = outer.height;\n\t result.width = ratio * outer.height;\n\t }\n\n\t return result;\n\t};\n\n\tvar PreviewThumbnails = /*#__PURE__*/function () {\n\t /**\n\t * PreviewThumbnails constructor.\n\t * @param {Plyr} player\n\t * @return {PreviewThumbnails}\n\t */\n\t function PreviewThumbnails(player) {\n\t _classCallCheck(this, PreviewThumbnails);\n\n\t this.player = player;\n\t this.thumbnails = [];\n\t this.loaded = false;\n\t this.lastMouseMoveTime = Date.now();\n\t this.mouseDown = false;\n\t this.loadedImages = [];\n\t this.elements = {\n\t thumb: {},\n\t scrubbing: {}\n\t };\n\t this.load();\n\t }\n\n\t _createClass(PreviewThumbnails, [{\n\t key: \"load\",\n\t value: function load() {\n\t var _this = this;\n\n\t // Toggle the regular seek tooltip\n\t if (this.player.elements.display.seekTooltip) {\n\t this.player.elements.display.seekTooltip.hidden = this.enabled;\n\t }\n\n\t if (!this.enabled) {\n\t return;\n\t }\n\n\t this.getThumbnails().then(function () {\n\t if (!_this.enabled) {\n\t return;\n\t } // Render DOM elements\n\n\n\t _this.render(); // Check to see if thumb container size was specified manually in CSS\n\n\n\t _this.determineContainerAutoSizing();\n\n\t _this.loaded = true;\n\t });\n\t } // Download VTT files and parse them\n\n\t }, {\n\t key: \"getThumbnails\",\n\t value: function getThumbnails() {\n\t var _this2 = this;\n\n\t return new Promise(function (resolve) {\n\t var src = _this2.player.config.previewThumbnails.src;\n\n\t if (is$2.empty(src)) {\n\t throw new Error('Missing previewThumbnails.src config attribute');\n\t } // If string, convert into single-element list\n\n\n\t var urls = is$2.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails\n\n\t var promises = urls.map(function (u) {\n\t return _this2.getThumbnail(u);\n\t });\n\t Promise.all(promises).then(function () {\n\t // Sort smallest to biggest (e.g., [120p, 480p, 1080p])\n\t _this2.thumbnails.sort(function (x, y) {\n\t return x.height - y.height;\n\t });\n\n\t _this2.player.debug.log('Preview thumbnails', _this2.thumbnails);\n\n\t resolve();\n\t });\n\t });\n\t } // Process individual VTT file\n\n\t }, {\n\t key: \"getThumbnail\",\n\t value: function getThumbnail(url) {\n\t var _this3 = this;\n\n\t return new Promise(function (resolve) {\n\t fetch(url).then(function (response) {\n\t var thumbnail = {\n\t frames: parseVtt(response),\n\t height: null,\n\t urlPrefix: ''\n\t }; // If the URLs don't start with '/', then we need to set their relative path to be the location of the VTT file\n\t // If the URLs do start with '/', then they obviously don't need a prefix, so it will remain blank\n\t // If the thumbnail URLs start with with none of '/', 'http://' or 'https://', then we need to set their relative path to be the location of the VTT file\n\n\t if (!thumbnail.frames[0].text.startsWith('/') && !thumbnail.frames[0].text.startsWith('http://') && !thumbnail.frames[0].text.startsWith('https://')) {\n\t thumbnail.urlPrefix = url.substring(0, url.lastIndexOf('/') + 1);\n\t } // Download the first frame, so that we can determine/set the height of this thumbnailsDef\n\n\n\t var tempImage = new Image();\n\n\t tempImage.onload = function () {\n\t thumbnail.height = tempImage.naturalHeight;\n\t thumbnail.width = tempImage.naturalWidth;\n\n\t _this3.thumbnails.push(thumbnail);\n\n\t resolve();\n\t };\n\n\t tempImage.src = thumbnail.urlPrefix + thumbnail.frames[0].text;\n\t });\n\t });\n\t }\n\t }, {\n\t key: \"startMove\",\n\t value: function startMove(event) {\n\t if (!this.loaded) {\n\t return;\n\t }\n\n\t if (!is$2.event(event) || !['touchmove', 'mousemove'].includes(event.type)) {\n\t return;\n\t } // Wait until media has a duration\n\n\n\t if (!this.player.media.duration) {\n\t return;\n\t }\n\n\t if (event.type === 'touchmove') {\n\t // Calculate seek hover position as approx video seconds\n\t this.seekTime = this.player.media.duration * (this.player.elements.inputs.seek.value / 100);\n\t } else {\n\t // Calculate seek hover position as approx video seconds\n\t var clientRect = this.player.elements.progress.getBoundingClientRect();\n\t var percentage = 100 / clientRect.width * (event.pageX - clientRect.left);\n\t this.seekTime = this.player.media.duration * (percentage / 100);\n\n\t if (this.seekTime < 0) {\n\t // The mousemove fires for 10+px out to the left\n\t this.seekTime = 0;\n\t }\n\n\t if (this.seekTime > this.player.media.duration - 1) {\n\t // Took 1 second off the duration for safety, because different players can disagree on the real duration of a video\n\t this.seekTime = this.player.media.duration - 1;\n\t }\n\n\t this.mousePosX = event.pageX; // Set time text inside image container\n\n\t this.elements.thumb.time.innerText = formatTime(this.seekTime);\n\t } // Download and show image\n\n\n\t this.showImageAtCurrentTime();\n\t }\n\t }, {\n\t key: \"endMove\",\n\t value: function endMove() {\n\t this.toggleThumbContainer(false, true);\n\t }\n\t }, {\n\t key: \"startScrubbing\",\n\t value: function startScrubbing(event) {\n\t // Only act on left mouse button (0), or touch device (event.button does not exist or is false)\n\t if (is$2.nullOrUndefined(event.button) || event.button === false || event.button === 0) {\n\t this.mouseDown = true; // Wait until media has a duration\n\n\t if (this.player.media.duration) {\n\t this.toggleScrubbingContainer(true);\n\t this.toggleThumbContainer(false, true); // Download and show image\n\n\t this.showImageAtCurrentTime();\n\t }\n\t }\n\t }\n\t }, {\n\t key: \"endScrubbing\",\n\t value: function endScrubbing() {\n\t var _this4 = this;\n\n\t this.mouseDown = false; // Hide scrubbing preview. But wait until the video has successfully seeked before hiding the scrubbing preview\n\n\t if (Math.ceil(this.lastTime) === Math.ceil(this.player.media.currentTime)) {\n\t // The video was already seeked/loaded at the chosen time - hide immediately\n\t this.toggleScrubbingContainer(false);\n\t } else {\n\t // The video hasn't seeked yet. Wait for that\n\t once.call(this.player, this.player.media, 'timeupdate', function () {\n\t // Re-check mousedown - we might have already started scrubbing again\n\t if (!_this4.mouseDown) {\n\t _this4.toggleScrubbingContainer(false);\n\t }\n\t });\n\t }\n\t }\n\t /**\n\t * Setup hooks for Plyr and window events\n\t */\n\n\t }, {\n\t key: \"listeners\",\n\t value: function listeners() {\n\t var _this5 = this;\n\n\t // Hide thumbnail preview - on mouse click, mouse leave (in listeners.js for now), and video play/seek. All four are required, e.g., for buffering\n\t this.player.on('play', function () {\n\t _this5.toggleThumbContainer(false, true);\n\t });\n\t this.player.on('seeked', function () {\n\t _this5.toggleThumbContainer(false);\n\t });\n\t this.player.on('timeupdate', function () {\n\t _this5.lastTime = _this5.player.media.currentTime;\n\t });\n\t }\n\t /**\n\t * Create HTML elements for image containers\n\t */\n\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t // Create HTML element: plyr__preview-thumbnail-container\n\t this.elements.thumb.container = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.thumbContainer\n\t }); // Wrapper for the image for styling\n\n\t this.elements.thumb.imageContainer = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.imageContainer\n\t });\n\t this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer); // Create HTML element, parent+span: time text (e.g., 01:32:00)\n\n\t var timeContainer = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.timeContainer\n\t });\n\t this.elements.thumb.time = createElement$1('span', {}, '00:00');\n\t timeContainer.appendChild(this.elements.thumb.time);\n\t this.elements.thumb.container.appendChild(timeContainer); // Inject the whole thumb\n\n\t if (is$2.element(this.player.elements.progress)) {\n\t this.player.elements.progress.appendChild(this.elements.thumb.container);\n\t } // Create HTML element: plyr__preview-scrubbing-container\n\n\n\t this.elements.scrubbing.container = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.scrubbingContainer\n\t });\n\t this.player.elements.wrapper.appendChild(this.elements.scrubbing.container);\n\t }\n\t }, {\n\t key: \"destroy\",\n\t value: function destroy() {\n\t if (this.elements.thumb.container) {\n\t this.elements.thumb.container.remove();\n\t }\n\n\t if (this.elements.scrubbing.container) {\n\t this.elements.scrubbing.container.remove();\n\t }\n\t }\n\t }, {\n\t key: \"showImageAtCurrentTime\",\n\t value: function showImageAtCurrentTime() {\n\t var _this6 = this;\n\n\t if (this.mouseDown) {\n\t this.setScrubbingContainerSize();\n\t } else {\n\t this.setThumbContainerSizeAndPos();\n\t } // Find the desired thumbnail index\n\t // TODO: Handle a video longer than the thumbs where thumbNum is null\n\n\n\t var thumbNum = this.thumbnails[0].frames.findIndex(function (frame) {\n\t return _this6.seekTime >= frame.startTime && _this6.seekTime <= frame.endTime;\n\t });\n\t var hasThumb = thumbNum >= 0;\n\t var qualityIndex = 0; // Show the thumb container if we're not scrubbing\n\n\t if (!this.mouseDown) {\n\t this.toggleThumbContainer(hasThumb);\n\t } // No matching thumb found\n\n\n\t if (!hasThumb) {\n\t return;\n\t } // Check to see if we've already downloaded higher quality versions of this image\n\n\n\t this.thumbnails.forEach(function (thumbnail, index) {\n\t if (_this6.loadedImages.includes(thumbnail.frames[thumbNum].text)) {\n\t qualityIndex = index;\n\t }\n\t }); // Only proceed if either thumbnum or thumbfilename has changed\n\n\t if (thumbNum !== this.showingThumb) {\n\t this.showingThumb = thumbNum;\n\t this.loadImage(qualityIndex);\n\t }\n\t } // Show the image that's currently specified in this.showingThumb\n\n\t }, {\n\t key: \"loadImage\",\n\t value: function loadImage() {\n\t var _this7 = this;\n\n\t var qualityIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var thumbNum = this.showingThumb;\n\t var thumbnail = this.thumbnails[qualityIndex];\n\t var urlPrefix = thumbnail.urlPrefix;\n\t var frame = thumbnail.frames[thumbNum];\n\t var thumbFilename = thumbnail.frames[thumbNum].text;\n\t var thumbUrl = urlPrefix + thumbFilename;\n\n\t if (!this.currentImageElement || this.currentImageElement.dataset.filename !== thumbFilename) {\n\t // If we're already loading a previous image, remove its onload handler - we don't want it to load after this one\n\t // Only do this if not using sprites. Without sprites we really want to show as many images as possible, as a best-effort\n\t if (this.loadingImage && this.usingSprites) {\n\t this.loadingImage.onload = null;\n\t } // We're building and adding a new image. In other implementations of similar functionality (YouTube), background image\n\t // is instead used. But this causes issues with larger images in Firefox and Safari - switching between background\n\t // images causes a flicker. Putting a new image over the top does not\n\n\n\t var previewImage = new Image();\n\t previewImage.src = thumbUrl;\n\t previewImage.dataset.index = thumbNum;\n\t previewImage.dataset.filename = thumbFilename;\n\t this.showingThumbFilename = thumbFilename;\n\t this.player.debug.log(\"Loading image: \".concat(thumbUrl)); // For some reason, passing the named function directly causes it to execute immediately. So I've wrapped it in an anonymous function...\n\n\t previewImage.onload = function () {\n\t return _this7.showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, true);\n\t };\n\n\t this.loadingImage = previewImage;\n\t this.removeOldImages(previewImage);\n\t } else {\n\t // Update the existing image\n\t this.showImage(this.currentImageElement, frame, qualityIndex, thumbNum, thumbFilename, false);\n\t this.currentImageElement.dataset.index = thumbNum;\n\t this.removeOldImages(this.currentImageElement);\n\t }\n\t }\n\t }, {\n\t key: \"showImage\",\n\t value: function showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename) {\n\t var newImage = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\t this.player.debug.log(\"Showing thumb: \".concat(thumbFilename, \". num: \").concat(thumbNum, \". qual: \").concat(qualityIndex, \". newimg: \").concat(newImage));\n\t this.setImageSizeAndOffset(previewImage, frame);\n\n\t if (newImage) {\n\t this.currentImageContainer.appendChild(previewImage);\n\t this.currentImageElement = previewImage;\n\n\t if (!this.loadedImages.includes(thumbFilename)) {\n\t this.loadedImages.push(thumbFilename);\n\t }\n\t } // Preload images before and after the current one\n\t // Show higher quality of the same frame\n\t // Each step here has a short time delay, and only continues if still hovering/seeking the same spot. This is to protect slow connections from overloading\n\n\n\t this.preloadNearby(thumbNum, true).then(this.preloadNearby(thumbNum, false)).then(this.getHigherQuality(qualityIndex, previewImage, frame, thumbFilename));\n\t } // Remove all preview images that aren't the designated current image\n\n\t }, {\n\t key: \"removeOldImages\",\n\t value: function removeOldImages(currentImage) {\n\t var _this8 = this;\n\n\t // Get a list of all images, convert it from a DOM list to an array\n\t Array.from(this.currentImageContainer.children).forEach(function (image) {\n\t if (image.tagName.toLowerCase() !== 'img') {\n\t return;\n\t }\n\n\t var removeDelay = _this8.usingSprites ? 500 : 1000;\n\n\t if (image.dataset.index !== currentImage.dataset.index && !image.dataset.deleting) {\n\t // Wait 200ms, as the new image can take some time to show on certain browsers (even though it was downloaded before showing). This will prevent flicker, and show some generosity towards slower clients\n\t // First set attribute 'deleting' to prevent multi-handling of this on repeat firing of this function\n\t // eslint-disable-next-line no-param-reassign\n\t image.dataset.deleting = true; // This has to be set before the timeout - to prevent issues switching between hover and scrub\n\n\t var currentImageContainer = _this8.currentImageContainer;\n\t setTimeout(function () {\n\t currentImageContainer.removeChild(image);\n\n\t _this8.player.debug.log(\"Removing thumb: \".concat(image.dataset.filename));\n\t }, removeDelay);\n\t }\n\t });\n\t } // Preload images before and after the current one. Only if the user is still hovering/seeking the same frame\n\t // This will only preload the lowest quality\n\n\t }, {\n\t key: \"preloadNearby\",\n\t value: function preloadNearby(thumbNum) {\n\t var _this9 = this;\n\n\t var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t return new Promise(function (resolve) {\n\t setTimeout(function () {\n\t var oldThumbFilename = _this9.thumbnails[0].frames[thumbNum].text;\n\n\t if (_this9.showingThumbFilename === oldThumbFilename) {\n\t // Find the nearest thumbs with different filenames. Sometimes it'll be the next index, but in the case of sprites, it might be 100+ away\n\t var thumbnailsClone;\n\n\t if (forward) {\n\t thumbnailsClone = _this9.thumbnails[0].frames.slice(thumbNum);\n\t } else {\n\t thumbnailsClone = _this9.thumbnails[0].frames.slice(0, thumbNum).reverse();\n\t }\n\n\t var foundOne = false;\n\t thumbnailsClone.forEach(function (frame) {\n\t var newThumbFilename = frame.text;\n\n\t if (newThumbFilename !== oldThumbFilename) {\n\t // Found one with a different filename. Make sure it hasn't already been loaded on this page visit\n\t if (!_this9.loadedImages.includes(newThumbFilename)) {\n\t foundOne = true;\n\n\t _this9.player.debug.log(\"Preloading thumb filename: \".concat(newThumbFilename));\n\n\t var urlPrefix = _this9.thumbnails[0].urlPrefix;\n\t var thumbURL = urlPrefix + newThumbFilename;\n\t var previewImage = new Image();\n\t previewImage.src = thumbURL;\n\n\t previewImage.onload = function () {\n\t _this9.player.debug.log(\"Preloaded thumb filename: \".concat(newThumbFilename));\n\n\t if (!_this9.loadedImages.includes(newThumbFilename)) _this9.loadedImages.push(newThumbFilename); // We don't resolve until the thumb is loaded\n\n\t resolve();\n\t };\n\t }\n\t }\n\t }); // If there are none to preload then we want to resolve immediately\n\n\t if (!foundOne) {\n\t resolve();\n\t }\n\t }\n\t }, 300);\n\t });\n\t } // If user has been hovering current image for half a second, look for a higher quality one\n\n\t }, {\n\t key: \"getHigherQuality\",\n\t value: function getHigherQuality(currentQualityIndex, previewImage, frame, thumbFilename) {\n\t var _this10 = this;\n\n\t if (currentQualityIndex < this.thumbnails.length - 1) {\n\t // Only use the higher quality version if it's going to look any better - if the current thumb is of a lower pixel density than the thumbnail container\n\t var previewImageHeight = previewImage.naturalHeight;\n\n\t if (this.usingSprites) {\n\t previewImageHeight = frame.h;\n\t }\n\n\t if (previewImageHeight < this.thumbContainerHeight) {\n\t // Recurse back to the loadImage function - show a higher quality one, but only if the viewer is on this frame for a while\n\t setTimeout(function () {\n\t // Make sure the mouse hasn't already moved on and started hovering at another image\n\t if (_this10.showingThumbFilename === thumbFilename) {\n\t _this10.player.debug.log(\"Showing higher quality thumb for: \".concat(thumbFilename));\n\n\t _this10.loadImage(currentQualityIndex + 1);\n\t }\n\t }, 300);\n\t }\n\t }\n\t }\n\t }, {\n\t key: \"toggleThumbContainer\",\n\t value: function toggleThumbContainer() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t var clearShowing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var className = this.player.config.classNames.previewThumbnails.thumbContainerShown;\n\t this.elements.thumb.container.classList.toggle(className, toggle);\n\n\t if (!toggle && clearShowing) {\n\t this.showingThumb = null;\n\t this.showingThumbFilename = null;\n\t }\n\t }\n\t }, {\n\t key: \"toggleScrubbingContainer\",\n\t value: function toggleScrubbingContainer() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t var className = this.player.config.classNames.previewThumbnails.scrubbingContainerShown;\n\t this.elements.scrubbing.container.classList.toggle(className, toggle);\n\n\t if (!toggle) {\n\t this.showingThumb = null;\n\t this.showingThumbFilename = null;\n\t }\n\t }\n\t }, {\n\t key: \"determineContainerAutoSizing\",\n\t value: function determineContainerAutoSizing() {\n\t if (this.elements.thumb.imageContainer.clientHeight > 20 || this.elements.thumb.imageContainer.clientWidth > 20) {\n\t // This will prevent auto sizing in this.setThumbContainerSizeAndPos()\n\t this.sizeSpecifiedInCSS = true;\n\t }\n\t } // Set the size to be about a quarter of the size of video. Unless option dynamicSize === false, in which case it needs to be set in CSS\n\n\t }, {\n\t key: \"setThumbContainerSizeAndPos\",\n\t value: function setThumbContainerSizeAndPos() {\n\t if (!this.sizeSpecifiedInCSS) {\n\t var thumbWidth = Math.floor(this.thumbContainerHeight * this.thumbAspectRatio);\n\t this.elements.thumb.imageContainer.style.height = \"\".concat(this.thumbContainerHeight, \"px\");\n\t this.elements.thumb.imageContainer.style.width = \"\".concat(thumbWidth, \"px\");\n\t } else if (this.elements.thumb.imageContainer.clientHeight > 20 && this.elements.thumb.imageContainer.clientWidth < 20) {\n\t var _thumbWidth = Math.floor(this.elements.thumb.imageContainer.clientHeight * this.thumbAspectRatio);\n\n\t this.elements.thumb.imageContainer.style.width = \"\".concat(_thumbWidth, \"px\");\n\t } else if (this.elements.thumb.imageContainer.clientHeight < 20 && this.elements.thumb.imageContainer.clientWidth > 20) {\n\t var thumbHeight = Math.floor(this.elements.thumb.imageContainer.clientWidth / this.thumbAspectRatio);\n\t this.elements.thumb.imageContainer.style.height = \"\".concat(thumbHeight, \"px\");\n\t }\n\n\t this.setThumbContainerPos();\n\t }\n\t }, {\n\t key: \"setThumbContainerPos\",\n\t value: function setThumbContainerPos() {\n\t var seekbarRect = this.player.elements.progress.getBoundingClientRect();\n\t var plyrRect = this.player.elements.container.getBoundingClientRect();\n\t var container = this.elements.thumb.container; // Find the lowest and highest desired left-position, so we don't slide out the side of the video container\n\n\t var minVal = plyrRect.left - seekbarRect.left + 10;\n\t var maxVal = plyrRect.right - seekbarRect.left - container.clientWidth - 10; // Set preview container position to: mousepos, minus seekbar.left, minus half of previewContainer.clientWidth\n\n\t var previewPos = this.mousePosX - seekbarRect.left - container.clientWidth / 2;\n\n\t if (previewPos < minVal) {\n\t previewPos = minVal;\n\t }\n\n\t if (previewPos > maxVal) {\n\t previewPos = maxVal;\n\t }\n\n\t container.style.left = \"\".concat(previewPos, \"px\");\n\t } // Can't use 100% width, in case the video is a different aspect ratio to the video container\n\n\t }, {\n\t key: \"setScrubbingContainerSize\",\n\t value: function setScrubbingContainerSize() {\n\t var _fitRatio = fitRatio(this.thumbAspectRatio, {\n\t width: this.player.media.clientWidth,\n\t height: this.player.media.clientHeight\n\t }),\n\t width = _fitRatio.width,\n\t height = _fitRatio.height;\n\n\t this.elements.scrubbing.container.style.width = \"\".concat(width, \"px\");\n\t this.elements.scrubbing.container.style.height = \"\".concat(height, \"px\");\n\t } // Sprites need to be offset to the correct location\n\n\t }, {\n\t key: \"setImageSizeAndOffset\",\n\t value: function setImageSizeAndOffset(previewImage, frame) {\n\t if (!this.usingSprites) {\n\t return;\n\t } // Find difference between height and preview container height\n\n\n\t var multiplier = this.thumbContainerHeight / frame.h; // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.height = \"\".concat(previewImage.naturalHeight * multiplier, \"px\"); // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.width = \"\".concat(previewImage.naturalWidth * multiplier, \"px\"); // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.left = \"-\".concat(frame.x * multiplier, \"px\"); // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.top = \"-\".concat(frame.y * multiplier, \"px\");\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t return this.player.isHTML5 && this.player.isVideo && this.player.config.previewThumbnails.enabled;\n\t }\n\t }, {\n\t key: \"currentImageContainer\",\n\t get: function get() {\n\t if (this.mouseDown) {\n\t return this.elements.scrubbing.container;\n\t }\n\n\t return this.elements.thumb.imageContainer;\n\t }\n\t }, {\n\t key: \"usingSprites\",\n\t get: function get() {\n\t return Object.keys(this.thumbnails[0].frames[0]).includes('w');\n\t }\n\t }, {\n\t key: \"thumbAspectRatio\",\n\t get: function get() {\n\t if (this.usingSprites) {\n\t return this.thumbnails[0].frames[0].w / this.thumbnails[0].frames[0].h;\n\t }\n\n\t return this.thumbnails[0].width / this.thumbnails[0].height;\n\t }\n\t }, {\n\t key: \"thumbContainerHeight\",\n\t get: function get() {\n\t if (this.mouseDown) {\n\t var _fitRatio2 = fitRatio(this.thumbAspectRatio, {\n\t width: this.player.media.clientWidth,\n\t height: this.player.media.clientHeight\n\t }),\n\t height = _fitRatio2.height;\n\n\t return height;\n\t } // If css is used this needs to return the css height for sprites to work (see setImageSizeAndOffset)\n\n\n\t if (this.sizeSpecifiedInCSS) {\n\t return this.elements.thumb.imageContainer.clientHeight;\n\t }\n\n\t return Math.floor(this.player.media.clientWidth / this.thumbAspectRatio / 4);\n\t }\n\t }, {\n\t key: \"currentImageElement\",\n\t get: function get() {\n\t if (this.mouseDown) {\n\t return this.currentScrubbingImageElement;\n\t }\n\n\t return this.currentThumbnailImageElement;\n\t },\n\t set: function set(element) {\n\t if (this.mouseDown) {\n\t this.currentScrubbingImageElement = element;\n\t } else {\n\t this.currentThumbnailImageElement = element;\n\t }\n\t }\n\t }]);\n\n\t return PreviewThumbnails;\n\t}();\n\n\tvar source = {\n\t // Add elements to HTML5 media (source, tracks, etc)\n\t insertElements: function insertElements(type, attributes) {\n\t var _this = this;\n\n\t if (is$2.string(attributes)) {\n\t insertElement(type, this.media, {\n\t src: attributes\n\t });\n\t } else if (is$2.array(attributes)) {\n\t attributes.forEach(function (attribute) {\n\t insertElement(type, _this.media, attribute);\n\t });\n\t }\n\t },\n\t // Update source\n\t // Sources are not checked for support so be careful\n\t change: function change(input) {\n\t var _this2 = this;\n\n\t if (!getDeep(input, 'sources.length')) {\n\t this.debug.warn('Invalid source format');\n\t return;\n\t } // Cancel current network requests\n\n\n\t html5.cancelRequests.call(this); // Destroy instance and re-setup\n\n\t this.destroy.call(this, function () {\n\t // Reset quality options\n\t _this2.options.quality = []; // Remove elements\n\n\t removeElement(_this2.media);\n\t _this2.media = null; // Reset class name\n\n\t if (is$2.element(_this2.elements.container)) {\n\t _this2.elements.container.removeAttribute('class');\n\t } // Set the type and provider\n\n\n\t var sources = input.sources,\n\t type = input.type;\n\n\t var _sources = _slicedToArray(sources, 1),\n\t _sources$ = _sources[0],\n\t _sources$$provider = _sources$.provider,\n\t provider = _sources$$provider === void 0 ? providers.html5 : _sources$$provider,\n\t src = _sources$.src;\n\n\t var tagName = provider === 'html5' ? type : 'div';\n\t var attributes = provider === 'html5' ? {} : {\n\t src: src\n\t };\n\t Object.assign(_this2, {\n\t provider: provider,\n\t type: type,\n\t // Check for support\n\t supported: support.check(type, provider, _this2.config.playsinline),\n\t // Create new element\n\t media: createElement$1(tagName, attributes)\n\t }); // Inject the new element\n\n\t _this2.elements.container.appendChild(_this2.media); // Autoplay the new source?\n\n\n\t if (is$2.boolean(input.autoplay)) {\n\t _this2.config.autoplay = input.autoplay;\n\t } // Set attributes for audio and video\n\n\n\t if (_this2.isHTML5) {\n\t if (_this2.config.crossorigin) {\n\t _this2.media.setAttribute('crossorigin', '');\n\t }\n\n\t if (_this2.config.autoplay) {\n\t _this2.media.setAttribute('autoplay', '');\n\t }\n\n\t if (!is$2.empty(input.poster)) {\n\t _this2.poster = input.poster;\n\t }\n\n\t if (_this2.config.loop.active) {\n\t _this2.media.setAttribute('loop', '');\n\t }\n\n\t if (_this2.config.muted) {\n\t _this2.media.setAttribute('muted', '');\n\t }\n\n\t if (_this2.config.playsinline) {\n\t _this2.media.setAttribute('playsinline', '');\n\t }\n\t } // Restore class hook\n\n\n\t ui.addStyleHook.call(_this2); // Set new sources for html5\n\n\t if (_this2.isHTML5) {\n\t source.insertElements.call(_this2, 'source', sources);\n\t } // Set video title\n\n\n\t _this2.config.title = input.title; // Set up from scratch\n\n\t media.setup.call(_this2); // HTML5 stuff\n\n\t if (_this2.isHTML5) {\n\t // Setup captions\n\t if (Object.keys(input).includes('tracks')) {\n\t source.insertElements.call(_this2, 'track', input.tracks);\n\t }\n\t } // If HTML5 or embed but not fully supported, setupInterface and call ready now\n\n\n\t if (_this2.isHTML5 || _this2.isEmbed && !_this2.supported.ui) {\n\t // Setup interface\n\t ui.build.call(_this2);\n\t } // Load HTML5 sources\n\n\n\t if (_this2.isHTML5) {\n\t _this2.media.load();\n\t } // Update previewThumbnails config & reload plugin\n\n\n\t if (!is$2.empty(input.previewThumbnails)) {\n\t Object.assign(_this2.config.previewThumbnails, input.previewThumbnails); // Cleanup previewThumbnails plugin if it was loaded\n\n\t if (_this2.previewThumbnails && _this2.previewThumbnails.loaded) {\n\t _this2.previewThumbnails.destroy();\n\n\t _this2.previewThumbnails = null;\n\t } // Create new instance if it is still enabled\n\n\n\t if (_this2.config.previewThumbnails.enabled) {\n\t _this2.previewThumbnails = new PreviewThumbnails(_this2);\n\t }\n\t } // Update the fullscreen support\n\n\n\t _this2.fullscreen.update();\n\t }, true);\n\t }\n\t};\n\n\t/**\n\t * Returns a number whose value is limited to the given range.\n\t *\n\t * Example: limit the output of this computation to between 0 and 255\n\t * (x * 255).clamp(0, 255)\n\t *\n\t * @param {Number} input\n\t * @param {Number} min The lower boundary of the output range\n\t * @param {Number} max The upper boundary of the output range\n\t * @returns A number in the range [min, max]\n\t * @type Number\n\t */\n\tfunction clamp() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 255;\n\t return Math.min(Math.max(input, min), max);\n\t}\n\n\t// TODO: Use a WeakMap for private globals\n\t// const globals = new WeakMap();\n\t// Plyr instance\n\n\tvar Plyr = /*#__PURE__*/function () {\n\t function Plyr(target, options) {\n\t var _this = this;\n\n\t _classCallCheck(this, Plyr);\n\n\t this.timers = {}; // State\n\n\t this.ready = false;\n\t this.loading = false;\n\t this.failed = false; // Touch device\n\n\t this.touch = support.touch; // Set the media element\n\n\t this.media = target; // String selector passed\n\n\t if (is$2.string(this.media)) {\n\t this.media = document.querySelectorAll(this.media);\n\t } // jQuery, NodeList or Array passed, use first element\n\n\n\t if (window.jQuery && this.media instanceof jQuery || is$2.nodeList(this.media) || is$2.array(this.media)) {\n\t // eslint-disable-next-line\n\t this.media = this.media[0];\n\t } // Set config\n\n\n\t this.config = extend$1({}, defaults$2, Plyr.defaults, options || {}, function () {\n\t try {\n\t return JSON.parse(_this.media.getAttribute('data-plyr-config'));\n\t } catch (e) {\n\t return {};\n\t }\n\t }()); // Elements cache\n\n\t this.elements = {\n\t container: null,\n\t captions: null,\n\t buttons: {},\n\t display: {},\n\t progress: {},\n\t inputs: {},\n\t settings: {\n\t popup: null,\n\t menu: null,\n\t panels: {},\n\t buttons: {}\n\t }\n\t }; // Captions\n\n\t this.captions = {\n\t active: null,\n\t currentTrack: -1,\n\t meta: new WeakMap()\n\t }; // Fullscreen\n\n\t this.fullscreen = {\n\t active: false\n\t }; // Options\n\n\t this.options = {\n\t speed: [],\n\t quality: []\n\t }; // Debugging\n\t // TODO: move to globals\n\n\t this.debug = new Console$1(this.config.debug); // Log config options and support\n\n\t this.debug.log('Config', this.config);\n\t this.debug.log('Support', support); // We need an element to setup\n\n\t if (is$2.nullOrUndefined(this.media) || !is$2.element(this.media)) {\n\t this.debug.error('Setup failed: no suitable element passed');\n\t return;\n\t } // Bail if the element is initialized\n\n\n\t if (this.media.plyr) {\n\t this.debug.warn('Target already setup');\n\t return;\n\t } // Bail if not enabled\n\n\n\t if (!this.config.enabled) {\n\t this.debug.error('Setup failed: disabled by config');\n\t return;\n\t } // Bail if disabled or no basic support\n\t // You may want to disable certain UAs etc\n\n\n\t if (!support.check().api) {\n\t this.debug.error('Setup failed: no support');\n\t return;\n\t } // Cache original element state for .destroy()\n\n\n\t var clone = this.media.cloneNode(true);\n\t clone.autoplay = false;\n\t this.elements.original = clone; // Set media type based on tag or data attribute\n\t // Supported: video, audio, vimeo, youtube\n\n\t var type = this.media.tagName.toLowerCase(); // Embed properties\n\n\t var iframe = null;\n\t var url = null; // Different setup based on type\n\n\t switch (type) {\n\t case 'div':\n\t // Find the frame\n\t iframe = this.media.querySelector('iframe'); // <iframe> type\n\n\t if (is$2.element(iframe)) {\n\t // Detect provider\n\t url = parseUrl$2(iframe.getAttribute('src'));\n\t this.provider = getProviderByUrl(url.toString()); // Rework elements\n\n\t this.elements.container = this.media;\n\t this.media = iframe; // Reset classname\n\n\t this.elements.container.className = ''; // Get attributes from URL and set config\n\n\t if (url.search.length) {\n\t var truthy = ['1', 'true'];\n\n\t if (truthy.includes(url.searchParams.get('autoplay'))) {\n\t this.config.autoplay = true;\n\t }\n\n\t if (truthy.includes(url.searchParams.get('loop'))) {\n\t this.config.loop.active = true;\n\t } // TODO: replace fullscreen.iosNative with this playsinline config option\n\t // YouTube requires the playsinline in the URL\n\n\n\t if (this.isYouTube) {\n\t this.config.playsinline = truthy.includes(url.searchParams.get('playsinline'));\n\t this.config.youtube.hl = url.searchParams.get('hl'); // TODO: Should this be setting language?\n\t } else {\n\t this.config.playsinline = true;\n\t }\n\t }\n\t } else {\n\t // <div> with attributes\n\t this.provider = this.media.getAttribute(this.config.attributes.embed.provider); // Remove attribute\n\n\t this.media.removeAttribute(this.config.attributes.embed.provider);\n\t } // Unsupported or missing provider\n\n\n\t if (is$2.empty(this.provider) || !Object.keys(providers).includes(this.provider)) {\n\t this.debug.error('Setup failed: Invalid provider');\n\t return;\n\t } // Audio will come later for external providers\n\n\n\t this.type = types.video;\n\t break;\n\n\t case 'video':\n\t case 'audio':\n\t this.type = type;\n\t this.provider = providers.html5; // Get config from attributes\n\n\t if (this.media.hasAttribute('crossorigin')) {\n\t this.config.crossorigin = true;\n\t }\n\n\t if (this.media.hasAttribute('autoplay')) {\n\t this.config.autoplay = true;\n\t }\n\n\t if (this.media.hasAttribute('playsinline') || this.media.hasAttribute('webkit-playsinline')) {\n\t this.config.playsinline = true;\n\t }\n\n\t if (this.media.hasAttribute('muted')) {\n\t this.config.muted = true;\n\t }\n\n\t if (this.media.hasAttribute('loop')) {\n\t this.config.loop.active = true;\n\t }\n\n\t break;\n\n\t default:\n\t this.debug.error('Setup failed: unsupported type');\n\t return;\n\t } // Check for support again but with type\n\n\n\t this.supported = support.check(this.type, this.provider, this.config.playsinline); // If no support for even API, bail\n\n\t if (!this.supported.api) {\n\t this.debug.error('Setup failed: no support');\n\t return;\n\t }\n\n\t this.eventListeners = []; // Create listeners\n\n\t this.listeners = new Listeners(this); // Setup local storage for user settings\n\n\t this.storage = new Storage$1(this); // Store reference\n\n\t this.media.plyr = this; // Wrap media\n\n\t if (!is$2.element(this.elements.container)) {\n\t this.elements.container = createElement$1('div', {\n\t tabindex: 0\n\t });\n\t wrap$3(this.media, this.elements.container);\n\t } // Add style hook\n\n\n\t ui.addStyleHook.call(this); // Setup media\n\n\t media.setup.call(this); // Listen for events if debugging\n\n\t if (this.config.debug) {\n\t on.call(this, this.elements.container, this.config.events.join(' '), function (event) {\n\t _this.debug.log(\"event: \".concat(event.type));\n\t });\n\t } // Setup interface\n\t // If embed but not fully supported, build interface now to avoid flash of controls\n\n\n\t if (this.isHTML5 || this.isEmbed && !this.supported.ui) {\n\t ui.build.call(this);\n\t } // Container listeners\n\n\n\t this.listeners.container(); // Global listeners\n\n\t this.listeners.global(); // Setup fullscreen\n\n\t this.fullscreen = new Fullscreen(this); // Setup ads if provided\n\n\t if (this.config.ads.enabled) {\n\t this.ads = new Ads(this);\n\t } // Autoplay if required\n\n\n\t if (this.isHTML5 && this.config.autoplay) {\n\t setTimeout(function () {\n\t return _this.play();\n\t }, 10);\n\t } // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek\n\n\n\t this.lastSeekTime = 0; // Setup preview thumbnails if enabled\n\n\t if (this.config.previewThumbnails.enabled) {\n\t this.previewThumbnails = new PreviewThumbnails(this);\n\t }\n\t } // ---------------------------------------\n\t // API\n\t // ---------------------------------------\n\n\t /**\n\t * Types and provider helpers\n\t */\n\n\n\t _createClass(Plyr, [{\n\t key: \"play\",\n\n\t /**\n\t * Play the media, or play the advertisement (if they are not blocked)\n\t */\n\t value: function play() {\n\t var _this2 = this;\n\n\t if (!is$2.function(this.media.play)) {\n\t return null;\n\t } // Intecept play with ads\n\n\n\t if (this.ads && this.ads.enabled) {\n\t this.ads.managerPromise.then(function () {\n\t return _this2.ads.play();\n\t }).catch(function () {\n\t return _this2.media.play();\n\t });\n\t } // Return the promise (for HTML5)\n\n\n\t return this.media.play();\n\t }\n\t /**\n\t * Pause the media\n\t */\n\n\t }, {\n\t key: \"pause\",\n\t value: function pause() {\n\t if (!this.playing || !is$2.function(this.media.pause)) {\n\t return null;\n\t }\n\n\t return this.media.pause();\n\t }\n\t /**\n\t * Get playing state\n\t */\n\n\t }, {\n\t key: \"togglePlay\",\n\n\t /**\n\t * Toggle playback based on current status\n\t * @param {Boolean} input\n\t */\n\t value: function togglePlay(input) {\n\t // Toggle based on current state if nothing passed\n\t var toggle = is$2.boolean(input) ? input : !this.playing;\n\n\t if (toggle) {\n\t return this.play();\n\t }\n\n\t return this.pause();\n\t }\n\t /**\n\t * Stop playback\n\t */\n\n\t }, {\n\t key: \"stop\",\n\t value: function stop() {\n\t if (this.isHTML5) {\n\t this.pause();\n\t this.restart();\n\t } else if (is$2.function(this.media.stop)) {\n\t this.media.stop();\n\t }\n\t }\n\t /**\n\t * Restart playback\n\t */\n\n\t }, {\n\t key: \"restart\",\n\t value: function restart() {\n\t this.currentTime = 0;\n\t }\n\t /**\n\t * Rewind\n\t * @param {Number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n\t */\n\n\t }, {\n\t key: \"rewind\",\n\t value: function rewind(seekTime) {\n\t this.currentTime -= is$2.number(seekTime) ? seekTime : this.config.seekTime;\n\t }\n\t /**\n\t * Fast forward\n\t * @param {Number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n\t */\n\n\t }, {\n\t key: \"forward\",\n\t value: function forward(seekTime) {\n\t this.currentTime += is$2.number(seekTime) ? seekTime : this.config.seekTime;\n\t }\n\t /**\n\t * Seek to a time\n\t * @param {Number} input - where to seek to in seconds. Defaults to 0 (the start)\n\t */\n\n\t }, {\n\t key: \"increaseVolume\",\n\n\t /**\n\t * Increase volume\n\t * @param {Boolean} step - How much to decrease by (between 0 and 1)\n\t */\n\t value: function increaseVolume(step) {\n\t var volume = this.media.muted ? 0 : this.volume;\n\t this.volume = volume + (is$2.number(step) ? step : 0);\n\t }\n\t /**\n\t * Decrease volume\n\t * @param {Boolean} step - How much to decrease by (between 0 and 1)\n\t */\n\n\t }, {\n\t key: \"decreaseVolume\",\n\t value: function decreaseVolume(step) {\n\t this.increaseVolume(-step);\n\t }\n\t /**\n\t * Set muted state\n\t * @param {Boolean} mute\n\t */\n\n\t }, {\n\t key: \"toggleCaptions\",\n\n\t /**\n\t * Toggle captions\n\t * @param {Boolean} input - Whether to enable captions\n\t */\n\t value: function toggleCaptions(input) {\n\t captions.toggle.call(this, input, false);\n\t }\n\t /**\n\t * Set the caption track by index\n\t * @param {Number} - Caption index\n\t */\n\n\t }, {\n\t key: \"airplay\",\n\n\t /**\n\t * Trigger the airplay dialog\n\t * TODO: update player with state, support, enabled\n\t */\n\t value: function airplay() {\n\t // Show dialog if supported\n\t if (support.airplay) {\n\t this.media.webkitShowPlaybackTargetPicker();\n\t }\n\t }\n\t /**\n\t * Toggle the player controls\n\t * @param {Boolean} [toggle] - Whether to show the controls\n\t */\n\n\t }, {\n\t key: \"toggleControls\",\n\t value: function toggleControls(toggle) {\n\t // Don't toggle if missing UI support or if it's audio\n\t if (this.supported.ui && !this.isAudio) {\n\t // Get state before change\n\t var isHidden = hasClass(this.elements.container, this.config.classNames.hideControls); // Negate the argument if not undefined since adding the class to hides the controls\n\n\t var force = typeof toggle === 'undefined' ? undefined : !toggle; // Apply and get updated state\n\n\t var hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force); // Close menu\n\n\t if (hiding && this.config.controls.includes('settings') && !is$2.empty(this.config.settings)) {\n\t controls.toggleMenu.call(this, false);\n\t } // Trigger event on change\n\n\n\t if (hiding !== isHidden) {\n\t var eventName = hiding ? 'controlshidden' : 'controlsshown';\n\t triggerEvent.call(this, this.media, eventName);\n\t }\n\n\t return !hiding;\n\t }\n\n\t return false;\n\t }\n\t /**\n\t * Add event listeners\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t */\n\n\t }, {\n\t key: \"on\",\n\t value: function on$1(event, callback) {\n\t on.call(this, this.elements.container, event, callback);\n\t }\n\t /**\n\t * Add event listeners once\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t */\n\n\t }, {\n\t key: \"once\",\n\t value: function once$1(event, callback) {\n\t once.call(this, this.elements.container, event, callback);\n\t }\n\t /**\n\t * Remove event listeners\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t */\n\n\t }, {\n\t key: \"off\",\n\t value: function off$1(event, callback) {\n\t off(this.elements.container, event, callback);\n\t }\n\t /**\n\t * Destroy an instance\n\t * Event listeners are removed when elements are removed\n\t * http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n\t * @param {Function} callback - Callback for when destroy is complete\n\t * @param {Boolean} soft - Whether it's a soft destroy (for source changes etc)\n\t */\n\n\t }, {\n\t key: \"destroy\",\n\t value: function destroy(callback) {\n\t var _this3 = this;\n\n\t var soft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!this.ready) {\n\t return;\n\t }\n\n\t var done = function done() {\n\t // Reset overflow (incase destroyed while in fullscreen)\n\t document.body.style.overflow = ''; // GC for embed\n\n\t _this3.embed = null; // If it's a soft destroy, make minimal changes\n\n\t if (soft) {\n\t if (Object.keys(_this3.elements).length) {\n\t // Remove elements\n\t removeElement(_this3.elements.buttons.play);\n\t removeElement(_this3.elements.captions);\n\t removeElement(_this3.elements.controls);\n\t removeElement(_this3.elements.wrapper); // Clear for GC\n\n\t _this3.elements.buttons.play = null;\n\t _this3.elements.captions = null;\n\t _this3.elements.controls = null;\n\t _this3.elements.wrapper = null;\n\t } // Callback\n\n\n\t if (is$2.function(callback)) {\n\t callback();\n\t }\n\t } else {\n\t // Unbind listeners\n\t unbindListeners.call(_this3); // Replace the container with the original element provided\n\n\t replaceElement(_this3.elements.original, _this3.elements.container); // Event\n\n\t triggerEvent.call(_this3, _this3.elements.original, 'destroyed', true); // Callback\n\n\t if (is$2.function(callback)) {\n\t callback.call(_this3.elements.original);\n\t } // Reset state\n\n\n\t _this3.ready = false; // Clear for garbage collection\n\n\t setTimeout(function () {\n\t _this3.elements = null;\n\t _this3.media = null;\n\t }, 200);\n\t }\n\t }; // Stop playback\n\n\n\t this.stop(); // Clear timeouts\n\n\t clearTimeout(this.timers.loading);\n\t clearTimeout(this.timers.controls);\n\t clearTimeout(this.timers.resized); // Provider specific stuff\n\n\t if (this.isHTML5) {\n\t // Restore native video controls\n\t ui.toggleNativeControls.call(this, true); // Clean up\n\n\t done();\n\t } else if (this.isYouTube) {\n\t // Clear timers\n\t clearInterval(this.timers.buffering);\n\t clearInterval(this.timers.playing); // Destroy YouTube API\n\n\t if (this.embed !== null && is$2.function(this.embed.destroy)) {\n\t this.embed.destroy();\n\t } // Clean up\n\n\n\t done();\n\t } else if (this.isVimeo) {\n\t // Destroy Vimeo API\n\t // then clean up (wait, to prevent postmessage errors)\n\t if (this.embed !== null) {\n\t this.embed.unload().then(done);\n\t } // Vimeo does not always return\n\n\n\t setTimeout(done, 200);\n\t }\n\t }\n\t /**\n\t * Check for support for a mime type (HTML5 only)\n\t * @param {String} type - Mime type\n\t */\n\n\t }, {\n\t key: \"supports\",\n\t value: function supports(type) {\n\t return support.mime.call(this, type);\n\t }\n\t /**\n\t * Check for support\n\t * @param {String} type - Player type (audio/video)\n\t * @param {String} provider - Provider (html5/youtube/vimeo)\n\t * @param {Boolean} inline - Where player has `playsinline` sttribute\n\t */\n\n\t }, {\n\t key: \"isHTML5\",\n\t get: function get() {\n\t return this.provider === providers.html5;\n\t }\n\t }, {\n\t key: \"isEmbed\",\n\t get: function get() {\n\t return this.isYouTube || this.isVimeo;\n\t }\n\t }, {\n\t key: \"isYouTube\",\n\t get: function get() {\n\t return this.provider === providers.youtube;\n\t }\n\t }, {\n\t key: \"isVimeo\",\n\t get: function get() {\n\t return this.provider === providers.vimeo;\n\t }\n\t }, {\n\t key: \"isVideo\",\n\t get: function get() {\n\t return this.type === types.video;\n\t }\n\t }, {\n\t key: \"isAudio\",\n\t get: function get() {\n\t return this.type === types.audio;\n\t }\n\t }, {\n\t key: \"playing\",\n\t get: function get() {\n\t return Boolean(this.ready && !this.paused && !this.ended);\n\t }\n\t /**\n\t * Get paused state\n\t */\n\n\t }, {\n\t key: \"paused\",\n\t get: function get() {\n\t return Boolean(this.media.paused);\n\t }\n\t /**\n\t * Get stopped state\n\t */\n\n\t }, {\n\t key: \"stopped\",\n\t get: function get() {\n\t return Boolean(this.paused && this.currentTime === 0);\n\t }\n\t /**\n\t * Get ended state\n\t */\n\n\t }, {\n\t key: \"ended\",\n\t get: function get() {\n\t return Boolean(this.media.ended);\n\t }\n\t }, {\n\t key: \"currentTime\",\n\t set: function set(input) {\n\t // Bail if media duration isn't available yet\n\t if (!this.duration) {\n\t return;\n\t } // Validate input\n\n\n\t var inputIsValid = is$2.number(input) && input > 0; // Set\n\n\t this.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0; // Logging\n\n\t this.debug.log(\"Seeking to \".concat(this.currentTime, \" seconds\"));\n\t }\n\t /**\n\t * Get current time\n\t */\n\t ,\n\t get: function get() {\n\t return Number(this.media.currentTime);\n\t }\n\t /**\n\t * Get buffered\n\t */\n\n\t }, {\n\t key: \"buffered\",\n\t get: function get() {\n\t var buffered = this.media.buffered; // YouTube / Vimeo return a float between 0-1\n\n\t if (is$2.number(buffered)) {\n\t return buffered;\n\t } // HTML5\n\t // TODO: Handle buffered chunks of the media\n\t // (i.e. seek to another section buffers only that section)\n\n\n\t if (buffered && buffered.length && this.duration > 0) {\n\t return buffered.end(0) / this.duration;\n\t }\n\n\t return 0;\n\t }\n\t /**\n\t * Get seeking status\n\t */\n\n\t }, {\n\t key: \"seeking\",\n\t get: function get() {\n\t return Boolean(this.media.seeking);\n\t }\n\t /**\n\t * Get the duration of the current media\n\t */\n\n\t }, {\n\t key: \"duration\",\n\t get: function get() {\n\t // Faux duration set via config\n\t var fauxDuration = parseFloat(this.config.duration); // Media duration can be NaN or Infinity before the media has loaded\n\n\t var realDuration = (this.media || {}).duration;\n\t var duration = !is$2.number(realDuration) || realDuration === Infinity ? 0 : realDuration; // If config duration is funky, use regular duration\n\n\t return fauxDuration || duration;\n\t }\n\t /**\n\t * Set the player volume\n\t * @param {Number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n\t */\n\n\t }, {\n\t key: \"volume\",\n\t set: function set(value) {\n\t var volume = value;\n\t var max = 1;\n\t var min = 0;\n\n\t if (is$2.string(volume)) {\n\t volume = Number(volume);\n\t } // Load volume from storage if no value specified\n\n\n\t if (!is$2.number(volume)) {\n\t volume = this.storage.get('volume');\n\t } // Use config if all else fails\n\n\n\t if (!is$2.number(volume)) {\n\t volume = this.config.volume;\n\t } // Maximum is volumeMax\n\n\n\t if (volume > max) {\n\t volume = max;\n\t } // Minimum is volumeMin\n\n\n\t if (volume < min) {\n\t volume = min;\n\t } // Update config\n\n\n\t this.config.volume = volume; // Set the player volume\n\n\t this.media.volume = volume; // If muted, and we're increasing volume manually, reset muted state\n\n\t if (!is$2.empty(value) && this.muted && volume > 0) {\n\t this.muted = false;\n\t }\n\t }\n\t /**\n\t * Get the current player volume\n\t */\n\t ,\n\t get: function get() {\n\t return Number(this.media.volume);\n\t }\n\t }, {\n\t key: \"muted\",\n\t set: function set(mute) {\n\t var toggle = mute; // Load muted state from storage\n\n\t if (!is$2.boolean(toggle)) {\n\t toggle = this.storage.get('muted');\n\t } // Use config if all else fails\n\n\n\t if (!is$2.boolean(toggle)) {\n\t toggle = this.config.muted;\n\t } // Update config\n\n\n\t this.config.muted = toggle; // Set mute on the player\n\n\t this.media.muted = toggle;\n\t }\n\t /**\n\t * Get current muted state\n\t */\n\t ,\n\t get: function get() {\n\t return Boolean(this.media.muted);\n\t }\n\t /**\n\t * Check if the media has audio\n\t */\n\n\t }, {\n\t key: \"hasAudio\",\n\t get: function get() {\n\t // Assume yes for all non HTML5 (as we can't tell...)\n\t if (!this.isHTML5) {\n\t return true;\n\t }\n\n\t if (this.isAudio) {\n\t return true;\n\t } // Get audio tracks\n\n\n\t return Boolean(this.media.mozHasAudio) || Boolean(this.media.webkitAudioDecodedByteCount) || Boolean(this.media.audioTracks && this.media.audioTracks.length);\n\t }\n\t /**\n\t * Set playback speed\n\t * @param {Number} speed - the speed of playback (0.5-2.0)\n\t */\n\n\t }, {\n\t key: \"speed\",\n\t set: function set(input) {\n\t var _this4 = this;\n\n\t var speed = null;\n\n\t if (is$2.number(input)) {\n\t speed = input;\n\t }\n\n\t if (!is$2.number(speed)) {\n\t speed = this.storage.get('speed');\n\t }\n\n\t if (!is$2.number(speed)) {\n\t speed = this.config.speed.selected;\n\t } // Clamp to min/max\n\n\n\t var min = this.minimumSpeed,\n\t max = this.maximumSpeed;\n\t speed = clamp(speed, min, max); // Update config\n\n\t this.config.speed.selected = speed; // Set media speed\n\n\t setTimeout(function () {\n\t _this4.media.playbackRate = speed;\n\t }, 0);\n\t }\n\t /**\n\t * Get current playback speed\n\t */\n\t ,\n\t get: function get() {\n\t return Number(this.media.playbackRate);\n\t }\n\t /**\n\t * Get the minimum allowed speed\n\t */\n\n\t }, {\n\t key: \"minimumSpeed\",\n\t get: function get() {\n\t if (this.isYouTube) {\n\t // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n\t return Math.min.apply(Math, _toConsumableArray(this.options.speed));\n\t }\n\n\t if (this.isVimeo) {\n\t // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n\t return 0.5;\n\t } // https://stackoverflow.com/a/32320020/1191319\n\n\n\t return 0.0625;\n\t }\n\t /**\n\t * Get the maximum allowed speed\n\t */\n\n\t }, {\n\t key: \"maximumSpeed\",\n\t get: function get() {\n\t if (this.isYouTube) {\n\t // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n\t return Math.max.apply(Math, _toConsumableArray(this.options.speed));\n\t }\n\n\t if (this.isVimeo) {\n\t // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n\t return 2;\n\t } // https://stackoverflow.com/a/32320020/1191319\n\n\n\t return 16;\n\t }\n\t /**\n\t * Set playback quality\n\t * Currently HTML5 & YouTube only\n\t * @param {Number} input - Quality level\n\t */\n\n\t }, {\n\t key: \"quality\",\n\t set: function set(input) {\n\t var config = this.config.quality;\n\t var options = this.options.quality;\n\n\t if (!options.length) {\n\t return;\n\t }\n\n\t var quality = [!is$2.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is$2.number);\n\t var updateStorage = true;\n\n\t if (!options.includes(quality)) {\n\t var value = closest(options, quality);\n\t this.debug.warn(\"Unsupported quality option: \".concat(quality, \", using \").concat(value, \" instead\"));\n\t quality = value; // Don't update storage if quality is not supported\n\n\t updateStorage = false;\n\t } // Update config\n\n\n\t config.selected = quality; // Set quality\n\n\t this.media.quality = quality; // Save to storage\n\n\t if (updateStorage) {\n\t this.storage.set({\n\t quality: quality\n\t });\n\t }\n\t }\n\t /**\n\t * Get current quality level\n\t */\n\t ,\n\t get: function get() {\n\t return this.media.quality;\n\t }\n\t /**\n\t * Toggle loop\n\t * TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n\t * @param {Boolean} input - Whether to loop or not\n\t */\n\n\t }, {\n\t key: \"loop\",\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : this.config.loop.active;\n\t this.config.loop.active = toggle;\n\t this.media.loop = toggle; // Set default to be a true toggle\n\n\t /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle';\n\t switch (type) {\n\t case 'start':\n\t if (this.config.loop.end && this.config.loop.end <= this.currentTime) {\n\t this.config.loop.end = null;\n\t }\n\t this.config.loop.start = this.currentTime;\n\t // this.config.loop.indicator.start = this.elements.display.played.value;\n\t break;\n\t case 'end':\n\t if (this.config.loop.start >= this.currentTime) {\n\t return this;\n\t }\n\t this.config.loop.end = this.currentTime;\n\t // this.config.loop.indicator.end = this.elements.display.played.value;\n\t break;\n\t case 'all':\n\t this.config.loop.start = 0;\n\t this.config.loop.end = this.duration - 2;\n\t this.config.loop.indicator.start = 0;\n\t this.config.loop.indicator.end = 100;\n\t break;\n\t case 'toggle':\n\t if (this.config.loop.active) {\n\t this.config.loop.start = 0;\n\t this.config.loop.end = null;\n\t } else {\n\t this.config.loop.start = 0;\n\t this.config.loop.end = this.duration - 2;\n\t }\n\t break;\n\t default:\n\t this.config.loop.start = 0;\n\t this.config.loop.end = null;\n\t break;\n\t } */\n\t }\n\t /**\n\t * Get current loop state\n\t */\n\t ,\n\t get: function get() {\n\t return Boolean(this.media.loop);\n\t }\n\t /**\n\t * Set new media source\n\t * @param {Object} input - The new source object (see docs)\n\t */\n\n\t }, {\n\t key: \"source\",\n\t set: function set(input) {\n\t source.change.call(this, input);\n\t }\n\t /**\n\t * Get current source\n\t */\n\t ,\n\t get: function get() {\n\t return this.media.currentSrc;\n\t }\n\t /**\n\t * Get a download URL (either source or custom)\n\t */\n\n\t }, {\n\t key: \"download\",\n\t get: function get() {\n\t var download = this.config.urls.download;\n\t return is$2.url(download) ? download : this.source;\n\t }\n\t /**\n\t * Set the download URL\n\t */\n\t ,\n\t set: function set(input) {\n\t if (!is$2.url(input)) {\n\t return;\n\t }\n\n\t this.config.urls.download = input;\n\t controls.setDownloadUrl.call(this);\n\t }\n\t /**\n\t * Set the poster image for a video\n\t * @param {String} input - the URL for the new poster image\n\t */\n\n\t }, {\n\t key: \"poster\",\n\t set: function set(input) {\n\t if (!this.isVideo) {\n\t this.debug.warn('Poster can only be set for video');\n\t return;\n\t }\n\n\t ui.setPoster.call(this, input, false).catch(function () {});\n\t }\n\t /**\n\t * Get the current poster image\n\t */\n\t ,\n\t get: function get() {\n\t if (!this.isVideo) {\n\t return null;\n\t }\n\n\t return this.media.getAttribute('poster');\n\t }\n\t /**\n\t * Get the current aspect ratio in use\n\t */\n\n\t }, {\n\t key: \"ratio\",\n\t get: function get() {\n\t if (!this.isVideo) {\n\t return null;\n\t }\n\n\t var ratio = reduceAspectRatio(getAspectRatio.call(this));\n\t return is$2.array(ratio) ? ratio.join(':') : ratio;\n\t }\n\t /**\n\t * Set video aspect ratio\n\t */\n\t ,\n\t set: function set(input) {\n\t if (!this.isVideo) {\n\t this.debug.warn('Aspect ratio can only be set for video');\n\t return;\n\t }\n\n\t if (!is$2.string(input) || !validateRatio(input)) {\n\t this.debug.error(\"Invalid aspect ratio specified (\".concat(input, \")\"));\n\t return;\n\t }\n\n\t this.config.ratio = input;\n\t setAspectRatio.call(this);\n\t }\n\t /**\n\t * Set the autoplay state\n\t * @param {Boolean} input - Whether to autoplay or not\n\t */\n\n\t }, {\n\t key: \"autoplay\",\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : this.config.autoplay;\n\t this.config.autoplay = toggle;\n\t }\n\t /**\n\t * Get the current autoplay state\n\t */\n\t ,\n\t get: function get() {\n\t return Boolean(this.config.autoplay);\n\t }\n\t }, {\n\t key: \"currentTrack\",\n\t set: function set(input) {\n\t captions.set.call(this, input, false);\n\t }\n\t /**\n\t * Get the current caption track index (-1 if disabled)\n\t */\n\t ,\n\t get: function get() {\n\t var _this$captions = this.captions,\n\t toggled = _this$captions.toggled,\n\t currentTrack = _this$captions.currentTrack;\n\t return toggled ? currentTrack : -1;\n\t }\n\t /**\n\t * Set the wanted language for captions\n\t * Since tracks can be added later it won't update the actual caption track until there is a matching track\n\t * @param {String} - Two character ISO language code (e.g. EN, FR, PT, etc)\n\t */\n\n\t }, {\n\t key: \"language\",\n\t set: function set(input) {\n\t captions.setLanguage.call(this, input, false);\n\t }\n\t /**\n\t * Get the current track's language\n\t */\n\t ,\n\t get: function get() {\n\t return (captions.getCurrentTrack.call(this) || {}).language;\n\t }\n\t /**\n\t * Toggle picture-in-picture playback on WebKit/MacOS\n\t * TODO: update player with state, support, enabled\n\t * TODO: detect outside changes\n\t */\n\n\t }, {\n\t key: \"pip\",\n\t set: function set(input) {\n\t // Bail if no support\n\t if (!support.pip) {\n\t return;\n\t } // Toggle based on current state if not passed\n\n\n\t var toggle = is$2.boolean(input) ? input : !this.pip; // Toggle based on current state\n\t // Safari\n\n\t if (is$2.function(this.media.webkitSetPresentationMode)) {\n\t this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n\t } // Chrome\n\n\n\t if (is$2.function(this.media.requestPictureInPicture)) {\n\t if (!this.pip && toggle) {\n\t this.media.requestPictureInPicture();\n\t } else if (this.pip && !toggle) {\n\t document.exitPictureInPicture();\n\t }\n\t }\n\t }\n\t /**\n\t * Get the current picture-in-picture state\n\t */\n\t ,\n\t get: function get() {\n\t if (!support.pip) {\n\t return null;\n\t } // Safari\n\n\n\t if (!is$2.empty(this.media.webkitPresentationMode)) {\n\t return this.media.webkitPresentationMode === pip.active;\n\t } // Chrome\n\n\n\t return this.media === document.pictureInPictureElement;\n\t }\n\t }], [{\n\t key: \"supported\",\n\t value: function supported(type, provider, inline) {\n\t return support.check(type, provider, inline);\n\t }\n\t /**\n\t * Load an SVG sprite into the page\n\t * @param {String} url - URL for the SVG sprite\n\t * @param {String} [id] - Unique ID\n\t */\n\n\t }, {\n\t key: \"loadSprite\",\n\t value: function loadSprite$1(url, id) {\n\t return loadSprite(url, id);\n\t }\n\t /**\n\t * Setup multiple instances\n\t * @param {*} selector\n\t * @param {Object} options\n\t */\n\n\t }, {\n\t key: \"setup\",\n\t value: function setup(selector) {\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var targets = null;\n\n\t if (is$2.string(selector)) {\n\t targets = Array.from(document.querySelectorAll(selector));\n\t } else if (is$2.nodeList(selector)) {\n\t targets = Array.from(selector);\n\t } else if (is$2.array(selector)) {\n\t targets = selector.filter(is$2.element);\n\t }\n\n\t if (is$2.empty(targets)) {\n\t return null;\n\t }\n\n\t return targets.map(function (t) {\n\t return new Plyr(t, options);\n\t });\n\t }\n\t }]);\n\n\t return Plyr;\n\t}();\n\n\tPlyr.defaults = cloneDeep(defaults$2);\n\n\tvar sources = {\n\t video: {\n\t type: 'video',\n\t title: 'View From A Blue Moon',\n\t sources: [{\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4',\n\t type: 'video/mp4',\n\t size: 576\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4',\n\t type: 'video/mp4',\n\t size: 720\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4',\n\t type: 'video/mp4',\n\t size: 1080\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4',\n\t type: 'video/mp4',\n\t size: 1440\n\t }],\n\t poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg',\n\t tracks: [{\n\t kind: 'captions',\n\t label: 'English',\n\t srclang: 'en',\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n\t default: true\n\t }, {\n\t kind: 'captions',\n\t label: 'French',\n\t srclang: 'fr',\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt'\n\t }]\n\t },\n\t audio: {\n\t type: 'audio',\n\t title: 'Kishi Bashi – “It All Began With A Burst”',\n\t sources: [{\n\t src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',\n\t type: 'audio/mp3'\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg',\n\t type: 'audio/ogg'\n\t }]\n\t },\n\t youtube: {\n\t type: 'video',\n\t sources: [{\n\t src: 'https://youtube.com/watch?v=bTqVqk7FSmY',\n\t provider: 'youtube'\n\t }]\n\t },\n\t vimeo: {\n\t type: 'video',\n\t sources: [{\n\t src: 'https://vimeo.com/40648169',\n\t provider: 'vimeo'\n\t }]\n\t }\n\t};\n\n\t// Toggle class on an element\n\tvar toggleClass$1 = function toggleClass(element) {\n\t var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var toggle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t return element && element.classList[toggle ? 'add' : 'remove'](className);\n\t};\n\n\t(function () {\n\t var host = window.location.host;\n\t var env = {\n\t prod: host === 'plyr.io',\n\t dev: host === 'dev.plyr.io'\n\t };\n\t document.addEventListener('DOMContentLoaded', function () {\n\t singleton.context(function () {\n\t var selector = '#player'; // Setup share buttons\n\n\t Shr.setup('.js-shr', {\n\t count: {\n\t className: 'button__count'\n\t },\n\t wrapper: {\n\t className: 'button--with-count'\n\t }\n\t }); // Setup the player\n\n\t var player = new Plyr(selector, {\n\t debug: true,\n\t title: 'View From A Blue Moon',\n\t iconUrl: 'dist/demo.svg',\n\t keyboard: {\n\t global: true\n\t },\n\t tooltips: {\n\t controls: true\n\t },\n\t captions: {\n\t active: true\n\t },\n\t ads: {\n\t enabled: env.prod || env.dev,\n\t publisherId: '918848828995742'\n\t },\n\t previewThumbnails: {\n\t enabled: true,\n\t src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt']\n\t },\n\t vimeo: {\n\t // Prevent Vimeo blocking plyr.io demo site\n\t referrerPolicy: 'no-referrer'\n\t }\n\t }); // Expose for tinkering in the console\n\n\t window.player = player; // Setup type toggle\n\n\t var buttons = document.querySelectorAll('[data-source]');\n\t var types = Object.keys(sources);\n\t var historySupport = Boolean(window.history && window.history.pushState);\n\t var currentType = window.location.hash.substring(1);\n\t var hasCurrentType = !currentType.length;\n\n\t function render(type) {\n\t // Remove active classes\n\t Array.from(buttons).forEach(function (button) {\n\t return toggleClass$1(button.parentElement, 'active', false);\n\t }); // Set active on parent\n\n\t toggleClass$1(document.querySelector(\"[data-source=\\\"\".concat(type, \"\\\"]\")), 'active', true); // Show cite\n\n\t Array.from(document.querySelectorAll('.plyr__cite')).forEach(function (cite) {\n\t // eslint-disable-next-line no-param-reassign\n\t cite.hidden = true;\n\t });\n\t document.querySelector(\".plyr__cite--\".concat(type)).hidden = false;\n\t } // Set a new source\n\n\n\t function setSource(type, init) {\n\t // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video\n\t if (!types.includes(type) || !init && type === currentType || !currentType.length && type === 'video') {\n\t return;\n\t } // Set the new source\n\n\n\t player.source = sources[type]; // Set the current type for next time\n\n\t currentType = type;\n\t render(type);\n\t } // Bind to each button\n\n\n\t Array.from(buttons).forEach(function (button) {\n\t button.addEventListener('click', function () {\n\t var type = button.getAttribute('data-source');\n\t setSource(type);\n\n\t if (historySupport) {\n\t window.history.pushState({\n\t type: type\n\t }, '', \"#\".concat(type));\n\t }\n\t });\n\t }); // List for backwards/forwards\n\n\t window.addEventListener('popstate', function (event) {\n\t if (event.state && Object.keys(event.state).includes('type')) {\n\t setSource(event.state.type);\n\t }\n\t }); // If there's no current type set, assume video\n\n\t if (hasCurrentType) {\n\t currentType = 'video';\n\t } // Replace current history state\n\n\n\t if (historySupport && types.includes(currentType)) {\n\t window.history.replaceState({\n\t type: currentType\n\t }, '', hasCurrentType ? '' : \"#\".concat(currentType));\n\t } // If it's not video, load the source\n\n\n\t if (currentType !== 'video') {\n\t setSource(currentType, true);\n\t }\n\n\t render(currentType);\n\t });\n\t }); // Raven / Sentry\n\t // For demo site (https://plyr.io) only\n\n\t if (env.prod) {\n\t singleton.config('https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555').install();\n\t }\n\t})();\n\n}());\n","var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar hide = require('../internals/hide');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar exist = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return exist ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar hide = require('../internals/hide');\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\nvar IS_PURE = require('../internals/is-pure');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hide = require('../internals/hide');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\n// false -> Array#indexOf\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n// true -> Array#includes\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayIncludes = require('../internals/array-includes');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar arrayIndexOf = arrayIncludes(false);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar Reflect = global.Reflect;\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\n// 0 -> Array#forEach\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n// 1 -> Array#map\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// 2 -> Array#filter\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// 3 -> Array#some\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n// 4 -> Array#every\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n// 5 -> Array#find\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n// 6 -> Array#findIndex\n// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\nmodule.exports = function (TYPE, specificCreate) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = specificCreate || arraySpeciesCreate;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: target.push(value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar arrayMethods = require('../internals/array-methods');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar internalForEach = arrayMethods(0);\nvar SLOPPY_METHOD = sloppyArrayMethod('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = SLOPPY_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return internalForEach(this, callbackfn, arguments[1]);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar bind = require('../internals/bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var key;\n while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);\n return O;\n};\n","var global = require('../internals/global');\n\nvar document = global.document;\n\nmodule.exports = document && document.documentElement;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar hide = require('../internals/hide');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n hide(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayIncludes = require('../internals/array-includes');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar internalIncludes = arrayIncludes(true);\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return internalIncludes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('../internals/is-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) {\n throw TypeError('String.prototype.' + NAME + \" doesn't accept regex\");\n } return String(requireObjectCoercible(that));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar validateArguments = require('../internals/validate-string-method-arguments');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~validateArguments(this, searchString, 'includes')\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// CONVERT_TO_STRING: true -> String#at\n// CONVERT_TO_STRING: false -> String#codePointAt\nmodule.exports = function (that, pos, CONVERT_TO_STRING) {\n var S = String(requireObjectCoercible(that));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar hide = require('../internals/hide');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var validateSetPrototypeOfArguments = require('../internals/validate-set-prototype-of-arguments');\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var correctSetter = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n correctSetter = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n validateSetPrototypeOfArguments(O, proto);\n if (correctSetter) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\n\nmodule.exports = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) {\n throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar codePointAt = require('../internals/string-at');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = codePointAt(string, index, true);\n state.index += point.length;\n return { value: point, done: false };\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar hide = require('../internals/hide');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n hide(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","// Setup tab focus\nconst container = document.getElementById('container');\nconst tabClassName = 'tab-focus';\n\n// Remove class on blur\ndocument.addEventListener('focusout', event => {\n if (!event.target.classList || container.contains(event.target)) {\n return;\n }\n\n event.target.classList.remove(tabClassName);\n});\n\n// Add classname to tabbed elements\ndocument.addEventListener('keydown', event => {\n if (event.keyCode !== 9) {\n return;\n }\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n setTimeout(() => {\n const focused = document.activeElement;\n\n if (!focused || !focused.classList || container.contains(focused)) {\n return;\n }\n\n focused.classList.add(tabClassName);\n }, 10);\n});\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","exports.f = require('../internals/well-known-symbol');\n","module.exports = require('../internals/global');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\nvar redefine = require('../internals/redefine');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar fails = require('../internals/fails');\nvar shared = require('../internals/shared');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar enumKeys = require('../internals/enum-keys');\nvar isArray = require('../internals/is-array');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar hide = require('../internals/hide');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar sharedKey = require('../internals/shared-key');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\nvar ObjectPrototype = Object[PROTOTYPE];\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, key);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[key];\n nativeDefineProperty(it, key, D);\n if (ObjectPrototypeDescriptor && it !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, key, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) nativeDefineProperty(it, HIDDEN, createPropertyDescriptor(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = nativeObjectCreate(D, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(it, key, D);\n } return nativeDefineProperty(it, key, D);\n};\n\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIndexedObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\n\nvar $create = function create(it, P) {\n return P === undefined ? nativeObjectCreate(it) : $defineProperties(nativeObjectCreate(it), P);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = nativePropertyIsEnumerable.call(this, key = toPrimitive(key, true));\n if (this === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIndexedObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var D = nativeGetOwnPropertyDescriptor(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && !has(hiddenKeys, key)) result.push(key);\n } return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OP ? ObjectPrototypeSymbols : toIndexedObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectPrototype, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\nfor (var wellKnownSymbols = objectKeys(WellKnownSymbolsStore), k = 0; wellKnownSymbols.length > k;) {\n defineWellKnownSymbol(wellKnownSymbols[k++]);\n}\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\n\n// all enumerable object keys, includes symbols\nmodule.exports = function (it) {\n var result = objectKeys(it);\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n if (getOwnPropertySymbols) {\n var symbols = getOwnPropertySymbols(it);\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (propertyIsEnumerable.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\nvar arrayIncludes = require('../internals/array-includes');\n\nvar internalIndexOf = arrayIncludes(false);\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : internalIndexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar nativeToString = /./[TO_STRING];\nvar RegExpPrototype = RegExp.prototype;\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","'use strict';\nvar codePointAt = require('../internals/string-at');\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? codePointAt(S, index, true).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar hide = require('../internals/hide');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n hide(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) hide(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n hide(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?e=1', 'http://a');\n var searchParams = url.searchParams;\n url.pathname = 'c%20d';\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?e=1'\n || searchParams.get('e') !== '1'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1';\n});\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// 19.1.2.1 Object.assign(target, source, ...)\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) {\n break;\n }\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/bind-context');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var i = 0;\n var attribute, entry;\n while (i < attributes.length) {\n attribute = attributes[i++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n } return result;\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, step, entryIterator, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: null,\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n while (!(step = iterator.next()).done) {\n entryIterator = getIterator(anObject(step.value));\n if (\n (first = entryIterator.next()).done ||\n (second = entryIterator.next()).done ||\n !entryIterator.next().done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n if (state.updateURL) state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var i = 0;\n while (i < entries.length) {\n if (entries[i].key === key) entries.splice(i, 1);\n else i++;\n }\n if (state.updateURL) state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var i = 0;\n for (; i < entries.length; i++) if (entries[i].key === key) return entries[i].value;\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var i = 0;\n for (; i < entries.length; i++) if (entries[i].key === key) result.push(entries[i].value);\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var i = 0;\n while (i < entries.length) if (entries[i++].key === key) return true;\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var i = 0;\n var entry;\n for (; i < entries.length; i++) {\n entry = entries[i];\n if (entry.key === key) {\n if (found) entries.splice(i--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n if (state.updateURL) state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, i, j;\n entries.length = 0;\n for (i = 0; i < slice.length; i++) {\n entry = slice[i];\n for (j = 0; j < i; j++) if (entries[j].key > entry.key) {\n entries.splice(j, 0, entry);\n break;\n }\n if (j === i) entries.push(entry);\n }\n if (state.updateURL) state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var i = 0;\n var entry;\n while (i < entries.length) {\n entry = entries[i++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var i = 0;\n var entry;\n while (i < entries.length) {\n entry = entries[i++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codePointAt = require('../internals/string-at');\nvar toASCII = require('../internals/punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+\\-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, i;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (i = 0; i < codePoints.length; i++) result += percentEncode(codePoints[i], C0ControlPercentEncodeSet);\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, i, part, R, n, ipv4;\n if (parts[parts.length - 1] == '') {\n if (parts.length) parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (i = 0; i < partsLength; i++) {\n part = parts[i];\n if (part == '') return input;\n R = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n R = HEX_START.test(part) ? 16 : 8;\n part = part.slice(R == 8 ? 1 : 2);\n }\n if (part === '') {\n n = 0;\n } else {\n if (!(R == 10 ? DEC : R == 8 ? OCT : HEX).test(part)) return input;\n n = parseInt(part, R);\n }\n numbers.push(n);\n }\n for (i = 0; i < partsLength; i++) {\n n = numbers[i];\n if (i == partsLength - 1) {\n if (n >= pow(256, 5 - partsLength)) return null;\n } else if (n > 255) return null;\n }\n ipv4 = numbers.pop();\n for (i = 0; i < numbers.length; i++) {\n ipv4 += numbers[i] * pow(256, 3 - i);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var i = 0;\n for (; i < 8; i++) {\n if (ipv6[i] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = i;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, i, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (i = 0; i < 4; i++) {\n result.unshift(host % 256);\n host = Math.floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (i = 0; i < 8; i++) {\n if (ignore0 && host[i] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === i) {\n result += i ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[i].toString(16);\n if (i < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codePointAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride) {\n if (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n ) return;\n }\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n if (!('URLSearchParams' in global) || (new global.URLSearchParams('?a=1').toString() !== 'a=1')) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c%20d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, { fill: fill });\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var C = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n if (DESCRIPTORS && C && !C[SPECIES]) defineProperty(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar BREAK = {};\n\nvar exports = module.exports = function (iterable, fn, that, ENTRIES, ITERATOR) {\n var boundFunction = bind(fn, that, ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, step;\n\n if (ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]);\n if (result === BREAK) return BREAK;\n } return;\n }\n iterator = iterFn.call(iterable);\n }\n\n while (!(step = iterator.next()).done) {\n if (callWithSafeIterationClosing(iterator, boundFunction, step.value, ENTRIES) === BREAK) return BREAK;\n }\n};\n\nexports.BREAK = BREAK;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar userAgent = require('../internals/user-agent');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar path = require('../internals/path');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar userAgent = require('../internals/user-agent');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = global[PROMISE];\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = global.fetch;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper;\n\nvar FORCED = isForced(PROMISE, function () {\n // correct subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var empty = function () { /* empty */ };\n var FakePromise = (promise.constructor = {})[SPECIES] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !((IS_NODE || typeof PromiseRejectionEvent == 'function')\n && (!IS_PURE || promise['finally'])\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n // wrap fetch result\n if (!IS_PURE && typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = path[PROMISE];\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayMethods = require('../internals/array-methods');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar internalFilter = arrayMethods(2);\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return internalFilter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayMethods = require('../internals/array-methods');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar internalMap = arrayMethods(1);\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return internalMap(this, callbackfn, arguments[1]);\n }\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\nmodule.exports = function (that, callbackfn, argumentsLength, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar internalReduce = require('../internals/array-reduce');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar SLOPPY_METHOD = sloppyArrayMethod('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: SLOPPY_METHOD }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return internalReduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsFrozen = Object.isFrozen;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.github.io/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isFrozen: function isFrozen(it) {\n return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true;\n }\n});\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = isForced('RegExp', DESCRIPTORS && (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var i = 0;\n while (i < keys.length) proxy(keys[i++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && global.DataView);\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf;\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n hide(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar hide = require('../internals/hide');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n O = [];\n while (!(step = iterator.next()).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar hide = require('../internals/hide');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar arrayMethods = require('../internals/array-methods');\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar forEach = arrayMethods(0);\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (that, data, typedArrayOffset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) hide(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n hide(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) hide(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n hide(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n hide(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar arrayCopyWithin = require('../internals/array-copy-within');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar arrayMethods = require('../internals/array-methods');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar arrayEvery = arrayMethods(4);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return arrayEvery(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayFill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return arrayFill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar speciesConstructor = require('../internals/species-constructor');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayMethods = require('../internals/array-methods');\n\nvar arrayFilter = arrayMethods(2);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = arrayFilter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayMethods = require('../internals/array-methods');\n\nvar arrayFind = arrayMethods(5);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return arrayFind(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayMethods = require('../internals/array-methods');\n\nvar arrayFindIndex = arrayMethods(6);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayMethods = require('../internals/array-methods');\n\nvar arrayForEach = arrayMethods(0);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n arrayForEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar createIncludes = require('../internals/array-includes');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar arrayIncludes = createIncludes(true);\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar createIncludes = require('../internals/array-includes');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar arrayIndexOf = createIncludes(false);\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar arrayJoin = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return arrayJoin.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar arrayLastIndexOf = require('../internals/array-last-index-of');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return arrayLastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar speciesConstructor = require('../internals/species-constructor');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayMethods = require('../internals/array-methods');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\nvar internalTypedArrayMap = arrayMethods(1, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n});\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return internalTypedArrayMap(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar internalReduce = require('../internals/array-reduce');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return internalReduce(aTypedArray(this), callbackfn, arguments.length, arguments[1], false);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar internalReduce = require('../internals/array-reduce');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return internalReduce(aTypedArray(this), callbackfn, arguments.length, arguments[1], true);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar speciesConstructor = require('../internals/species-constructor');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar arraySlice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = arraySlice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar arrayMethods = require('../internals/array-methods');\n\nvar arraySome = arrayMethods(3);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return arraySome(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar arraySort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return arraySort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar arrayToLocaleString = [].toLocaleString;\nvar arraySlice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_BUG = !!Int8Array && fails(function () {\n arrayToLocaleString.call(new Int8Array(1));\n});\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*\n json-stringify-safe\n Like JSON.stringify, but doesn't throw on circular references.\n\n Originally forked from https://github.com/isaacs/json-stringify-safe\n version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n and IE8 compatibility. Tests for this are in test/vendor.\n\n ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n*/\n\nexports = module.exports = stringify;\nexports.getSerialize = serializer;\n\nfunction indexOf(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) return i;\n }\n return -1;\n}\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n}\n\n// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\nfunction stringifyError(value) {\n var err = {\n // These properties are implemented as magical getters and don't show up in for in\n stack: value.stack,\n message: value.message,\n name: value.name\n };\n\n for (var i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i)) {\n err[i] = value[i];\n }\n }\n\n return err;\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [];\n var keys = [];\n\n if (cycleReplacer == null) {\n cycleReplacer = function(key, value) {\n if (stack[0] === value) {\n return '[Circular ~]';\n }\n return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n };\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = indexOf(stack, this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n if (~indexOf(stack, value)) {\n value = cycleReplacer.call(this, key, value);\n }\n } else {\n stack.push(value);\n }\n\n return replacer == null\n ? value instanceof Error ? stringifyError(value) : value\n : replacer.call(this, key, value);\n };\n}\n","var stringify = require('../vendor/json-stringify-safe/stringify');\n\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\n// Yanked from https://git.io/vS8DV re-used under CC0\n// with some tiny modifications\nfunction isError(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n}\n\nfunction isErrorEvent(value) {\n return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n}\n\nfunction isDOMError(value) {\n return Object.prototype.toString.call(value) === '[object DOMError]';\n}\n\nfunction isDOMException(value) {\n return Object.prototype.toString.call(value) === '[object DOMException]';\n}\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isPlainObject(what) {\n return Object.prototype.toString.call(what) === '[object Object]';\n}\n\nfunction isString(what) {\n return Object.prototype.toString.call(what) === '[object String]';\n}\n\nfunction isArray(what) {\n return Object.prototype.toString.call(what) === '[object Array]';\n}\n\nfunction isEmptyObject(what) {\n if (!isPlainObject(what)) return false;\n\n for (var _ in what) {\n if (what.hasOwnProperty(_)) {\n return false;\n }\n }\n return true;\n}\n\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMError() {\n try {\n new DOMError(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMException() {\n try {\n new DOMException(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsFetch() {\n if (!('fetch' in _window)) return false;\n\n try {\n new Headers(); // eslint-disable-line no-new\n new Request(''); // eslint-disable-line no-new\n new Response(); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n// https://caniuse.com/#feat=referrer-policy\n// It doesn't. And it throw exception instead of ignoring this parameter...\n// REF: https://github.com/getsentry/raven-js/issues/1233\nfunction supportsReferrerPolicy() {\n if (!supportsFetch()) return false;\n\n try {\n // eslint-disable-next-line no-new\n new Request('pickleRick', {\n referrerPolicy: 'origin'\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsPromiseRejectionEvent() {\n return typeof PromiseRejectionEvent === 'function';\n}\n\nfunction wrappedCallback(callback) {\n function dataCallback(data, original) {\n var normalizedData = callback(data) || data;\n if (original) {\n return original(normalizedData) || normalizedData;\n }\n return normalizedData;\n }\n\n return dataCallback;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value) {\n obj1[key] = value;\n });\n return obj1;\n}\n\n/**\n * This function is only used for react-native.\n * react-native freezes object that have already been sent over the\n * js bridge. We need this function in order to check if the object is frozen.\n * So it's ok that objectFrozen returns false if Object.isFrozen is not\n * supported because it's not relevant for other \"platforms\". See related issue:\n * https://github.com/getsentry/react-native-sentry/issues/57\n */\nfunction objectFrozen(obj) {\n if (!Object.isFrozen) {\n return false;\n }\n return Object.isFrozen(obj);\n}\n\nfunction truncate(str, max) {\n if (typeof max !== 'number') {\n throw new Error('2nd argument to `truncate` function should be a number');\n }\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0,\n len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not <a/> href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n if (typeof url !== 'string') return {};\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = _window.crypto || _window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n // eslint-disable-next-line no-undef\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return (\n pad(arr[0]) +\n pad(arr[1]) +\n pad(arr[2]) +\n pad(arr[3]) +\n pad(arr[4]) +\n pad(arr[5]) +\n pad(arr[6]) +\n pad(arr[7])\n );\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n /* eslint no-extra-parens:0*/\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (\n nextStr === 'html' ||\n (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n ) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\n/**\n * Returns true if either a OR b is truthy, but not both\n */\nfunction isOnlyOneTruthy(a, b) {\n return !!(!!a ^ !!b);\n}\n\n/**\n * Returns true if both parameters are undefined\n */\nfunction isBothUndefined(a, b) {\n return isUndefined(a) && isUndefined(b);\n}\n\n/**\n * Returns true if the two input exception interfaces have the same content\n */\nfunction isSameException(ex1, ex2) {\n if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n ex1 = ex1.values[0];\n ex2 = ex2.values[0];\n\n if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n // in case both stacktraces are undefined, we can't decide so default to false\n if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\n return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n}\n\n/**\n * Returns true if the two input stack trace interfaces have the same content\n */\nfunction isSameStacktrace(stack1, stack2) {\n if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n var frames1 = stack1.frames;\n var frames2 = stack2.frames;\n\n // Exit early if stacktrace is malformed\n if (frames1 === undefined || frames2 === undefined) return false;\n\n // Exit early if frame count differs\n if (frames1.length !== frames2.length) return false;\n\n // Iterate through every frame; bail out if anything differs\n var a, b;\n for (var i = 0; i < frames1.length; i++) {\n a = frames1[i];\n b = frames2[i];\n if (\n a.filename !== b.filename ||\n a.lineno !== b.lineno ||\n a.colno !== b.colno ||\n a['function'] !== b['function']\n )\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\nfunction fill(obj, name, replacement, track) {\n if (obj == null) return;\n var orig = obj[name];\n obj[name] = replacement(orig);\n obj[name].__raven__ = true;\n obj[name].__orig__ = orig;\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns {string}\n */\nfunction safeJoin(input, delimiter) {\n if (!isArray(input)) return '';\n\n var output = [];\n\n for (var i = 0; i < input.length; i++) {\n try {\n output.push(String(input[i]));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n// Default Node.js REPL depth\nvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3;\n// 50kB, as 100kB is max payload size, so half sounds reasonable\nvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\nvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nfunction serializeValue(value) {\n if (typeof value === 'string') {\n var maxLength = 40;\n return truncate(value, maxLength);\n } else if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined'\n ) {\n return value;\n }\n\n var type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (type === '[object Object]') return '[Object]';\n if (type === '[object Array]') return '[Array]';\n if (type === '[object Function]')\n return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\n return value;\n}\n\nfunction serializeObject(value, depth) {\n if (depth === 0) return serializeValue(value);\n\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(function(acc, key) {\n acc[key] = serializeObject(value[key], depth - 1);\n return acc;\n }, {});\n } else if (Array.isArray(value)) {\n return value.map(function(val) {\n return serializeObject(val, depth - 1);\n });\n }\n\n return serializeValue(value);\n}\n\nfunction serializeException(ex, depth, maxSize) {\n if (!isPlainObject(ex)) return ex;\n\n depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\n var serialized = serializeObject(ex, depth);\n\n if (jsonSize(stringify(serialized)) > maxSize) {\n return serializeException(ex, depth - 1);\n }\n\n return serialized;\n}\n\nfunction serializeKeysForMessage(keys, maxLength) {\n if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n if (!Array.isArray(keys)) return '';\n\n keys = keys.filter(function(key) {\n return typeof key === 'string';\n });\n if (keys.length === 0) return '[object has no keys]';\n\n maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n if (keys[0].length >= maxLength) return keys[0];\n\n for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n var serialized = keys.slice(0, usedKeys).join(', ');\n if (serialized.length > maxLength) continue;\n if (usedKeys === keys.length) return serialized;\n return serialized + '\\u2026';\n }\n\n return '';\n}\n\nfunction sanitize(input, sanitizeKeys) {\n if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0))\n return input;\n\n var sanitizeRegExp = joinRegExp(sanitizeKeys);\n var sanitizeMask = '********';\n var safeInput;\n\n try {\n safeInput = JSON.parse(stringify(input));\n } catch (o_O) {\n return input;\n }\n\n function sanitizeWorker(workerInput) {\n if (isArray(workerInput)) {\n return workerInput.map(function(val) {\n return sanitizeWorker(val);\n });\n }\n\n if (isPlainObject(workerInput)) {\n return Object.keys(workerInput).reduce(function(acc, k) {\n if (sanitizeRegExp.test(k)) {\n acc[k] = sanitizeMask;\n } else {\n acc[k] = sanitizeWorker(workerInput[k]);\n }\n return acc;\n }, {});\n }\n\n return workerInput;\n }\n\n return sanitizeWorker(safeInput);\n}\n\nmodule.exports = {\n isObject: isObject,\n isError: isError,\n isErrorEvent: isErrorEvent,\n isDOMError: isDOMError,\n isDOMException: isDOMException,\n isUndefined: isUndefined,\n isFunction: isFunction,\n isPlainObject: isPlainObject,\n isString: isString,\n isArray: isArray,\n isEmptyObject: isEmptyObject,\n supportsErrorEvent: supportsErrorEvent,\n supportsDOMError: supportsDOMError,\n supportsDOMException: supportsDOMException,\n supportsFetch: supportsFetch,\n supportsReferrerPolicy: supportsReferrerPolicy,\n supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n wrappedCallback: wrappedCallback,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n objectFrozen: objectFrozen,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n isSameException: isSameException,\n isSameStacktrace: isSameStacktrace,\n parseUrl: parseUrl,\n fill: fill,\n safeJoin: safeJoin,\n serializeException: serializeException,\n serializeKeysForMessage: serializeKeysForMessage,\n sanitize: sanitize\n};\n","var utils = require('../../src/utils');\n\n/*\n TraceKit - Cross brower stack traces\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\nfunction getLocationOrigin() {\n if (typeof document === 'undefined' || document.location == null) return '';\n\n // Oh dear IE10...\n if (!document.location.origin) {\n return (\n document.location.protocol +\n '//' +\n document.location.hostname +\n (document.location.port ? ':' + document.location.port : '')\n );\n }\n\n return document.location.origin;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.<string, *>} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} msg Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n var stack = null;\n // If 'ex' is ErrorEvent, get real Error from inside\n var exception = utils.isErrorEvent(ex) ? ex.error : ex;\n // If 'msg' is ErrorEvent, get real message from inside\n var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n lastExceptionStack,\n url,\n lineNo,\n message\n );\n processLastException();\n } else if (exception && utils.isError(exception)) {\n // non-string `exception` arg; attempt to extract stack trace\n\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(exception);\n notifyHandlers(stack, true);\n } else {\n var location = {\n url: url,\n line: lineNo,\n column: colNo\n };\n\n var name = undefined;\n var groups;\n\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n name: name,\n message: message,\n url: getLocationHref(),\n stack: [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(\n function() {\n if (lastException === ex) {\n processLastException();\n }\n },\n stack.incomplete ? 2000 : 0\n );\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n})();\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.<string, *>} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n // Used to additionally parse URL/line/column from eval frames\n var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n var lines = ex.stack.split('\\n');\n var stack = [];\n var submatch;\n var parts;\n var element;\n var reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: !isNative ? parts[2] : null,\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n if (element.url && element.url.substr(0, 5) === 'blob:') {\n // Special case for handling JavaScript loaded into a blob.\n // We use a synchronous AJAX request here as a blob is already in\n // memory - it's not making a network request. This will generate a warning\n // in the browser console, but there has already been an error so that's not\n // that much of an issue.\n var xhr = new XMLHttpRequest();\n xhr.open('GET', element.url, false);\n xhr.send(null);\n\n // If we failed to download the source, skip this patch\n if (xhr.status === 200) {\n var source = xhr.responseText || '';\n\n // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n source = source.slice(-300);\n\n // Now we dig out the source map URL\n var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/);\n\n // If we don't find a source map comment or we find more than one, continue on to the next element.\n if (sourceMaps) {\n var sourceMapAddress = sourceMaps[1];\n\n // Now we check to see if it's a relative URL.\n // If it is, convert it to an absolute one.\n if (sourceMapAddress.charAt(0) === '~') {\n sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n }\n\n // Now we strip the '.map' off of the end of the URL and update the\n // element so that Sentry can match the map to the blob.\n element.url = sourceMapAddress.slice(0, -4);\n }\n }\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.<string, *>} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (\n !stackInfo.stack[0].line &&\n stackInfo.stack[0].func === initial.func\n ) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.<string, *>} Stack trace information.\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (\n var curr = computeStackTraceByWalkingCallerChain.caller;\n curr && !recursion;\n curr = curr.caller\n ) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n line: null,\n column: null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n augmentStackTraceWithInitialElement(\n result,\n ex.sourceURL || ex.fileName,\n ex.line || ex.lineNumber,\n ex.message || ex.description\n );\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n return computeStackTrace;\n})();\n\nmodule.exports = TraceKit;\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n* Add integers, wrapping at 2^32. This uses 16-bit operations internally\n* to work around bugs in some JS interpreters.\n*/\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\n/*\n* Bitwise rotate a 32-bit number to the left.\n*/\nfunction bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\n/*\n* These functions implement the four basic operations the algorithm uses.\n*/\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n* Calculate the MD5 of an array of little-endian words, and a bit length.\n*/\nfunction binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return [a, b, c, d];\n}\n\n/*\n* Convert an array of little-endian words to a string\n*/\nfunction binl2rstr(input) {\n var i;\n var output = '';\n var length32 = input.length * 32;\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n }\n return output;\n}\n\n/*\n* Convert a raw string to an array of little-endian words\n* Characters >255 have their high-byte silently ignored.\n*/\nfunction rstr2binl(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n var length8 = input.length * 8;\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n }\n return output;\n}\n\n/*\n* Calculate the MD5 of a raw string\n*/\nfunction rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n}\n\n/*\n* Calculate the HMAC-MD5, of a key and some data (raw strings)\n*/\nfunction rstrHMACMD5(key, data) {\n var i;\n var bkey = rstr2binl(key);\n var ipad = [];\n var opad = [];\n var hash;\n ipad[15] = opad[15] = undefined;\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8);\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n}\n\n/*\n* Convert a raw string to a hex string\n*/\nfunction rstr2hex(input) {\n var hexTab = '0123456789abcdef';\n var output = '';\n var x;\n var i;\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i);\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n* Encode a string as utf-8\n*/\nfunction str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input));\n}\n\n/*\n* Take string arguments and return either raw or hex encoded strings\n*/\nfunction rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s));\n}\nfunction hexMD5(s) {\n return rstr2hex(rawMD5(s));\n}\nfunction rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n}\nfunction hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d));\n}\n\nfunction md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string);\n }\n return rawMD5(string);\n }\n if (!raw) {\n return hexHMACMD5(key, string);\n }\n return rawHMACMD5(key, string);\n}\n\nmodule.exports = md5;\n","function RavenConfigError(message) {\n this.name = 'RavenConfigError';\n this.message = message;\n}\nRavenConfigError.prototype = new Error();\nRavenConfigError.prototype.constructor = RavenConfigError;\n\nmodule.exports = RavenConfigError;\n","var utils = require('./utils');\n\nvar wrapMethod = function(console, level, callback) {\n var originalConsoleLevel = console[level];\n var originalConsole = console;\n\n if (!(level in console)) {\n return;\n }\n\n var sentryLevel = level === 'warn' ? 'warning' : level;\n\n console[level] = function() {\n var args = [].slice.call(arguments);\n\n var msg = utils.safeJoin(args, ' ');\n var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};\n\n if (level === 'assert') {\n if (args[0] === false) {\n // Default browsers message\n msg =\n 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');\n data.extra.arguments = args.slice(1);\n callback && callback(msg, data);\n }\n } else {\n callback && callback(msg, data);\n }\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n // IE9 doesn't allow calling apply on console functions directly\n // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n }\n };\n};\n\nmodule.exports = {\n wrapMethod: wrapMethod\n};\n","/*global XDomainRequest:false */\n\nvar TraceKit = require('../vendor/TraceKit/tracekit');\nvar stringify = require('../vendor/json-stringify-safe/stringify');\nvar md5 = require('../vendor/md5/md5');\nvar RavenConfigError = require('./configError');\n\nvar utils = require('./utils');\nvar isErrorEvent = utils.isErrorEvent;\nvar isDOMError = utils.isDOMError;\nvar isDOMException = utils.isDOMException;\nvar isError = utils.isError;\nvar isObject = utils.isObject;\nvar isPlainObject = utils.isPlainObject;\nvar isUndefined = utils.isUndefined;\nvar isFunction = utils.isFunction;\nvar isString = utils.isString;\nvar isArray = utils.isArray;\nvar isEmptyObject = utils.isEmptyObject;\nvar each = utils.each;\nvar objectMerge = utils.objectMerge;\nvar truncate = utils.truncate;\nvar objectFrozen = utils.objectFrozen;\nvar hasKey = utils.hasKey;\nvar joinRegExp = utils.joinRegExp;\nvar urlencode = utils.urlencode;\nvar uuid4 = utils.uuid4;\nvar htmlTreeAsString = utils.htmlTreeAsString;\nvar isSameException = utils.isSameException;\nvar isSameStacktrace = utils.isSameStacktrace;\nvar parseUrl = utils.parseUrl;\nvar fill = utils.fill;\nvar supportsFetch = utils.supportsFetch;\nvar supportsReferrerPolicy = utils.supportsReferrerPolicy;\nvar serializeKeysForMessage = utils.serializeKeysForMessage;\nvar serializeException = utils.serializeException;\nvar sanitize = utils.sanitize;\n\nvar wrapConsoleMethod = require('./console').wrapMethod;\n\nvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\nfunction now() {\n return +new Date();\n}\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _document = _window.document;\nvar _navigator = _window.navigator;\n\nfunction keepOriginalCallback(original, callback) {\n return isFunction(callback)\n ? function(data) {\n return callback(data, original);\n }\n : callback;\n}\n\n// First, check for JSON support\n// If there is no JSON, we no-op the core features of Raven\n// since JSON is required to encode the payload\nfunction Raven() {\n this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n // Raven can run in contexts where there's no document (react-native)\n this._hasDocument = !isUndefined(_document);\n this._hasNavigator = !isUndefined(_navigator);\n this._lastCapturedException = null;\n this._lastData = null;\n this._lastEventId = null;\n this._globalServer = null;\n this._globalKey = null;\n this._globalProject = null;\n this._globalContext = {};\n this._globalOptions = {\n // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin\n release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id,\n logger: 'javascript',\n ignoreErrors: [],\n ignoreUrls: [],\n whitelistUrls: [],\n includePaths: [],\n headers: null,\n collectWindowErrors: true,\n captureUnhandledRejections: true,\n maxMessageLength: 0,\n // By default, truncates URL values to 250 chars\n maxUrlLength: 250,\n stackTraceLimit: 50,\n autoBreadcrumbs: true,\n instrument: true,\n sampleRate: 1,\n sanitizeKeys: []\n };\n this._fetchDefaults = {\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: supportsReferrerPolicy() ? 'origin' : ''\n };\n this._ignoreOnError = 0;\n this._isRavenInstalled = false;\n this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n // capture references to window.console *and* all its methods first\n // before the console plugin has a chance to monkey patch\n this._originalConsole = _window.console || {};\n this._originalConsoleMethods = {};\n this._plugins = [];\n this._startTime = now();\n this._wrappedBuiltIns = [];\n this._breadcrumbs = [];\n this._lastCapturedEvent = null;\n this._keypressTimeout;\n this._location = _window.location;\n this._lastHref = this._location && this._location.href;\n this._resetBackoff();\n\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsole) {\n this._originalConsoleMethods[method] = this._originalConsole[method];\n }\n}\n\n/*\n * The core Raven singleton\n *\n * @this {Raven}\n */\n\nRaven.prototype = {\n // Hardcode version string so that raven source can be loaded directly via\n // webpack (using a build step causes webpack #1617). Grunt verifies that\n // this value matches package.json during build.\n // See: https://github.com/getsentry/raven-js/issues/465\n VERSION: '3.27.1',\n\n debug: false,\n\n TraceKit: TraceKit, // alias to TraceKit\n\n /*\n * Configure Raven with a DSN and extra options\n *\n * @param {string} dsn The public Sentry DSN\n * @param {object} options Set of global options [optional]\n * @return {Raven}\n */\n config: function(dsn, options) {\n var self = this;\n\n if (self._globalServer) {\n this._logDebug('error', 'Error: Raven has already been configured');\n return self;\n }\n if (!dsn) return self;\n\n var globalOptions = self._globalOptions;\n\n // merge in options\n if (options) {\n each(options, function(key, value) {\n // tags and extra are special and need to be put into context\n if (key === 'tags' || key === 'extra' || key === 'user') {\n self._globalContext[key] = value;\n } else {\n globalOptions[key] = value;\n }\n });\n }\n\n self.setDSN(dsn);\n\n // \"Script error.\" is hard coded into browsers for errors that it can't read.\n // this is the result of a script being pulled in from an external domain and CORS.\n globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n // join regexp rules into one big rule\n globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);\n globalOptions.ignoreUrls = globalOptions.ignoreUrls.length\n ? joinRegExp(globalOptions.ignoreUrls)\n : false;\n globalOptions.whitelistUrls = globalOptions.whitelistUrls.length\n ? joinRegExp(globalOptions.whitelistUrls)\n : false;\n globalOptions.includePaths = joinRegExp(globalOptions.includePaths);\n globalOptions.maxBreadcrumbs = Math.max(\n 0,\n Math.min(globalOptions.maxBreadcrumbs || 100, 100)\n ); // default and hard limit is 100\n\n var autoBreadcrumbDefaults = {\n xhr: true,\n console: true,\n dom: true,\n location: true,\n sentry: true\n };\n\n var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs);\n } else if (autoBreadcrumbs !== false) {\n autoBreadcrumbs = autoBreadcrumbDefaults;\n }\n globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\n var instrumentDefaults = {\n tryCatch: true\n };\n\n var instrument = globalOptions.instrument;\n if ({}.toString.call(instrument) === '[object Object]') {\n instrument = objectMerge(instrumentDefaults, instrument);\n } else if (instrument !== false) {\n instrument = instrumentDefaults;\n }\n globalOptions.instrument = instrument;\n\n TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;\n\n // return for chaining\n return self;\n },\n\n /*\n * Installs a global window.onerror error handler\n * to capture and report uncaught exceptions.\n * At this point, install() is required to be called due\n * to the way TraceKit is set up.\n *\n * @return {Raven}\n */\n install: function() {\n var self = this;\n if (self.isSetup() && !self._isRavenInstalled) {\n TraceKit.report.subscribe(function() {\n self._handleOnErrorStackInfo.apply(self, arguments);\n });\n\n if (self._globalOptions.captureUnhandledRejections) {\n self._attachPromiseRejectionHandler();\n }\n\n self._patchFunctionToString();\n\n if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n self._instrumentTryCatch();\n }\n\n if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs();\n\n // Install all of the plugins\n self._drainPlugins();\n\n self._isRavenInstalled = true;\n }\n\n Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n return this;\n },\n\n /*\n * Set the DSN (can be called multiple time unlike config)\n *\n * @param {string} dsn The public Sentry DSN\n */\n setDSN: function(dsn) {\n var self = this,\n uri = self._parseDSN(dsn),\n lastSlash = uri.path.lastIndexOf('/'),\n path = uri.path.substr(1, lastSlash);\n\n self._dsn = dsn;\n self._globalKey = uri.user;\n self._globalSecret = uri.pass && uri.pass.substr(1);\n self._globalProject = uri.path.substr(lastSlash + 1);\n\n self._globalServer = self._getGlobalServer(uri);\n\n self._globalEndpoint =\n self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/';\n\n // Reset backoff state since we may be pointing at a\n // new project/server\n this._resetBackoff();\n },\n\n /*\n * Wrap code within a context so Raven can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n context: function(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = {};\n }\n\n return this.wrap(options, func).apply(this, args);\n },\n\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} _before A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n wrap: function(options, func, _before) {\n var self = this;\n // 1 argument has been passed, and it's not a function\n // so just return it\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n }\n\n // options is optional\n if (isFunction(options)) {\n func = options;\n options = undefined;\n }\n\n // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n if (!isFunction(func)) {\n return func;\n }\n\n // We don't wanna wrap it twice!\n try {\n if (func.__raven__) {\n return func;\n }\n\n // If this has already been wrapped in the past, return that\n if (func.__raven_wrapper__) {\n return func.__raven_wrapper__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n function wrapped() {\n var args = [],\n i = arguments.length,\n deep = !options || (options && options.deep !== false);\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n }\n\n // Recursively wrap all of a function's arguments that are\n // functions themselves.\n while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n try {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means Raven caught an error invoking your application code. This is\n // expected behavior and NOT indicative of a bug with Raven.js.\n return func.apply(this, args);\n } catch (e) {\n self._ignoreNextOnError();\n self.captureException(e, options);\n throw e;\n }\n }\n\n // copy over properties of the old function\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n wrapped.prototype = func.prototype;\n\n func.__raven_wrapper__ = wrapped;\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n wrapped.__raven__ = true;\n wrapped.__orig__ = func;\n\n return wrapped;\n },\n\n /**\n * Uninstalls the global error handler.\n *\n * @return {Raven}\n */\n uninstall: function() {\n TraceKit.report.uninstall();\n\n this._detachPromiseRejectionHandler();\n this._unpatchFunctionToString();\n this._restoreBuiltIns();\n this._restoreConsole();\n\n Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n this._isRavenInstalled = false;\n\n return this;\n },\n\n /**\n * Callback used for `unhandledrejection` event\n *\n * @param {PromiseRejectionEvent} event An object containing\n * promise: the Promise that was rejected\n * reason: the value with which the Promise was rejected\n * @return void\n */\n _promiseRejectionHandler: function(event) {\n this._logDebug('debug', 'Raven caught unhandled promise rejection:', event);\n this.captureException(event.reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n });\n },\n\n /**\n * Installs the global promise rejection handler.\n *\n * @return {raven}\n */\n _attachPromiseRejectionHandler: function() {\n this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this);\n _window.addEventListener &&\n _window.addEventListener('unhandledrejection', this._promiseRejectionHandler);\n return this;\n },\n\n /**\n * Uninstalls the global promise rejection handler.\n *\n * @return {raven}\n */\n _detachPromiseRejectionHandler: function() {\n _window.removeEventListener &&\n _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler);\n return this;\n },\n\n /**\n * Manually capture an exception and send it over to Sentry\n *\n * @param {error} ex An exception to be logged\n * @param {object} options A specific set of options for this error [optional]\n * @return {Raven}\n */\n captureException: function(ex, options) {\n options = objectMerge({trimHeadFrames: 0}, options ? options : {});\n\n if (isErrorEvent(ex) && ex.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n ex = ex.error;\n } else if (isDOMError(ex) || isDOMException(ex)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException');\n var message = ex.message ? name + ': ' + ex.message : name;\n\n return this.captureMessage(\n message,\n objectMerge(options, {\n // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well\n // but it's barely any overhead so we may at least try\n stacktrace: true,\n trimHeadFrames: options.trimHeadFrames + 1\n })\n );\n } else if (isError(ex)) {\n // we have a real Error object\n ex = ex;\n } else if (isPlainObject(ex)) {\n // If it is plain Object, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n options = this._getCaptureExceptionOptionsFromPlainObject(options, ex);\n ex = new Error(options.message);\n } else {\n // If none of previous checks were valid, then it means that\n // it's not a DOMError/DOMException\n // it's not a plain Object\n // it's not a valid ErrorEvent (one with an error property)\n // it's not an Error\n // So bail out and capture it as a simple message:\n return this.captureMessage(\n ex,\n objectMerge(options, {\n stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace\n trimHeadFrames: options.trimHeadFrames + 1\n })\n );\n }\n\n // Store the raw exception object for potential debugging and introspection\n this._lastCapturedException = ex;\n\n // TraceKit.report will re-raise any exception passed to it,\n // which means you have to wrap it in try/catch. Instead, we\n // can wrap it here and only re-raise if TraceKit.report\n // raises an exception different from the one we asked to\n // report on.\n try {\n var stack = TraceKit.computeStackTrace(ex);\n this._handleStackInfo(stack, options);\n } catch (ex1) {\n if (ex !== ex1) {\n throw ex1;\n }\n }\n\n return this;\n },\n\n _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) {\n var exKeys = Object.keys(ex).sort();\n var options = objectMerge(currentOptions, {\n message:\n 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys),\n fingerprint: [md5(exKeys)],\n extra: currentOptions.extra || {}\n });\n options.extra.__serialized__ = serializeException(ex);\n\n return options;\n },\n\n /*\n * Manually send a message to Sentry\n *\n * @param {string} msg A plain message to be captured in Sentry\n * @param {object} options A specific set of options for this message [optional]\n * @return {Raven}\n */\n captureMessage: function(msg, options) {\n // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n // early call; we'll error on the side of logging anything called before configuration since it's\n // probably something you should see:\n if (\n !!this._globalOptions.ignoreErrors.test &&\n this._globalOptions.ignoreErrors.test(msg)\n ) {\n return;\n }\n\n options = options || {};\n msg = msg + ''; // Make sure it's actually a string\n\n var data = objectMerge(\n {\n message: msg\n },\n options\n );\n\n var ex;\n // Generate a \"synthetic\" stack trace from this point.\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n // or if it catches a thrown object without a \"stack\" property.\n try {\n throw new Error(msg);\n } catch (ex1) {\n ex = ex1;\n }\n\n // null exception name so `Error` isn't prefixed to msg\n ex.name = null;\n var stack = TraceKit.computeStackTrace(ex);\n\n // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n var initialCall = isArray(stack.stack) && stack.stack[1];\n\n // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call\n // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd\n // initialCall => captureException(string) => captureMessage(string)\n if (initialCall && initialCall.func === 'Raven.captureException') {\n initialCall = stack.stack[2];\n }\n\n var fileurl = (initialCall && initialCall.url) || '';\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n // Always attempt to get stacktrace if message is empty.\n // It's the only way to provide any helpful information to the user.\n if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\n options = objectMerge(\n {\n trimHeadFrames: 0\n },\n options\n );\n // Since we know this is a synthetic trace, the top frame (this function call)\n // MUST be from Raven.js, so mark it for trimming\n // We add to the trim counter so that callers can choose to trim extra frames, such\n // as utility functions.\n options.trimHeadFrames += 1;\n\n var frames = this._prepareFrames(stack, options);\n data.stacktrace = {\n // Sentry expects frames oldest to newest\n frames: frames.reverse()\n };\n }\n\n // Make sure that fingerprint is always wrapped in an array\n if (data.fingerprint) {\n data.fingerprint = isArray(data.fingerprint)\n ? data.fingerprint\n : [data.fingerprint];\n }\n\n // Fire away!\n this._send(data);\n\n return this;\n },\n\n captureBreadcrumb: function(obj) {\n var crumb = objectMerge(\n {\n timestamp: now() / 1000\n },\n obj\n );\n\n if (isFunction(this._globalOptions.breadcrumbCallback)) {\n var result = this._globalOptions.breadcrumbCallback(crumb);\n\n if (isObject(result) && !isEmptyObject(result)) {\n crumb = result;\n } else if (result === false) {\n return this;\n }\n }\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n this._breadcrumbs.shift();\n }\n return this;\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = [].slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the breadcrumbCallback option\n *\n * @param {function} callback The callback to run which allows filtering\n * or mutating breadcrumbs\n * @return {Raven}\n */\n setBreadcrumbCallback: function(callback) {\n var original = this._globalOptions.breadcrumbCallback;\n this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function() {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = _window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function(options) {\n if (\n !_document // doesn't work without a document (React native)\n )\n return;\n\n options = objectMerge(\n {\n eventId: this.lastEventId(),\n dsn: this._dsn,\n user: this._globalContext.user || {}\n },\n options\n );\n\n if (!options.eventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n if (!options.dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var encodedOptions = [];\n\n for (var key in options) {\n if (key === 'user') {\n var user = options.user;\n if (user.name) encodedOptions.push('name=' + encode(user.name));\n if (user.email) encodedOptions.push('email=' + encode(user.email));\n } else {\n encodedOptions.push(encode(key) + '=' + encode(options[key]));\n }\n }\n var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n var script = _document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n (_document.head || _document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function() {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function() {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument) return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n if (_document.createEvent) {\n evt = _document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = _document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options)\n if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (_document.createEvent) {\n // IE9 if standards\n _document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch (e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function(evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt) return;\n\n self._lastCapturedEvent = evt;\n\n // try/catch both:\n // - accessing evt.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = htmlTreeAsString(evt.target);\n } catch (e) {\n target = '<unknown>';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function(evt) {\n var target;\n try {\n target = evt.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (\n !tagName ||\n (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n )\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function() {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n _patchFunctionToString: function() {\n var self = this;\n self._originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = function() {\n if (typeof this === 'function' && this.__raven__) {\n return self._originalFunctionToString.apply(this.__orig__, arguments);\n }\n return self._originalFunctionToString.apply(this, arguments);\n };\n },\n\n _unpatchFunctionToString: function() {\n if (this._originalFunctionToString) {\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = this._originalFunctionToString;\n }\n },\n\n /**\n * Wrap timer functions and event targets to catch errors and provide\n * better metadata.\n */\n _instrumentTryCatch: function() {\n var self = this;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: orig.name || '<anonymous>'}\n }\n },\n originalCallback\n );\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(\n proto,\n 'addEventListener',\n function(orig) {\n return function(evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'handleEvent',\n handler: (fn && fn.name) || '<anonymous>'\n }\n }\n },\n fn.handleEvent\n );\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n var before, clickHandler, keypressHandler;\n\n if (\n autoBreadcrumbs &&\n autoBreadcrumbs.dom &&\n (global === 'EventTarget' || global === 'Node')\n ) {\n // NOTE: generating multiple handlers per addEventListener invocation, should\n // revisit and verify we can just use one (almost certainly)\n clickHandler = self._breadcrumbEventHandler('click');\n keypressHandler = self._keypressEventHandler();\n before = function(evt) {\n // need to intercept every DOM event in `before` argument, in case that\n // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n // see #724\n if (!evt) return;\n\n var eventType;\n try {\n eventType = evt.type;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n if (eventType === 'click') return clickHandler(evt);\n else if (eventType === 'keypress') return keypressHandler(evt);\n };\n }\n return orig.call(\n this,\n evtName,\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'addEventListener',\n handler: (fn && fn.name) || '<anonymous>'\n }\n }\n },\n fn,\n before\n ),\n capture,\n secure\n );\n };\n },\n wrappedBuiltIns\n );\n fill(\n proto,\n 'removeEventListener',\n function(orig) {\n return function(evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n } catch (e) {\n // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n }\n return orig.call(this, evt, fn, capture, secure);\n };\n },\n wrappedBuiltIns\n );\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n if (_window.requestAnimationFrame) {\n fill(\n _window,\n 'requestAnimationFrame',\n function(orig) {\n return function(cb) {\n return orig(\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'requestAnimationFrame',\n handler: (orig && orig.name) || '<anonymous>'\n }\n }\n },\n cb\n )\n );\n };\n },\n wrappedBuiltIns\n );\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload'\n ];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n },\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - XMLHttpRequests\n * - DOM interactions (click/typing)\n * - window.location changes\n * - console\n *\n * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n */\n _instrumentBreadcrumbs: function() {\n var self = this;\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: prop, handler: (orig && orig.name) || '<anonymous>'}\n }\n },\n orig\n );\n }); // intentionally don't track filled methods on XHR instances\n }\n }\n\n if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) {\n var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype;\n fill(\n xhrproto,\n 'open',\n function(origOpen) {\n return function(method, url) {\n // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n\n fill(\n xhrproto,\n 'send',\n function(origSend) {\n return function() {\n // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(\n xhr,\n 'onreadystatechange',\n function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'onreadystatechange',\n handler: (orig && orig.name) || '<anonymous>'\n }\n }\n },\n orig,\n onreadystatechangeHandler\n );\n } /* intentionally don't track this instrumentation */\n );\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n }\n\n if (autoBreadcrumbs.xhr && supportsFetch()) {\n fill(\n _window,\n 'fetch',\n function(origFetch) {\n return function() {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n } else if ('Request' in _window && fetchInput instanceof _window.Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n } else {\n url = '' + fetchInput;\n }\n\n // if Sentry key appears in URL, don't capture, as it's our own request\n if (url.indexOf(self._globalKey) !== -1) {\n return origFetch.apply(this, args);\n }\n\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n\n var fetchData = {\n method: method,\n url: url,\n status_code: null\n };\n\n return origFetch\n .apply(this, args)\n .then(function(response) {\n fetchData.status_code = response.status;\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData\n });\n\n return response;\n })\n ['catch'](function(err) {\n // if there is an error performing the request\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData,\n level: 'error'\n });\n\n throw err;\n });\n };\n },\n wrappedBuiltIns\n );\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (autoBreadcrumbs.dom && this._hasDocument) {\n if (_document.addEventListener) {\n _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n _document.addEventListener('keypress', self._keypressEventHandler(), false);\n } else if (_document.attachEvent) {\n // IE8 Compatibility\n _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n _document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = _window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushAndReplaceState =\n !isChromePackagedApp &&\n _window.history &&\n _window.history.pushState &&\n _window.history.replaceState;\n if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = _window.onpopstate;\n _window.onpopstate = function() {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n var historyReplacementFunction = function(origHistFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origHistFunction.apply(this, arguments);\n };\n };\n\n fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n }\n\n if (autoBreadcrumbs.console && 'console' in _window && console.log) {\n // console\n var consoleMethodCallback = function(msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n },\n\n _restoreBuiltIns: function() {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _restoreConsole: function() {\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsoleMethods) {\n this._originalConsole[method] = this._originalConsoleMethods[method];\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch (e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError(\n 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n );\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function(stackInfo, options) {\n options = options || {};\n options.mechanism = options.mechanism || {\n type: 'onerror',\n handled: false\n };\n\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo(stackInfo, options);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var frames = this._prepareFrames(stackInfo, options);\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames,\n options\n );\n },\n\n _prepareFrames: function(stackInfo, options) {\n var self = this;\n var frames = [];\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack, stackInfo.url);\n if (frame) {\n frames.push(frame);\n }\n });\n\n // e.g. frames captured via captureMessage throw\n if (options && options.trimHeadFrames) {\n for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n frames[j].in_app = false;\n }\n }\n }\n frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n return frames;\n },\n\n _normalizeFrame: function(frame, stackInfoUrl) {\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n function: frame.func || '?'\n };\n\n // Case when we don't have any information about the error\n // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n // Generating synthetic error doesn't add any value here\n //\n // We should probably somehow let a user know that they should fix their code\n if (!frame.url) {\n normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n }\n\n normalized.in_app = !// determine if an exception came from outside of our app\n // first we check the global includePaths list.\n (\n (!!this._globalOptions.includePaths.test &&\n !this._globalOptions.includePaths.test(normalized.filename)) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n if (\n !!this._globalOptions.ignoreErrors.test &&\n (this._globalOptions.ignoreErrors.test(message) ||\n this._globalOptions.ignoreErrors.test(prefixedMessage))\n ) {\n return;\n }\n\n var stacktrace;\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [\n {\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }\n ]\n };\n }\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n var data = objectMerge(\n {\n // sentry.interfaces.Exception\n exception: {\n values: [\n {\n type: type,\n value: message,\n stacktrace: stacktrace\n }\n ]\n },\n transaction: fileurl\n },\n options\n );\n\n var ex = data.exception.values[0];\n if (ex.type == null && ex.value === '') {\n ex.value = 'Unrecoverable error caught';\n }\n\n // Move mechanism from options to exception interface\n // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n // too much\n if (!data.exception.mechanism && data.mechanism) {\n data.exception.mechanism = data.mechanism;\n delete data.mechanism;\n }\n\n data.exception.mechanism = objectMerge(\n {\n type: 'generic',\n handled: true\n },\n data.exception.mechanism || {}\n );\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n var request = data.request;\n if (request) {\n if (request.url) {\n request.url = truncate(request.url, this._globalOptions.maxUrlLength);\n }\n if (request.Referer) {\n request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);\n }\n }\n\n if (data.breadcrumbs && data.breadcrumbs.values)\n this._trimBreadcrumbs(data.breadcrumbs);\n\n return data;\n },\n\n /**\n * Truncate breadcrumb values (right now just URLs)\n */\n _trimBreadcrumbs: function(breadcrumbs) {\n // known breadcrumb properties with urls\n // TODO: also consider arbitrary prop values that start with (https?)?://\n var urlProps = ['to', 'from', 'url'],\n urlProp,\n crumb,\n data;\n\n for (var i = 0; i < breadcrumbs.values.length; ++i) {\n crumb = breadcrumbs.values[i];\n if (\n !crumb.hasOwnProperty('data') ||\n !isObject(crumb.data) ||\n objectFrozen(crumb.data)\n )\n continue;\n\n data = objectMerge({}, crumb.data);\n for (var j = 0; j < urlProps.length; ++j) {\n urlProp = urlProps[j];\n if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength);\n }\n }\n breadcrumbs.values[i].data = data;\n }\n },\n\n _getHttpData: function() {\n if (!this._hasNavigator && !this._hasDocument) return;\n var httpData = {};\n\n if (this._hasNavigator && _navigator.userAgent) {\n httpData.headers = {\n 'User-Agent': _navigator.userAgent\n };\n }\n\n // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n if (_window.location && _window.location.href) {\n httpData.url = _window.location.href;\n }\n\n if (this._hasDocument && _document.referrer) {\n if (!httpData.headers) httpData.headers = {};\n httpData.headers.Referer = _document.referrer;\n }\n\n return httpData;\n },\n\n _resetBackoff: function() {\n this._backoffDuration = 0;\n this._backoffStart = null;\n },\n\n _shouldBackoff: function() {\n return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n },\n\n /**\n * Returns true if the in-process data payload matches the signature\n * of the previously-sent data\n *\n * NOTE: This has to be done at this level because TraceKit can generate\n * data from window.onerror WITHOUT an exception object (IE8, IE9,\n * other old browsers). This can take the form of an \"exception\"\n * data object with a single frame (derived from the onerror args).\n */\n _isRepeatData: function(current) {\n var last = this._lastData;\n\n if (\n !last ||\n current.message !== last.message || // defined for captureMessage\n current.transaction !== last.transaction // defined for captureException/onerror\n )\n return false;\n\n // Stacktrace interface (i.e. from captureMessage)\n if (current.stacktrace || last.stacktrace) {\n return isSameStacktrace(current.stacktrace, last.stacktrace);\n } else if (current.exception || last.exception) {\n // Exception interface (i.e. from captureException/onerror)\n return isSameException(current.exception, last.exception);\n } else if (current.fingerprint || last.fingerprint) {\n return Boolean(current.fingerprint && last.fingerprint) &&\n JSON.stringify(current.fingerprint) === JSON.stringify(last.fingerprint)\n }\n\n return true;\n },\n\n _setBackoffState: function(request) {\n // If we are already in a backoff state, don't change anything\n if (this._shouldBackoff()) {\n return;\n }\n\n var status = request.status;\n\n // 400 - project_id doesn't exist or some other fatal\n // 401 - invalid/revoked dsn\n // 429 - too many requests\n if (!(status === 400 || status === 401 || status === 429)) return;\n\n var retry;\n try {\n // If Retry-After is not in Access-Control-Expose-Headers, most\n // browsers will throw an exception trying to access it\n if (supportsFetch()) {\n retry = request.headers.get('Retry-After');\n } else {\n retry = request.getResponseHeader('Retry-After');\n }\n\n // Retry-After is returned in seconds\n retry = parseInt(retry, 10) * 1000;\n } catch (e) {\n /* eslint no-empty:0 */\n }\n\n this._backoffDuration = retry\n ? // If Sentry server returned a Retry-After value, use it\n retry\n : // Otherwise, double the last backoff duration (starts at 1 sec)\n this._backoffDuration * 2 || 1000;\n\n this._backoffStart = now();\n },\n\n _send: function(data) {\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n },\n httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n data = this._sanitizeData(data);\n\n // Cleanup empty properties before sending them to the server\n Object.keys(data).forEach(function(key) {\n if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) {\n delete data[key];\n }\n });\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (\n isFunction(globalOptions.shouldSendCallback) &&\n !globalOptions.shouldSendCallback(data)\n ) {\n return;\n }\n\n // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n // so drop requests until \"cool-off\" period has elapsed.\n if (this._shouldBackoff()) {\n this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n return;\n }\n\n if (typeof globalOptions.sampleRate === 'number') {\n if (Math.random() < globalOptions.sampleRate) {\n this._sendProcessedPayload(data);\n }\n } else {\n this._sendProcessedPayload(data);\n }\n },\n\n _sanitizeData: function(data) {\n return sanitize(data, this._globalOptions.sanitizeKeys);\n },\n\n _getUuid: function() {\n return uuid4();\n },\n\n _sendProcessedPayload: function(data, callback) {\n var self = this;\n var globalOptions = this._globalOptions;\n\n if (!this.isSetup()) return;\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n // but this would require copying an un-truncated copy of the data packet, which can be\n // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n this._logDebug('warn', 'Raven dropped repeat event: ', data);\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n // Store outbound payload after trim\n this._lastData = data;\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n\n // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n if (\n this._globalOptions.autoBreadcrumbs &&\n this._globalOptions.autoBreadcrumbs.sentry\n ) {\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.value\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n }\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._resetBackoff();\n\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n callback && callback();\n },\n onError: function failure(error) {\n self._logDebug('error', 'Raven transport failed to send: ', error);\n\n if (error.request) {\n self._setBackoffState(error.request);\n }\n\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n error = error || new Error('Raven send failed (no additional details provided)');\n callback && callback(error);\n }\n });\n },\n\n _makeRequest: function(opts) {\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n var url = opts.url + '?' + urlencode(opts.auth);\n\n var evaluatedHeaders = null;\n var evaluatedFetchParameters = {};\n\n if (opts.options.headers) {\n evaluatedHeaders = this._evaluateHash(opts.options.headers);\n }\n\n if (opts.options.fetchParameters) {\n evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n }\n\n if (supportsFetch()) {\n evaluatedFetchParameters.body = stringify(opts.data);\n\n var defaultFetchOptions = objectMerge({}, this._fetchDefaults);\n var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters);\n\n if (evaluatedHeaders) {\n fetchOptions.headers = evaluatedHeaders;\n }\n\n return _window\n .fetch(url, fetchOptions)\n .then(function(response) {\n if (response.ok) {\n opts.onSuccess && opts.onSuccess();\n } else {\n var error = new Error('Sentry error code: ' + response.status);\n // It's called request only to keep compatibility with XHR interface\n // and not add more redundant checks in setBackoffState method\n error.request = response;\n opts.onError && opts.onError(error);\n }\n })\n ['catch'](function() {\n opts.onError &&\n opts.onError(new Error('Sentry error code: network unavailable'));\n });\n }\n\n var request = _window.XMLHttpRequest && new _window.XMLHttpRequest();\n if (!request) return;\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function() {\n if (request.readyState !== 4) {\n return;\n } else if (request.status === 200) {\n opts.onSuccess && opts.onSuccess();\n } else if (opts.onError) {\n var err = new Error('Sentry error code: ' + request.status);\n err.request = request;\n opts.onError(err);\n }\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n if (opts.onSuccess) {\n request.onload = opts.onSuccess;\n }\n if (opts.onError) {\n request.onerror = function() {\n var err = new Error('Sentry error code: XDomainRequest');\n err.request = request;\n opts.onError(err);\n };\n }\n }\n\n request.open('POST', url);\n\n if (evaluatedHeaders) {\n each(evaluatedHeaders, function(key, value) {\n request.setRequestHeader(key, value);\n });\n }\n\n request.send(stringify(opts.data));\n },\n\n _evaluateHash: function(hash) {\n var evaluated = {};\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n var value = hash[key];\n evaluated[key] = typeof value === 'function' ? value() : value;\n }\n }\n\n return evaluated;\n },\n\n _logDebug: function(level) {\n // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n if (\n this._originalConsoleMethods[level] &&\n (this.debug || this._globalOptions.debug)\n ) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n","/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\nvar RavenConstructor = require('./raven');\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _Raven = _window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function() {\n _window.Raven = _Raven;\n return Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n\n/**\n * DISCLAIMER:\n *\n * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n *\n * It's called `Client' to be in-line with Raven Node implementation.\n *\n * HOWTO:\n *\n * import Raven from 'raven-js';\n *\n * const someAppReporter = new Raven.Client();\n * const someOtherAppReporter = new Raven.Client();\n *\n * someAppReporter.config('__DSN__', {\n * ...config goes here\n * });\n *\n * someOtherAppReporter.config('__OTHER_DSN__', {\n * ...config goes here\n * });\n *\n * someAppReporter.captureMessage(...);\n * someAppReporter.captureException(...);\n * someAppReporter.captureBreadcrumb(...);\n *\n * someOtherAppReporter.captureMessage(...);\n * someOtherAppReporter.captureException(...);\n * someOtherAppReporter.captureBreadcrumb(...);\n *\n * It should \"just work\".\n */\nmodule.exports.Client = RavenConstructor;\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayMethods = require('../internals/array-methods');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar internalFind = arrayMethods(5);\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return internalFind(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// 1 -> String#trimStart\n// 2 -> String#trimEnd\n// 3 -> String#trim\nmodule.exports = function (string, TYPE) {\n string = String(requireObjectCoercible(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar internalStringTrim = require('../internals/string-trim');\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\nvar NATIVE_TRIM = 'trim' in String.prototype;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, i, code;\n if (typeof it == 'string' && it.length > 2) {\n it = NATIVE_TRIM ? it.trim() : internalStringTrim(it, 3);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (i = 0; i < length; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(that); }) : classof(that) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), that, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// TO_ENTRIES: true -> Object.entries\n// TO_ENTRIES: false -> Object.values\nmodule.exports = function (it, TO_ENTRIES) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n};\n","function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArrayLimit(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return n}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}var getConstructor=function(e){return null!=e?e.constructor:null},instanceOf=function(e,t){return!!(e&&t&&e instanceof t)},isNullOrUndefined=function(e){return null==e},isObject=function(e){return getConstructor(e)===Object},isNumber=function(e){return getConstructor(e)===Number&&!Number.isNaN(e)},isString=function(e){return getConstructor(e)===String},isBoolean=function(e){return getConstructor(e)===Boolean},isFunction=function(e){return getConstructor(e)===Function},isArray=function(e){return Array.isArray(e)},isNodeList=function(e){return instanceOf(e,NodeList)},isElement=function(e){return instanceOf(e,Element)},isEvent=function(e){return instanceOf(e,Event)},isEmpty=function(e){return isNullOrUndefined(e)||(isString(e)||isArray(e)||isNodeList(e))&&!e.length||isObject(e)&&!Object.keys(e).length},is={nullOrUndefined:isNullOrUndefined,object:isObject,number:isNumber,string:isString,boolean:isBoolean,function:isFunction,array:isArray,nodeList:isNodeList,element:isElement,event:isEvent,empty:isEmpty},constants={facebook:{domain:\"facebook.com\",url:function(e){return\"https://graph.facebook.com/?id=\".concat(e,\"&fields=og_object{engagement}\")},shareCount:function(e){return e.og_object.engagement.count},popup:{width:640,height:360}},twitter:{domain:\"twitter.com\",url:function(){return null},shareCount:function(){return null},popup:{width:640,height:240}},pinterest:{domain:\"pinterest.com\",url:function(e){return\"https://widgets.pinterest.com/v1/urls/count.json?url=\".concat(e)},shareCount:function(e){return e.count},popup:{width:830,height:700}},github:{domain:\"github.com\",url:function(e,t){return\"https://api.github.com/repos/\".concat(e).concat(is.string(t)?\"?access_token=\".concat(t):\"\")},shareCount:function(e){return e.data.stargazers_count}},youtube:{domain:\"youtube.com\",url:function(e,t){return\"https://www.googleapis.com/youtube/v3/channels?part=statistics&id=\".concat(e,\"&key=\").concat(t)},shareCount:function(e){if(!is.empty(e.error))return null;var t=_slicedToArray(e.items,1)[0];return is.empty(t)?null:t.statistics.subscriberCount}}},defaults={debug:!1,wrapper:{className:\"shr\"},count:{className:\"shr__count\",displayZero:!1,format:!0,position:\"after\",increment:!0},tokens:{github:\"\",youtube:\"\"},storage:{enabled:!0,key:\"shr\",ttl:3e5}};function getJSONP(e){return new Promise(function(t,n){var r=\"jsonp_callback_\".concat(Math.round(1e5*Math.random())),o=document.createElement(\"script\");o.addEventListener(\"error\",function(e){return n(e)}),window[r]=function(e){delete window[r],document.body.removeChild(o),t(e)};var i=new URL(e);i.searchParams.set(\"callback\",r),o.setAttribute(\"src\",i.toString()),document.body.appendChild(o)})}var noop=function(){},Console=function(){function e(){var t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];_classCallCheck(this,e),this.enabled=window.console&&t,this.enabled&&this.log(\"Debugging enabled\")}return _createClass(e,[{key:\"log\",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):noop}},{key:\"warn\",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):noop}},{key:\"error\",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):noop}}]),e}();function matches(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function wrap(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach(function(e,n){var r=0<n?t.cloneNode(!0):t,o=e.parentNode,i=e.nextSibling;r.appendChild(e),i?o.insertBefore(r,i):o.appendChild(r)})}function setAttributes(e,t){!is.element(e)||is.empty(t)||Object.entries(t).filter(function(e){var t=_slicedToArray(e,2)[1];return!is.nullOrUndefined(t)}).forEach(function(t){var n=_slicedToArray(t,2),r=n[0],o=n[1];return e.setAttribute(r,o)})}function createElement(e,t,n){var r=document.createElement(e);return is.object(t)&&setAttributes(r,t),is.string(n)&&(r.innerText=n),r}function formatNumber(e){var t=/\\./.test(1.1.toLocaleString())?\".\":\",\",n=new RegExp(\"\\\\\".concat(t,\"\\\\d+$\"));return Math.round(e).toLocaleString().replace(n,\"\")}function extend(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;var o=n.shift();return is.object(o)?(Object.keys(o).forEach(function(t){is.object(o[t])?(!Object.keys(e).includes(t)&&Object.assign(e,_defineProperty({},t,{})),extend(e[t],o[t])):Object.assign(e,_defineProperty({},t,o[t]))}),extend.apply(void 0,[e].concat(n))):e}var Storage=function(){function e(t,n){var r=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];_classCallCheck(this,e),this.enabled=r&&e.supported,this.key=t,this.ttl=n}return _createClass(e,[{key:\"get\",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(is.empty(n))return null;var r=window.localStorage.getItem(\"\".concat(this.key,\"_ttl\"));if(is.empty(r)||r<Date.now())return null;var o=JSON.parse(n);return is.string(t)&&t.length?o[t]:o}},{key:\"set\",value:function(t){if(e.supported&&this.enabled&&is.object(t)){var n=this.get();is.empty(n)&&(n={}),extend(n,t),window.localStorage.setItem(this.key,JSON.stringify(n)),window.localStorage.setItem(\"\".concat(this.key,\"_ttl\"),Date.now()+this.ttl)}}}],[{key:\"supported\",get:function(){try{return\"localStorage\"in window&&(window.localStorage.setItem(\"___test\",\"___test\"),window.localStorage.removeItem(\"___test\"),!0)}catch(e){return!1}}}]),e}();function getDomain(e){var t=new URL(e).hostname,n=t.split(\".\"),r=n.length;return 2<r&&(t=\"\".concat(n[r-2],\".\").concat(n[r-1]),2===n[r-2].length&&2===n[r-1].length&&(t=\"\".concat(n[r-3],\".\").concat(t))),t}var Shr=function(){function e(t,n){var r=this;_classCallCheck(this,e),this.elements={count:null,trigger:null,popup:null},is.element(t)?this.elements.trigger=t:is.string(t)&&(this.elements.trigger=document.querySelector(t)),is.element(this.elements.trigger)&&is.empty(this.elements.trigger.shr)&&(this.config=extend({},defaults,n,{networks:constants}),this.console=new Console(this.config.debug),this.storage=new Storage(this.config.storage.key,this.config.storage.ttl,this.config.storage.enabled),this.getCount().then(function(e){return r.updateDisplay(e)}).catch(function(){}),this.listeners(!0),this.elements.trigger.shr=this)}return _createClass(e,[{key:\"destroy\",value:function(){this.listeners(!1)}},{key:\"listeners\",value:function(){var e=this,t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0]?\"addEventListener\":\"removeEventListener\";this.elements.trigger[t](\"click\",function(t){return e.share(t)},!1)}},{key:\"share\",value:function(e){var t=this;this.openPopup(e);var n=this.config.count.increment;this.getCount().then(function(e){return t.updateDisplay(e,n)}).catch(function(){})}},{key:\"openPopup\",value:function(e){if(!is.empty(this.network)&&this.networkConfig.popup){is.event(e)&&e.preventDefault();var t=this.networkConfig.popup,n=t.width,r=t.height,o=\"shr-popup--\".concat(this.network);if(this.popup&&!this.popup.closed)this.popup.focus(),this.console.log(\"Popup re-focused.\");else{var i=void 0===window.screenLeft?window.screen.left:window.screenLeft,s=void 0===window.screenTop?window.screen.top:window.screenTop,a=window.screen.width/2-n/2+i,c=window.screen.height/2-r/2+s;this.popup=window.open(this.href,o,\"top=\".concat(c,\",left=\").concat(a,\",width=\").concat(n,\",height=\").concat(r)),!this.popup||this.popup.closed||!is.boolean(this.popup.closed)?this.console.error(\"Popup blocked.\"):(this.popup.focus(),this.console.log(\"Popup opened.\"))}}}},{key:\"getCount\",value:function(){var e=this,t=!(0<arguments.length&&void 0!==arguments[0])||arguments[0];return new Promise(function(n,r){var o=e.apiUrl;if(is.empty(o))r(new Error(\"No URL available for \".concat(e.network,\".\")));else{if(t){var i=e.storage.get(e.target);if(!is.empty(i)&&Object.keys(i).includes(e.network)){var s=i[e.network];return n(is.number(s)?s:0),void e.console.log(\"getCount for '\".concat(e.target,\"' for '\").concat(e.network,\"' resolved from cache.\"))}}getJSONP(o).then(function(t){var r=0,o=e.elements.trigger.getAttribute(\"data-shr-display\");r=is.empty(o)?e.networkConfig.shareCount(t):t[o],is.empty(r)?r=0:(r=parseInt(r,10),!is.number(r)&&(r=0)),e.storage.set(_defineProperty({},e.target,_defineProperty({},e.network,r))),n(r)}).catch(r)}})}},{key:\"updateDisplay\",value:function(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],n=this.config,r=n.count,o=n.wrapper,i=t?e+1:e,s=r.position.toLowerCase();if(0<i||r.displayZero){var a=function(e){return Math.round(i/e*10)/10},c=formatNumber(i);r.format&&(1e6<i?c=\"\".concat(a(1e6),\"M\"):1e3<i&&(c=\"\".concat(a(1e3),\"K\"))),is.element(this.elements.count)?this.elements.count.textContent=c:(wrap(this.elements.trigger,createElement(\"span\",{class:o.className})),this.elements.count=createElement(\"span\",{class:\"\".concat(r.className,\" \").concat(r.className,\"--\").concat(s)},c),this.elements.trigger.insertAdjacentElement(\"after\"===s?\"afterend\":\"beforebegin\",this.elements.count))}}},{key:\"href\",get:function(){return is.element(this.elements.trigger)?this.elements.trigger.href:null}},{key:\"network\",get:function(){var e=this;if(!is.element(this.elements.trigger))return null;var t=this.config.networks;return Object.keys(t).find(function(n){return getDomain(e.href)===t[n].domain})}},{key:\"networkConfig\",get:function(){return is.empty(this.network)?null:this.config.networks[this.network]}},{key:\"target\",get:function(){if(is.empty(this.network))return null;var e=new URL(this.href);switch(this.network){case\"facebook\":return e.searchParams.get(\"u\");case\"github\":return e.pathname.substring(1);case\"youtube\":return e.pathname.split(\"/\").pop();default:return e.searchParams.get(\"url\")}}},{key:\"apiUrl\",get:function(){if(is.empty(this.network))return null;var e=this.config.tokens;switch(this.network){case\"github\":return this.networkConfig.url(this.target,e.github);case\"youtube\":return this.networkConfig.url(this.target,e.youtube);default:return this.networkConfig.url(encodeURIComponent(this.target))}}}],[{key:\"setup\",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(is.string(t)?r=Array.from(document.querySelectorAll(t)):is.element(t)?r=[t]:is.nodeList(t)?r=Array.from(t):is.array(t)&&(r=t.filter(is.element)),is.empty(r))return null;var o=Object.assign({},defaults,n);is.string(t)&&o.watch&&new MutationObserver(function(n){Array.from(n).forEach(function(n){Array.from(n.addedNodes).forEach(function(n){is.element(n)&&matches(n,t)&&new e(n,o)})})}).observe(document.body,{childList:!0,subtree:!0});return r.map(function(t){return new e(t,n)})}}]),e}();export default Shr;","var $ = require('../internals/export');\nvar objectToArray = require('../internals/object-to-array');\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return objectToArray(O, true);\n }\n});\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.github.io/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('every');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+\\-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){_defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var defaults={addCSS:!0,thumbWidth:15,watch:!0};function matches(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function trigger(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}var getConstructor=function(e){return null!=e?e.constructor:null},instanceOf=function(e,t){return!!(e&&t&&e instanceof t)},isNullOrUndefined=function(e){return null==e},isObject=function(e){return getConstructor(e)===Object},isNumber=function(e){return getConstructor(e)===Number&&!Number.isNaN(e)},isString=function(e){return getConstructor(e)===String},isBoolean=function(e){return getConstructor(e)===Boolean},isFunction=function(e){return getConstructor(e)===Function},isArray=function(e){return Array.isArray(e)},isNodeList=function(e){return instanceOf(e,NodeList)},isElement=function(e){return instanceOf(e,Element)},isEvent=function(e){return instanceOf(e,Event)},isEmpty=function(e){return isNullOrUndefined(e)||(isString(e)||isArray(e)||isNodeList(e))&&!e.length||isObject(e)&&!Object.keys(e).length},is={nullOrUndefined:isNullOrUndefined,object:isObject,number:isNumber,string:isString,boolean:isBoolean,function:isFunction,array:isArray,nodeList:isNodeList,element:isElement,event:isEvent,empty:isEmpty};function getDecimalPlaces(e){var t=\"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}function round(e,t){if(1>t){var n=getDecimalPlaces(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var RangeTouch=function(){function e(t,n){_classCallCheck(this,e),is.element(t)?this.element=t:is.string(t)&&(this.element=document.querySelector(t)),is.element(this.element)&&is.empty(this.element.rangeTouch)&&(this.config=_objectSpread2({},defaults,{},n),this.init())}return _createClass(e,[{key:\"init\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"none\",this.element.style.webKitUserSelect=\"none\",this.element.style.touchAction=\"manipulation\"),this.listeners(!0),this.element.rangeTouch=this)}},{key:\"destroy\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"\",this.element.style.webKitUserSelect=\"\",this.element.style.touchAction=\"\"),this.listeners(!1),this.element.rangeTouch=null)}},{key:\"listeners\",value:function(e){var t=this,n=e?\"addEventListener\":\"removeEventListener\";[\"touchstart\",\"touchmove\",\"touchend\"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:\"get\",value:function(t){if(!e.enabled||!is.event(t))return null;var n,r=t.target,i=t.changedTouches[0],o=parseFloat(r.getAttribute(\"min\"))||0,s=parseFloat(r.getAttribute(\"max\"))||100,u=parseFloat(r.getAttribute(\"step\"))||1,c=r.getBoundingClientRect(),a=100/c.width*(this.config.thumbWidth/2)/100;return 0>(n=100/c.width*(i.clientX-c.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*a:50<n&&(n+=2*(n-50)*a),o+round(n/100*(s-o),u)}},{key:\"set\",value:function(t){e.enabled&&is.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),trigger(t.target,\"touchend\"===t.type?\"change\":\"input\"))}}],[{key:\"setup\",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(is.empty(t)||is.string(t)?r=Array.from(document.querySelectorAll(is.string(t)?t:'input[type=\"range\"]')):is.element(t)?r=[t]:is.nodeList(t)?r=Array.from(t):is.array(t)&&(r=t.filter(is.element)),is.empty(r))return null;var i=_objectSpread2({},defaults,{},n);if(is.string(t)&&i.watch){var o=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){is.element(n)&&matches(n,t)&&new e(n,i)}))}))}));o.observe(document.body,{childList:!0,subtree:!0})}return r.map((function(t){return new e(t,n)}))}},{key:\"enabled\",get:function(){return\"ontouchstart\"in document.documentElement}}]),e}();export default RangeTouch;","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise);\n\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nconst isUrl = input => {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n } catch (e) {\n return false;\n }\n};\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element, delay) {\n setTimeout(() => {\n try {\n // eslint-disable-next-line no-param-reassign\n element.hidden = true;\n\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n\n // eslint-disable-next-line no-param-reassign\n element.hidden = false;\n } catch (e) {\n // Do nothing\n }\n }, delay);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isEdge: window.navigator.userAgent.includes('Edge'),\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n};\n\nexport default browser;\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport is from './is';\nimport { extend } from './objects';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new <element>\n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) {\n return;\n }\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) {\n return;\n }\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) {\n return;\n }\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = extend({}, existingAttributes);\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n // Get the parts and value\n const parts = stripped.split('=');\n const [key] = parts;\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.string(existing.class)) {\n attributes.class = `${existing.class} ${className}`;\n } else {\n attributes.class = className;\n }\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return extend(existing, attributes);\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n // eslint-disable-next-line no-param-reassign\n element.hidden = hide;\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return method.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, tabFocus = false) {\n if (!is.element(element)) {\n return;\n }\n\n // Set regular focus\n element.focus({ preventScroll: true });\n\n // If we want to mimic keyboard focus via tab\n if (tabFocus) {\n toggleClass(element, this.config.classNames.tabFocus);\n }\n}\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, playsinline) {\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari & Chrome only currently\n pip: (() => {\n if (browser.isIPhone) {\n return false;\n }\n\n // Safari\n // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n if (is.function(createElement('video').webkitSetPresentationMode)) {\n return true;\n }\n\n // Chrome\n // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n return true;\n }\n\n return false;\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n } catch (e) {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // <input type=\"range\"> Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: { ...detail, plyr: this,},\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach(item => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","// ==========================================================================\n// Style utils\n// ==========================================================================\n\nimport is from './is';\n\nexport function validateRatio(input) {\n if (!is.array(input) && (!is.string(input) || !input.includes(':'))) {\n return false;\n }\n\n const ratio = is.array(input) ? input : input.split(':');\n\n return ratio.map(Number).every(is.number);\n}\n\nexport function reduceAspectRatio(ratio) {\n if (!is.array(ratio) || !ratio.every(is.number)) {\n return null;\n }\n\n const [width, height] = ratio;\n const getDivider = (w, h) => (h === 0 ? w : getDivider(h, w % h));\n const divider = getDivider(width, height);\n\n return [width / divider, height / divider];\n}\n\nexport function getAspectRatio(input) {\n const parse = ratio => (validateRatio(ratio) ? ratio.split(':').map(Number) : null);\n // Try provided ratio\n let ratio = parse(input);\n\n // Get from config\n if (ratio === null) {\n ratio = parse(this.config.ratio);\n }\n\n // Get from embed\n if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) {\n ({ ratio } = this.embed);\n }\n\n // Get from HTML5 video\n if (ratio === null && this.isHTML5) {\n const { videoWidth, videoHeight } = this.media;\n ratio = reduceAspectRatio([videoWidth, videoHeight]);\n }\n\n return ratio;\n}\n\n// Set aspect ratio for responsive container\nexport function setAspectRatio(input) {\n if (!this.isVideo) {\n return {};\n }\n\n const { wrapper } = this.elements;\n const ratio = getAspectRatio.call(this, input);\n const [w, h] = is.array(ratio) ? ratio : [0, 0];\n const padding = (100 / w) * h;\n\n wrapper.style.paddingBottom = `${padding}%`;\n\n // For Vimeo we have an extra <div> to hide the standard controls and UI\n if (this.isVimeo && this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n this.media.style.transform = `translateY(-${offset}%)`;\n } else if (this.isHTML5) {\n wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null);\n }\n\n return { padding, ratio };\n}\n\nexport default { setAspectRatio };\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { setAspectRatio } from './utils/style';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter(source => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Whether we're forcing all options (e.g. for streaming)\n if (this.config.quality.forced) {\n return this.config.quality.options;\n }\n\n // Get sizes from <source> elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n setup() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set aspect ratio if fixed\n if (!is.empty(this.config.ratio)) {\n setAspectRatio.call(player);\n }\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(s => s.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n if (player.quality === input) {\n return;\n }\n\n // If we're using an an external handler...\n if (player.config.quality.forced && is.function(player.config.quality.onChange)) {\n player.config.quality.onChange(input);\n } else {\n // Get sources\n const sources = html5.getSources.call(player);\n // Get first match for requested size\n const source = sources.find(s => Number(s.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.speed = playbackRate;\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n player.play();\n }\n });\n\n // Load new source\n player.media.load();\n }\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(\n new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'),\n replace.toString(),\n );\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([k, v]) => {\n string = replaceAll(string, k, v);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text') {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) {\n return;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n } catch (e) {\n resolve(request.responseText);\n }\n } else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n\n // Set the required response type\n request.responseType = responseType;\n\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n // eslint-disable-next-line no-param-reassign\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","var $ = require('../internals/export');\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.github.io/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n trunc: function trunc(it) {\n return (it > 0 ? floor : ceil)(it);\n }\n});\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(undefined, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport RangeTouch from 'rangetouch';\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(\n `.${this.config.classNames.tooltip}`,\n );\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create <svg> icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n // Create <svg>\n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n 'aria-hidden': 'true',\n focusable: 'false',\n }),\n );\n\n // Create the <use> to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add <use> to <svg>\n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n const attributes = { ...attr, class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') };\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a <button>\n createButton(buttonType, attr) {\n const attributes = extend({}, attr);\n let type = toCamelCase(buttonType);\n\n const props = {\n element: 'button',\n toggle: false,\n label: null,\n icon: null,\n labelPressed: null,\n iconPressed: null,\n };\n\n ['element', 'icon', 'label'].forEach(key => {\n if (Object.keys(attributes).includes(key)) {\n props[key] = attributes[key];\n delete attributes[key];\n }\n });\n\n // Default to 'button' type to prevent form submission\n if (props.element === 'button' && !Object.keys(attributes).includes('type')) {\n attributes.type = 'button';\n }\n\n // Set class name\n if (Object.keys(attributes).includes('class')) {\n if (!attributes.class.split(' ').some(c => c === this.config.classNames.control)) {\n extend(attributes, {\n class: `${attributes.class} ${this.config.classNames.control}`,\n });\n }\n } else {\n attributes.class = this.config.classNames.control;\n }\n\n // Large play button\n switch (buttonType) {\n case 'play':\n props.toggle = true;\n props.label = 'play';\n props.labelPressed = 'pause';\n props.icon = 'play';\n props.iconPressed = 'pause';\n break;\n\n case 'mute':\n props.toggle = true;\n props.label = 'mute';\n props.labelPressed = 'unmute';\n props.icon = 'volume';\n props.iconPressed = 'muted';\n break;\n\n case 'captions':\n props.toggle = true;\n props.label = 'enableCaptions';\n props.labelPressed = 'disableCaptions';\n props.icon = 'captions-off';\n props.iconPressed = 'captions-on';\n break;\n\n case 'fullscreen':\n props.toggle = true;\n props.label = 'enterFullscreen';\n props.labelPressed = 'exitFullscreen';\n props.icon = 'enter-fullscreen';\n props.iconPressed = 'exit-fullscreen';\n break;\n\n case 'play-large':\n attributes.class += ` ${this.config.classNames.control}--overlaid`;\n type = 'play';\n props.label = 'play';\n props.icon = 'play';\n break;\n\n default:\n if (is.empty(props.label)) {\n props.label = type;\n }\n if (is.empty(props.icon)) {\n props.icon = buttonType;\n }\n }\n\n const button = createElement(props.element);\n\n // Setup toggle icon and labels\n if (props.toggle) {\n // Icon\n button.appendChild(\n controls.createIcon.call(this, props.iconPressed, {\n class: 'icon--pressed',\n }),\n );\n button.appendChild(\n controls.createIcon.call(this, props.icon, {\n class: 'icon--not-pressed',\n }),\n );\n\n // Label/Tooltip\n button.appendChild(\n controls.createLabel.call(this, props.labelPressed, {\n class: 'label--pressed',\n }),\n );\n button.appendChild(\n controls.createLabel.call(this, props.label, {\n class: 'label--not-pressed',\n }),\n );\n } else {\n button.appendChild(controls.createIcon.call(this, props.icon));\n button.appendChild(controls.createLabel.call(this, props.label));\n }\n\n // Merge and set attributes\n extend(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n setAttributes(button, attributes);\n\n // We have multiple play buttons\n if (type === 'play') {\n if (!is.array(this.elements.buttons[type])) {\n this.elements.buttons[type] = [];\n }\n\n this.elements.buttons[type].push(button);\n } else {\n this.elements.buttons[type] = button;\n }\n\n return button;\n },\n\n // Create an <input type='range'>\n createRange(type, attributes) {\n // Seek input\n const input = createElement(\n 'input',\n extend(\n getAttributesFromSelector(this.config.selectors.inputs[type]),\n {\n type: 'range',\n min: 0,\n max: 100,\n step: 0.01,\n value: 0,\n autocomplete: 'off',\n // A11y fixes for https://github.com/sampotts/plyr/issues/905\n role: 'slider',\n 'aria-label': i18n.get(type, this.config),\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': 0,\n },\n attributes,\n ),\n );\n\n this.elements.inputs[type] = input;\n\n // Set the fill for webkit now\n controls.updateRangeFill.call(this, input);\n\n // Improve support on touch devices\n RangeTouch.setup(input);\n\n return input;\n },\n\n // Create a <progress>\n createProgress(type, attributes) {\n const progress = createElement(\n 'progress',\n extend(\n getAttributesFromSelector(this.config.selectors.display[type]),\n {\n min: 0,\n max: 100,\n value: 0,\n role: 'progressbar',\n 'aria-hidden': true,\n },\n attributes,\n ),\n );\n\n // Create the label inside\n if (type !== 'volume') {\n progress.appendChild(createElement('span', null, '0'));\n\n const suffixKey = {\n played: 'played',\n buffer: 'buffered',\n }[type];\n const suffix = suffixKey ? i18n.get(suffixKey, this.config) : '';\n\n progress.innerText = `% ${suffix.toLowerCase()}`;\n }\n\n this.elements.display[type] = progress;\n\n return progress;\n },\n\n // Create time display\n createTime(type, attrs) {\n const attributes = getAttributesFromSelector(this.config.selectors.display[type], attrs);\n\n const container = createElement(\n 'div',\n extend(attributes, {\n class: `${attributes.class ? attributes.class : ''} ${this.config.classNames.display.time} `.trim(),\n 'aria-label': i18n.get(type, this.config),\n }),\n '00:00',\n );\n\n // Reference for updates\n this.elements.display[type] = container;\n\n return container;\n },\n\n // Bind keyboard shortcuts for a menu item\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n bindMenuItemShortcuts(menuItem, type) {\n // Navigate through menus via arrow keys and space\n on.call(\n this,\n menuItem,\n 'keydown keyup',\n event => {\n // We only care about space and ⬆️ ⬇️️ ➡️\n if (![32, 38, 39, 40].includes(event.which)) {\n return;\n }\n\n // Prevent play / seek\n event.preventDefault();\n event.stopPropagation();\n\n // We're just here to prevent the keydown bubbling\n if (event.type === 'keydown') {\n return;\n }\n\n const isRadioButton = matches(menuItem, '[role=\"menuitemradio\"]');\n\n // Show the respective menu\n if (!isRadioButton && [32, 39].includes(event.which)) {\n controls.showMenuPanel.call(this, type, true);\n } else {\n let target;\n\n if (event.which !== 32) {\n if (event.which === 40 || (isRadioButton && event.which === 39)) {\n target = menuItem.nextElementSibling;\n\n if (!is.element(target)) {\n target = menuItem.parentNode.firstElementChild;\n }\n } else {\n target = menuItem.previousElementSibling;\n\n if (!is.element(target)) {\n target = menuItem.parentNode.lastElementChild;\n }\n }\n\n setFocus.call(this, target, true);\n }\n }\n },\n false,\n );\n\n // Enter will fire a `click` event but we still need to manage focus\n // So we bind to keyup which fires after and set focus here\n on.call(this, menuItem, 'keyup', event => {\n if (event.which !== 13) {\n return;\n }\n\n controls.focusFirstMenuItem.call(this, null, true);\n });\n },\n\n // Create a settings menu item\n createMenuItem({ value, list, type, title, badge = null, checked = false }) {\n const attributes = getAttributesFromSelector(this.config.selectors.inputs[type]);\n\n const menuItem = createElement(\n 'button',\n extend(attributes, {\n type: 'button',\n role: 'menuitemradio',\n class: `${this.config.classNames.control} ${attributes.class ? attributes.class : ''}`.trim(),\n 'aria-checked': checked,\n value,\n }),\n );\n\n const flex = createElement('span');\n\n // We have to set as HTML incase of special characters\n flex.innerHTML = title;\n\n if (is.element(badge)) {\n flex.appendChild(badge);\n }\n\n menuItem.appendChild(flex);\n\n // Replicate radio button behaviour\n Object.defineProperty(menuItem, 'checked', {\n enumerable: true,\n get() {\n return menuItem.getAttribute('aria-checked') === 'true';\n },\n set(check) {\n // Ensure exclusivity\n if (check) {\n Array.from(menuItem.parentNode.children)\n .filter(node => matches(node, '[role=\"menuitemradio\"]'))\n .forEach(node => node.setAttribute('aria-checked', 'false'));\n }\n\n menuItem.setAttribute('aria-checked', check ? 'true' : 'false');\n },\n });\n\n this.listeners.bind(\n menuItem,\n 'click keyup',\n event => {\n if (is.keyboardEvent(event) && event.which !== 32) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n menuItem.checked = true;\n\n switch (type) {\n case 'language':\n this.currentTrack = Number(value);\n break;\n\n case 'quality':\n this.quality = value;\n break;\n\n case 'speed':\n this.speed = parseFloat(value);\n break;\n\n default:\n break;\n }\n\n controls.showMenuPanel.call(this, 'home', is.keyboardEvent(event));\n },\n type,\n false,\n );\n\n controls.bindMenuItemShortcuts.call(this, menuItem, type);\n\n list.appendChild(menuItem);\n },\n\n // Format a time for display\n formatTime(time = 0, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return time;\n }\n\n // Always display hours if duration is over an hour\n const forceHours = getHours(this.duration) > 0;\n\n return formatTime(time, forceHours, inverted);\n },\n\n // Update the displayed time\n updateTimeDisplay(target = null, time = 0, inverted = false) {\n // Bail if there's no element to display or the value isn't a number\n if (!is.element(target) || !is.number(time)) {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n target.innerText = controls.formatTime(time, inverted);\n },\n\n // Update volume UI and storage\n updateVolume() {\n if (!this.supported.ui) {\n return;\n }\n\n // Update range\n if (is.element(this.elements.inputs.volume)) {\n controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n }\n\n // Update mute state\n if (is.element(this.elements.buttons.mute)) {\n this.elements.buttons.mute.pressed = this.muted || this.volume === 0;\n }\n },\n\n // Update seek value and lower fill\n setRange(target, value = 0) {\n if (!is.element(target)) {\n return;\n }\n\n // eslint-disable-next-line\n target.value = value;\n\n // Webkit range fill\n controls.updateRangeFill.call(this, target);\n },\n\n // Update <progress> elements\n updateProgress(event) {\n if (!this.supported.ui || !is.event(event)) {\n return;\n }\n\n let value = 0;\n\n const setProgress = (target, input) => {\n const val = is.number(input) ? input : 0;\n const progress = is.element(target) ? target : this.elements.display.buffer;\n\n // Update value and label\n if (is.element(progress)) {\n progress.value = val;\n\n // Update text label inside\n const label = progress.getElementsByTagName('span')[0];\n if (is.element(label)) {\n label.childNodes[0].nodeValue = val;\n }\n }\n };\n\n if (event) {\n switch (event.type) {\n // Video playing\n case 'timeupdate':\n case 'seeking':\n case 'seeked':\n value = getPercentage(this.currentTime, this.duration);\n\n // Set seek range value only if it's a 'natural' time event\n if (event.type === 'timeupdate') {\n controls.setRange.call(this, this.elements.inputs.seek, value);\n }\n\n break;\n\n // Check buffer status\n case 'playing':\n case 'progress':\n setProgress(this.elements.display.buffer, this.buffered * 100);\n\n break;\n\n default:\n break;\n }\n }\n },\n\n // Webkit polyfill for lower fill range\n updateRangeFill(target) {\n // Get range from event if event passed\n const range = is.event(target) ? target.target : target;\n\n // Needs to be a valid <input type='range'>\n if (!is.element(range) || range.getAttribute('type') !== 'range') {\n return;\n }\n\n // Set aria values for https://github.com/sampotts/plyr/issues/905\n if (matches(range, this.config.selectors.inputs.seek)) {\n range.setAttribute('aria-valuenow', this.currentTime);\n const currentTime = controls.formatTime(this.currentTime);\n const duration = controls.formatTime(this.duration);\n const format = i18n.get('seekLabel', this.config);\n range.setAttribute(\n 'aria-valuetext',\n format.replace('{currentTime}', currentTime).replace('{duration}', duration),\n );\n } else if (matches(range, this.config.selectors.inputs.volume)) {\n const percent = range.value * 100;\n range.setAttribute('aria-valuenow', percent);\n range.setAttribute('aria-valuetext', `${percent.toFixed(1)}%`);\n } else {\n range.setAttribute('aria-valuenow', range.value);\n }\n\n // WebKit only\n if (!browser.isWebkit) {\n return;\n }\n\n // Set CSS custom property\n range.style.setProperty('--value', `${(range.value / range.max) * 100}%`);\n },\n\n // Update hover tooltip for seeking\n updateSeekTooltip(event) {\n // Bail if setting not true\n if (\n !this.config.tooltips.seek ||\n !is.element(this.elements.inputs.seek) ||\n !is.element(this.elements.display.seekTooltip) ||\n this.duration === 0\n ) {\n return;\n }\n\n const visible = `${this.config.classNames.tooltip}--visible`;\n const toggle = show => toggleClass(this.elements.display.seekTooltip, visible, show);\n\n // Hide on touch\n if (this.touch) {\n toggle(false);\n return;\n }\n\n // Determine percentage, if already visible\n let percent = 0;\n const clientRect = this.elements.progress.getBoundingClientRect();\n\n if (is.event(event)) {\n percent = (100 / clientRect.width) * (event.pageX - clientRect.left);\n } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n } else {\n return;\n }\n\n // Set bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Display the time a click would seek to\n controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, (this.duration / 100) * percent);\n\n // Set position\n this.elements.display.seekTooltip.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n if (this.duration >= 2 ** 32) {\n toggleHidden(this.elements.display.currentTime, true);\n toggleHidden(this.elements.progress, true);\n return;\n }\n\n // Update ARIA values\n if (is.element(this.elements.inputs.seek)) {\n this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleMenuButton(setting, toggle) {\n toggleHidden(this.elements.settings.buttons[setting], !toggle);\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panels[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n } else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('[role=\"menu\"]');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panels.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = quality => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach(quality => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.buttons.loop, false);\n toggleHidden(this.elements.settings.panels.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleMenuButton.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.captions)) {\n return;\n }\n\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n const tracks = captions.getTracks.call(this);\n const toggle = Boolean(tracks.length);\n\n // Toggle the pane and tab\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!toggle) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.speed)) {\n return;\n }\n\n const type = 'speed';\n const list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');\n\n // Filter out invalid speeds\n this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Create items\n this.options.speed.forEach(speed => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { buttons } = this.elements.settings;\n const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Focus the first menu item in a given (or visible) menu\n focusFirstMenuItem(pane, tabFocus = false) {\n if (this.elements.settings.popup.hidden) {\n return;\n }\n\n let target = pane;\n\n if (!is.element(target)) {\n target = Object.values(this.elements.settings.panels).find(p => !p.hidden);\n }\n\n const firstItem = target.querySelector('[role^=\"menuitem\"]');\n\n setFocus.call(this, firstItem, tabFocus);\n },\n\n // Show/hide menu\n toggleMenu(input) {\n const { popup } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(popup) || !is.element(button)) {\n return;\n }\n\n // True toggle by default\n const { hidden } = popup;\n let show = hidden;\n\n if (is.boolean(input)) {\n show = input;\n } else if (is.keyboardEvent(input) && input.which === 27) {\n show = false;\n } else if (is.event(input)) {\n // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n // Element in the shadowDOM. The path, if available, is complete.\n const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target;\n const isMenuItem = popup.contains(target);\n\n // If the click was inside the menu or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && input.target !== button && show)) {\n return;\n }\n }\n\n // Set button attributes\n button.setAttribute('aria-expanded', show);\n\n // Show the actual popup\n toggleHidden(popup, !show);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n // Focus the first item if key interaction\n if (show && is.keyboardEvent(input)) {\n controls.focusFirstMenuItem.call(this, null, true);\n } else if (!show && !hidden) {\n // If closing, re-focus the button\n setFocus.call(this, button, is.keyboardEvent(input));\n }\n },\n\n // Get the natural size of a menu panel\n getMenuSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Show a panel in the menu\n showMenuPanel(type = '', tabFocus = false) {\n const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\n // Nothing to show, bail\n if (!is.element(target)) {\n return;\n }\n\n // Hide all other panels\n const container = target.parentNode;\n const current = Array.from(container.children).find(node => !node.hidden);\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getMenuSize.call(this, target);\n\n // Restore auto height/width\n const restore = event => {\n // We're only bothered about height and width on the container\n if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n\n // Set attributes on target\n toggleHidden(target, false);\n\n // Focus the first item\n controls.focusFirstMenuItem.call(this, target, tabFocus);\n },\n\n // Set the download URL\n setDownloadUrl() {\n const button = this.elements.buttons.download;\n\n // Bail if no button\n if (!is.element(button)) {\n return;\n }\n\n // Set attribute\n button.setAttribute('href', this.download);\n },\n\n // Build the default HTML\n create(data) {\n const {\n bindMenuItemShortcuts,\n createButton,\n createProgress,\n createRange,\n createTime,\n setQualityMenu,\n setSpeedMenu,\n showMenuPanel,\n } = controls;\n this.elements.controls = null;\n\n // Larger overlaid play button\n if (this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(createButton.call(this, 'play-large'));\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n this.elements.controls = container;\n\n // Default item attributes\n const defaultAttributes = { class: 'plyr__controls__item' };\n\n // Loop through controls in order\n dedupe(this.config.controls).forEach(control => {\n // Restart button\n if (control === 'restart') {\n container.appendChild(createButton.call(this, 'restart', defaultAttributes));\n }\n\n // Rewind button\n if (control === 'rewind') {\n container.appendChild(createButton.call(this, 'rewind', defaultAttributes));\n }\n\n // Play/Pause button\n if (control === 'play') {\n container.appendChild(createButton.call(this, 'play', defaultAttributes));\n }\n\n // Fast forward button\n if (control === 'fast-forward') {\n container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes));\n }\n\n // Progress\n if (control === 'progress') {\n const progressContainer = createElement('div', {\n class: `${defaultAttributes.class} plyr__progress__container`,\n });\n\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n progress.appendChild(\n createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n }),\n );\n\n // Buffer progress\n progress.appendChild(createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n progressContainer.appendChild(this.elements.progress);\n container.appendChild(progressContainer);\n }\n\n // Media current time display\n if (control === 'current-time') {\n container.appendChild(createTime.call(this, 'currentTime', defaultAttributes));\n }\n\n // Media duration display\n if (control === 'duration') {\n container.appendChild(createTime.call(this, 'duration', defaultAttributes));\n }\n\n // Volume controls\n if (control === 'mute' || control === 'volume') {\n let { volume } = this.elements;\n\n // Create the volume container if needed\n if (!is.element(volume) || !container.contains(volume)) {\n volume = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__volume`.trim(),\n }),\n );\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle mute button\n if (control === 'mute') {\n volume.appendChild(createButton.call(this, 'mute'));\n }\n\n // Volume range control\n // Ignored on iOS as it's handled globally\n // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n if (control === 'volume' && !browser.isIos) {\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n volume.appendChild(\n createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n ),\n );\n }\n }\n\n // Toggle captions button\n if (control === 'captions') {\n container.appendChild(createButton.call(this, 'captions', defaultAttributes));\n }\n\n // Settings button / menu\n if (control === 'settings' && !is.empty(this.config.settings)) {\n const wrapper = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__menu`.trim(),\n hidden: '',\n }),\n );\n\n wrapper.appendChild(\n createButton.call(this, 'settings', {\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const popup = createElement('div', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n });\n\n // Create the menu\n const menu = createElement('div', {\n role: 'menu',\n });\n\n home.appendChild(menu);\n inner.appendChild(home);\n this.elements.settings.panels.home = home;\n\n // Build the menu items\n this.config.settings.forEach(type => {\n // TODO: bundle this with the createMenuItem helper and bindings\n const menuItem = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n role: 'menuitem',\n 'aria-haspopup': true,\n hidden: '',\n }),\n );\n\n // Bind menu shortcuts for keyboard users\n bindMenuItemShortcuts.call(this, menuItem, type);\n\n // Show menu on click\n on.call(this, menuItem, 'click', () => {\n showMenuPanel.call(this, type, false);\n });\n\n const flex = createElement('span', null, i18n.get(type, this.config));\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n flex.appendChild(value);\n menuItem.appendChild(flex);\n menu.appendChild(menuItem);\n\n // Build the panes\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n });\n\n // Back button\n const backButton = createElement('button', {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n });\n\n // Visible label\n backButton.appendChild(\n createElement(\n 'span',\n {\n 'aria-hidden': true,\n },\n i18n.get(type, this.config),\n ),\n );\n\n // Screen reader label\n backButton.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.hidden,\n },\n i18n.get('menuBack', this.config),\n ),\n );\n\n // Go back via keyboard\n on.call(\n this,\n pane,\n 'keydown',\n event => {\n // We only care about <-\n if (event.which !== 37) {\n return;\n }\n\n // Prevent seek\n event.preventDefault();\n event.stopPropagation();\n\n // Show the respective menu\n showMenuPanel.call(this, 'home', true);\n },\n false,\n );\n\n // Go back via button click\n on.call(this, backButton, 'click', () => {\n showMenuPanel.call(this, 'home', false);\n });\n\n // Add to pane\n pane.appendChild(backButton);\n\n // Menu\n pane.appendChild(\n createElement('div', {\n role: 'menu',\n }),\n );\n\n inner.appendChild(pane);\n\n this.elements.settings.buttons[type] = menuItem;\n this.elements.settings.panels[type] = pane;\n });\n\n popup.appendChild(inner);\n wrapper.appendChild(popup);\n container.appendChild(wrapper);\n\n this.elements.settings.popup = popup;\n this.elements.settings.menu = wrapper;\n }\n\n // Picture in picture button\n if (control === 'pip' && support.pip) {\n container.appendChild(createButton.call(this, 'pip', defaultAttributes));\n }\n\n // Airplay button\n if (control === 'airplay' && support.airplay) {\n container.appendChild(createButton.call(this, 'airplay', defaultAttributes));\n }\n\n // Download button\n if (control === 'download') {\n const attributes = extend({}, defaultAttributes, {\n element: 'a',\n href: this.download,\n target: '_blank',\n });\n\n // Set download attribute for HTML5 only\n if (this.isHTML5) {\n attributes.download = '';\n }\n\n const { download } = this.config.urls;\n\n if (!is.url(download) && this.isEmbed) {\n extend(attributes, {\n icon: `logo-${this.provider}`,\n label: this.provider,\n });\n }\n\n container.appendChild(createButton.call(this, 'download', attributes));\n }\n\n // Toggle fullscreen button\n if (control === 'fullscreen') {\n container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes));\n }\n });\n\n // Set available quality levels\n if (this.isHTML5) {\n setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n // If function, run it and use output\n if (is.function(this.config.controls)) {\n this.config.controls = this.config.controls.call(this, props);\n }\n\n // Convert falsy controls to empty array (primarily for empty strings)\n if (!this.config.controls) {\n this.config.controls = [];\n }\n\n if (is.element(this.config.controls) || is.string(this.config.controls)) {\n // HTMLElement or Non-empty string passed as the option\n container = this.config.controls;\n } else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = input => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n } else if (is.element(container)) {\n container.innerHTML = replace(container.innerHTML);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n target[insertMethod]('afterbegin', container);\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Add pressed property to buttons\n if (!is.empty(this.elements.buttons)) {\n const addProperty = button => {\n const className = this.config.classNames.controlPressed;\n Object.defineProperty(button, 'pressed', {\n enumerable: true,\n get() {\n return hasClass(button, className);\n },\n set(pressed = false) {\n toggleClass(button, className, pressed);\n },\n });\n };\n\n // Toggle classname when pressed property is set\n Object.values(this.elements.buttons)\n .filter(Boolean)\n .forEach(button => {\n if (is.array(button) || is.nodeList(button)) {\n Array.from(button)\n .filter(Boolean)\n .forEach(addProperty);\n } else {\n addProperty(button);\n }\n });\n }\n\n // Edge sometimes doesn't finish the paint so force a repaint\n if (browser.isEdge) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach(label => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n });\n }\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {String} input - the URL to be parsed\n * @param {Boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls) &&\n this.config.controls.includes('settings') &&\n this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach(track => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null &&\n url.hostname !== window.location.href.hostname &&\n ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then(blob => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n const languages = dedupe(browserLanguages.map(language => language.split('-')[0]));\n let language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions');\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks\n .filter(track => !meta.get(track))\n .forEach(track => {\n this.debug.log('Track added', track);\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n // eslint-disable-next-line no-param-reassign\n track.mode = 'hidden';\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n\n // Update available languages in list\n if ((is.array(this.config.controls) && this.config.controls.includes('settings'))\n && this.config.settings.includes('captions')) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle button if it's enabled\n if (this.elements.buttons.captions) {\n this.elements.buttons.captions.pressed = active;\n }\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n\n languages.every(language => {\n track = sorted.find(t => t.language === language);\n return !track; // Break iteration if there is a match\n });\n\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Allow inline playback on iOS (this effects YouTube/Vimeo - HTML5 requires the attribute present)\n // TODO: Remove iosNative fullscreen option in favour of this (logic needs work)\n playsinline: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Force an aspect ratio\n // The format must be `'w:h'` (e.g. `'16:9'`)\n ratio: null,\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.5.10/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n // The options to display in the UI, if available for the source media\n options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n forced: false,\n onChange: null,\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback using full viewport/window\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n // 'duration',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n // 'download',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n seekLabel: '{currentTime} of {duration}',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n download: 'Download',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n pip: 'PIP',\n menuBack: 'Go back to previous menu',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n download: null,\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/v2/video/{0}.json',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n download: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'download',\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n\n // Quality\n 'qualitychange',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n download: '[data-plyr=\"download\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n controlPressed: 'plyr__control--pressed',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isIos: 'plyr--is-ios',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n display: {\n time: 'plyr__time',\n },\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n tabFocus: 'plyr__tab-focus',\n previewThumbnails: {\n // Tooltip thumbs\n thumbContainer: 'plyr__preview-thumb',\n thumbContainerShown: 'plyr__preview-thumb--is-shown',\n imageContainer: 'plyr__preview-thumb__image-container',\n timeContainer: 'plyr__preview-thumb__time-container',\n // Scrubbing\n scrubbingContainer: 'plyr__preview-scrubbing',\n scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown',\n },\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n },\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n tagUrl: '',\n },\n\n // Preview Thumbnails plugin\n previewThumbnails: {\n enabled: false,\n src: '',\n },\n\n // Vimeo plugin\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: false,\n // These settings require a pro or premium account to work\n sidedock: false,\n controls: false,\n // Custom settings from Plyr\n referrerPolicy: null, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n },\n\n // YouTube plugin\n youtube: {\n noCookie: false, // Whether to use an alternative version of YouTube without cookies\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr states\n// ==========================================================================\n\nexport const pip = {\n active: 'picture-in-picture',\n inactive: 'inline',\n};\n\nexport default { pip };\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {String} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nconst noop = () => {};\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n\n get warn() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n\n get error() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// https://webkit.org/blog/7929/designing-websites-for-iphone-x/\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { getElements, hasClass, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Force the use of 'full window/browser' rather than fullscreen\n this.forceFallback = player.config.fullscreen.fallback === 'force';\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n this.onChange();\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', event => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.toggle();\n });\n\n // Tap focus when in fullscreen\n on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event));\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get native() {\n return !!(\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n );\n }\n\n // If we're actually using native\n get usingNative() {\n return Fullscreen.native && !this.forceFallback;\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) {\n return '';\n }\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some(pre => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is enabled\n get enabled() {\n return (\n (Fullscreen.native || this.player.config.fullscreen.fallback) &&\n this.player.config.fullscreen.enabled &&\n this.player.supported.ui &&\n this.player.isVideo\n );\n }\n\n // Get active state\n get active() {\n if (!this.enabled) {\n return false;\n }\n\n // Fallback using classname\n if (!Fullscreen.native || this.forceFallback) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];\n\n return element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.container;\n }\n\n onChange() {\n if (!this.enabled) {\n return;\n }\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n button.pressed = this.active;\n }\n\n // Trigger an event\n triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n }\n\n toggleFallback(toggle = false) {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX || 0,\n y: window.scrollY || 0,\n };\n } else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Force full viewport on iPhone X+\n if (browser.isIos) {\n let viewport = document.head.querySelector('meta[name=\"viewport\"]');\n const property = 'viewport-fit=cover';\n\n // Inject the viewport meta if required\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n }\n\n // Check if the property already exists\n const hasProperty = is.string(viewport.content) && viewport.content.includes(property);\n\n if (toggle) {\n this.cleanupViewport = !hasProperty;\n\n if (!hasProperty) {\n viewport.content += `,${property}`;\n }\n } else if (this.cleanupViewport) {\n viewport.content = viewport.content\n .split(',')\n .filter(part => part.trim() !== property)\n .join(',');\n }\n }\n\n // Toggle button and fire events\n this.onChange();\n }\n\n // Trap focus inside container\n trapFocus(event) {\n // Bail if iOS, not active, not the tab key\n if (browser.isIos || !this.active || event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = document.activeElement;\n const focusable = getElements.call(\n this.player,\n 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]',\n );\n const [first] = focusable;\n const last = focusable[focusable.length - 1];\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n }\n\n // Update UI\n update() {\n if (this.enabled) {\n let mode;\n\n if (this.forceFallback) {\n mode = 'Fallback (forced)';\n } else if (Fullscreen.native) {\n mode = 'Native';\n } else {\n mode = 'Fallback';\n }\n\n this.player.debug.log(`${mode} fullscreen enabled`);\n } else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n }\n\n // Make an element fullscreen\n enter() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitEnterFullscreen();\n } else if (!Fullscreen.native || this.forceFallback) {\n this.toggleFallback(true);\n } else if (!this.prefix) {\n this.target.requestFullscreen({ navigationUI: 'hide' });\n } else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n }\n\n // Bail from fullscreen\n exit() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitExitFullscreen();\n this.player.play();\n } else if (!Fullscreen.native || this.forceFallback) {\n this.toggleFallback(false);\n } else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n } else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n }\n\n // Toggle state\n toggle() {\n if (!this.active) {\n this.enter();\n } else {\n this.exit();\n }\n }\n}\n\nexport default Fullscreen;\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport support from './support';\nimport browser from './utils/browser';\nimport { getElement, toggleClass } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadImage from './utils/load-image';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n } else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add iOS class\n toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n }\n\n // If there's a play button, set label\n Array.from(this.elements.buttons.play || []).forEach(button => {\n button.setAttribute('aria-label', label);\n });\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('poster', poster);\n\n // HTML5 uses native poster attribute\n if (this.isHTML5) {\n return Promise.resolve(poster);\n }\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch(err => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw err;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n\n ui.togglePoster.call(this, true);\n\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set state\n Array.from(this.elements.buttons.play || []).forEach(target => {\n Object.assign(target, { pressed: this.playing });\n target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config));\n });\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(\n () => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n },\n this.loading ? 250 : 0,\n );\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls: controlsElement } = this.elements;\n\n if (controlsElement && this.config.hideControls) {\n // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();\n\n // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n this.toggleControls(\n Boolean(\n force ||\n this.loading ||\n this.paused ||\n controlsElement.pressed ||\n controlsElement.hover ||\n recentTouchSeek,\n ),\n );\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { getAspectRatio, setAspectRatio } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.setTabFocus = this.setTabFocus.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.which === 32 && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keycodes should we prevent default\n const preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79];\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n player.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n player.forward();\n break;\n\n case 37:\n // Arrow back\n player.rewind();\n break;\n\n case 70:\n // F key\n player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n player.loop = !player.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n }\n\n setTabFocus(event) {\n const { player } = this;\n const { elements } = player;\n\n clearTimeout(this.focusTimer);\n\n // Ignore any key other than tab\n if (event.type === 'keydown' && event.which !== 9) {\n return;\n }\n\n // Store reference to event timeStamp\n if (event.type === 'keydown') {\n this.lastKeyDown = event.timeStamp;\n }\n\n // Remove current classes\n const removeCurrent = () => {\n const className = player.config.classNames.tabFocus;\n const current = getElements.call(player, `.${className}`);\n toggleClass(current, className, false);\n };\n\n // Determine if a key was pressed to trigger this event\n const wasKeyDown = event.timeStamp - this.lastKeyDown <= 20;\n\n // Ignore focus events if a key was pressed prior\n if (event.type === 'focus' && !wasKeyDown) {\n return;\n }\n\n // Remove all current\n removeCurrent();\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n this.focusTimer = setTimeout(() => {\n const focused = document.activeElement;\n\n // Ignore if current focus element isn't inside the player\n if (!elements.container.contains(focused)) {\n return;\n }\n\n toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n }, 10);\n }\n\n // Global window & document listeners\n global(toggle = true) {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n\n // Tab focus detection\n toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true);\n }\n\n // Container listeners\n container() {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n event => {\n const { controls: controlsElement } = elements;\n\n // Remove button states for fullscreen\n if (controlsElement && event.type === 'enterfullscreen') {\n controlsElement.pressed = false;\n controlsElement.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Set a gutter for Vimeo\n const setGutter = (ratio, padding, toggle) => {\n if (!player.isVimeo) {\n return;\n }\n\n const target = player.elements.wrapper.firstChild;\n const [, y] = ratio;\n const [videoX, videoY] = getAspectRatio.call(player);\n\n target.style.maxWidth = toggle ? `${(y / videoY) * videoX}px` : null;\n target.style.margin = toggle ? '0 auto' : null;\n };\n\n // Resize on fullscreen change\n const setPlayerSize = measure => {\n // If we don't need to measure the viewport\n if (!measure) {\n return setAspectRatio.call(player);\n }\n\n const rect = elements.container.getBoundingClientRect();\n const { width, height } = rect;\n\n return setAspectRatio.call(player, `${width}:${height}`);\n };\n\n const resized = () => {\n clearTimeout(timers.resized);\n timers.resized = setTimeout(setPlayerSize, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', event => {\n const { target, usingNative } = player.fullscreen;\n\n // Ignore events not from target\n if (target !== elements.container) {\n return;\n }\n\n // If it's not an embed and no ratio specified\n if (!player.isEmbed && is.empty(player.config.ratio)) {\n return;\n }\n\n const isEnter = event.type === 'enterfullscreen';\n // Set the player size when entering fullscreen to viewport size\n const { padding, ratio } = setPlayerSize(isEnter);\n\n // Set Vimeo gutter\n setGutter(ratio, padding, isEnter);\n\n // If not using native fullscreen, we need to check for resizes of viewport\n if (!usingNative) {\n if (isEnter) {\n on.call(player, window, 'resize', resized);\n } else {\n off.call(player, window, 'resize', resized);\n }\n }\n });\n }\n\n // Listen for media events\n media() {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event),\n );\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n\n // Call pause otherwise IE11 will start playing the video again\n player.pause();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event),\n );\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event),\n );\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', event => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(event, player.play, 'play');\n } else {\n this.proxy(event, player.togglePlay, 'play');\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadUrl.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, event => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n }\n\n // Run default and custom handlers\n proxy(event, defaultHandler, customHandlerKey) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned !== false && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n }\n\n // Trigger custom and default handlers\n bind(element, type, defaultHandler, customHandlerKey, passive = true) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n }\n\n // Listen for control events\n controls() {\n const { player } = this;\n const { elements } = player;\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach(button => {\n this.bind(button, 'click', player.togglePlay, 'play');\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind');\n\n // Rewind\n this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward');\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(\n elements.buttons.settings,\n 'click',\n event => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n event.preventDefault();\n\n controls.toggleMenu.call(player, event);\n },\n null,\n false\n ); // Can't be passive as we're preventing default\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n event => {\n const code = event.which;\n\n // We only care about space and return\n if (![13, 32].includes(code)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (code === 13) {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', event => {\n if (event.which === 27) {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', event => {\n const rect = elements.progress.getBoundingClientRect();\n const percent = (100 / rect.width) * (event.pageX - rect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n const code = event.keyCode ? event.keyCode : event.which;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && code !== 39 && code !== 37) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n player.play();\n } else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an <input type=\"range\">,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event),\n );\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave touchend click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in <input type=\"range\"> for webkit\n if (browser.isWebkit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(element => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n event => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', event => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n event => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathname = path.replace(/[\\?|#].*$/, ''),\n pathStripped = path.replace(/^(css|img)!/, ''),\n isLegacyIECss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(pathname)) {\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped;\n\n // tag IE9+\n isLegacyIECss = 'hideFocus' in e;\n\n // use preload in IE Edge (to detect load errors)\n if (isLegacyIECss && e.relList) {\n isLegacyIECss = 0;\n e.rel = 'preload';\n e.as = 'style';\n }\n } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // treat empty stylesheets as failures to get around lack of onerror\n // support in IE9-11\n if (isLegacyIECss) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n } else if (e.rel == 'preload' && e.as == 'style') {\n // activate preloaded stylesheets\n return e.rel = 'stylesheet'; // jshint ignore:line\n }\n \n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n * callback or (3) object literal with success/error arguments, numRetries,\n * etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n * literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n function loadFn(resolve, reject) {\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n \n // resolve Promise\n if (resolve) {\n executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n }\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n }\n \n if (args.returnPromise) return new Promise(loadFn);\n else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, stripHTML } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n const player = this;\n\n // Add embed class for responsive\n toggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set intial ratio\n setAspectRatio.call(player);\n\n // Load the SDK if not already\n if (!is.object(window.Vimeo)) {\n loadScript(player.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(player);\n })\n .catch(error => {\n player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n });\n } else {\n vimeo.ready.call(player);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams(\n extend(\n {},\n {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n },\n config,\n ),\n );\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Set the referrer policy if required\n if (!is.empty(config.referrerPolicy)) {\n iframe.setAttribute('referrerPolicy', config.referrerPolicy);\n }\n\n // Get poster, if already set\n const { poster } = player;\n // Inject the package\n const wrapper = createElement('div', { poster, class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href).catch(() => {});\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed.setPlaybackRate(input).then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n controls.setDownloadUrl.call(player);\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(dimensions => {\n const [width, height] = dimensions;\n player.embed.ratio = [width, height];\n setAspectRatio.call(this);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('bufferstart', () => {\n triggerEvent.call(player, player.media, 'waiting');\n });\n\n player.embed.on('bufferend', () => {\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/load-image';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nfunction getHost(config) {\n if (config.noCookie) {\n return 'https://www.youtube-nocookie.com';\n }\n\n if (window.location.protocol === 'http:') {\n return 'http://www.youtube.com';\n }\n\n // Use YouTube's default\n return undefined;\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Reference current global callback\n const callback = window.onYouTubeIframeAPIReady;\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n // Call global callback if set\n if (is.function(callback)) {\n callback();\n }\n\n youtube.ready.call(this);\n };\n\n // Load the SDK\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n const url = format(this.config.urls.youtube.api, videoId);\n\n fetch(url)\n .then(data => {\n if (is.object(data)) {\n const { title, height, width } = data;\n\n // Set title\n this.config.title = title;\n ui.setTitle.call(this);\n\n // Set aspect ratio\n this.embed.ratio = [width, height];\n }\n\n setAspectRatio.call(this);\n })\n .catch(() => {\n // Set aspect ratio\n setAspectRatio.call(this);\n });\n },\n\n // API ready\n ready() {\n const player = this;\n // Ignore already setup (race condition)\n const currentId = player.media && player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the <iframe> with a <div> due to YouTube API issues\n const videoId = parseId(source);\n const id = generateId(player.provider);\n // Get poster, if already set\n const { poster } = player;\n // Replace media element\n const container = createElement('div', { id, poster });\n player.media = replaceElement(container, player.media);\n\n // Id to poster wrapper\n const posterSrc = s => `https://i.ytimg.com/vi/${videoId}/${s}default.jpg`;\n\n // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)\n loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded\n .catch(() => loadImage(posterSrc('sd'), 121)) // 480p padded 4:3\n .catch(() => loadImage(posterSrc('hq'))) // 360p padded 4:3. Always exists\n .then(image => ui.setPoster.call(player, image.src))\n .then(src => {\n // If the image is padded, use background-size \"cover\" instead (like youtube does too with their posters)\n if (!src.includes('maxres')) {\n player.elements.poster.style.backgroundSize = 'cover';\n }\n })\n .catch(() => {});\n\n const config = player.config.youtube;\n\n // Setup instance\n // https://developers.google.com/youtube/iframe_api_reference\n player.embed = new window.YT.Player(id, {\n videoId,\n host: getHost(config),\n playerVars: extend(\n {},\n {\n autoplay: player.config.autoplay ? 1 : 0, // Autoplay\n hl: player.config.hl, // iframe interface language\n controls: player.supported.ui ? 0 : 1, // Only show controls if not fully supported\n disablekb: 1, // Disable keyboard as we handle it\n playsinline: !player.config.fullscreen.iosNative ? 1 : 0, // Allow iOS inline playback\n // Captions are flaky on YouTube\n cc_load_policy: player.captions.active ? 1 : 0,\n cc_lang_pref: player.config.captions.language,\n // Tracking for stats\n widget_referrer: window ? window.location.href : null,\n },\n config,\n ),\n events: {\n onError(event) {\n // YouTube may fire onError twice, so only handle it once\n if (!player.media.error) {\n const code = event.data;\n // Messages copied from https://developers.google.com/youtube/iframe_api_reference#onError\n const message =\n {\n 2: 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.',\n 5: 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.',\n 100: 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.',\n 101: 'The owner of the requested video does not allow it to be played in embedded players.',\n 150: 'The owner of the requested video does not allow it to be played in embedded players.',\n }[code] || 'An unknown error occured';\n\n player.media.error = { code, message };\n\n triggerEvent.call(player, player.media, 'error');\n }\n },\n onPlaybackRateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Get current speed\n player.media.playbackRate = instance.getPlaybackRate();\n\n triggerEvent.call(player, player.media, 'ratechange');\n },\n onReady(event) {\n // Bail if onReady has already been called. See issue #1108\n if (is.function(player.media.play)) {\n return;\n }\n // Get the instance\n const instance = event.target;\n\n // Get the title\n youtube.getTitle.call(player, videoId);\n\n // Create a faux HTML5 API using the YouTube API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n instance.playVideo();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n instance.pauseVideo();\n };\n\n player.media.stop = () => {\n instance.stopVideo();\n };\n\n player.media.duration = instance.getDuration();\n player.media.paused = true;\n\n // Seeking\n player.media.currentTime = 0;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return Number(instance.getCurrentTime());\n },\n set(time) {\n // If paused and never played, mute audio preventively (YouTube starts playing on seek if the video hasn't been played yet).\n if (player.paused && !player.embed.hasPlayed) {\n player.embed.mute();\n }\n\n // Set seeking state and trigger event\n player.media.seeking = true;\n triggerEvent.call(player, player.media, 'seeking');\n\n // Seek after events sent\n instance.seekTo(time);\n },\n });\n\n // Playback speed\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return instance.getPlaybackRate();\n },\n set(input) {\n instance.setPlaybackRate(input);\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n volume = input;\n instance.setVolume(volume * 100);\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : muted;\n muted = toggle;\n instance[toggle ? 'mute' : 'unMute']();\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Source\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return instance.getVideoUrl();\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Get available speeds\n const speeds = instance.getAvailablePlaybackRates();\n // Filter based on config\n player.options.speed = speeds.filter(s => player.config.speed.options.includes(s));\n\n // Set the tabindex to avoid focus entering iframe\n if (player.supported.ui) {\n player.media.setAttribute('tabindex', -1);\n }\n\n triggerEvent.call(player, player.media, 'timeupdate');\n triggerEvent.call(player, player.media, 'durationchange');\n\n // Reset timer\n clearInterval(player.timers.buffering);\n\n // Setup buffering\n player.timers.buffering = setInterval(() => {\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n\n // Trigger progress only when we actually buffer something\n if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) {\n triggerEvent.call(player, player.media, 'progress');\n }\n\n // Set last buffer point\n player.media.lastBuffered = player.media.buffered;\n\n // Bail if we're at 100%\n if (player.media.buffered === 1) {\n clearInterval(player.timers.buffering);\n\n // Trigger event\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n }, 200);\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 50);\n },\n onStateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Reset timer\n clearInterval(player.timers.playing);\n\n const seeked = player.media.seeking && [1, 2].includes(event.data);\n\n if (seeked) {\n // Unset seeking and fire seeked event\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n }\n\n // Handle events\n // -1 Unstarted\n // 0 Ended\n // 1 Playing\n // 2 Paused\n // 3 Buffering\n // 5 Video cued\n switch (event.data) {\n case -1:\n // Update scrubber\n triggerEvent.call(player, player.media, 'timeupdate');\n\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n triggerEvent.call(player, player.media, 'progress');\n\n break;\n\n case 0:\n assurePlaybackState.call(player, false);\n\n // YouTube doesn't support loop for a single video, so mimick it.\n if (player.media.loop) {\n // YouTube needs a call to `stopVideo` before playing again\n instance.stopVideo();\n instance.playVideo();\n } else {\n triggerEvent.call(player, player.media, 'ended');\n }\n\n break;\n\n case 1:\n // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)\n if (!player.config.autoplay && player.media.paused && !player.embed.hasPlayed) {\n player.media.pause();\n } else {\n assurePlaybackState.call(player, true);\n\n triggerEvent.call(player, player.media, 'playing');\n\n // Poll to get playback progress\n player.timers.playing = setInterval(() => {\n triggerEvent.call(player, player.media, 'timeupdate');\n }, 50);\n\n // Check duration again due to YouTube bug\n // https://github.com/sampotts/plyr/issues/374\n // https://code.google.com/p/gdata-issues/issues/detail?id=8690\n if (player.media.duration !== instance.getDuration()) {\n player.media.duration = instance.getDuration();\n triggerEvent.call(player, player.media, 'durationchange');\n }\n }\n\n break;\n\n case 2:\n // Restore audio (YouTube starts playing on seek if the video hasn't been played yet)\n if (!player.muted) {\n player.embed.unMute();\n }\n assurePlaybackState.call(player, false);\n\n break;\n\n case 3:\n // Trigger waiting event to add loading classes to container as the video buffers.\n triggerEvent.call(player, player.media, 'waiting');\n\n break;\n\n default:\n break;\n }\n\n triggerEvent.call(player, player.elements.container, 'statechange', false, {\n code: event.data,\n });\n },\n },\n });\n },\n};\n\nexport default youtube;\n","// ==========================================================================\n// Plyr Media\n// ==========================================================================\n\nimport html5 from './html5';\nimport vimeo from './plugins/vimeo';\nimport youtube from './plugins/youtube';\nimport { createElement, toggleClass, wrap } from './utils/elements';\n\nconst media = {\n // Setup media\n setup() {\n // If there's no media, bail\n if (!this.media) {\n this.debug.warn('No media element found!');\n return;\n }\n\n // Add type class\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', this.type), true);\n\n // Add provider class\n toggleClass(this.elements.container, this.config.classNames.provider.replace('{0}', this.provider), true);\n\n // Add video class for embeds\n // This will require changes if audio embeds are added\n if (this.isEmbed) {\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', 'video'), true);\n }\n\n // Inject the player wrapper\n if (this.isVideo) {\n // Create the wrapper div\n this.elements.wrapper = createElement('div', {\n class: this.config.classNames.video,\n });\n\n // Wrap the video in a container\n wrap(this.media, this.elements.wrapper);\n\n // Faux poster container\n if (this.isEmbed) {\n this.elements.poster = createElement('div', {\n class: this.config.classNames.poster,\n });\n\n this.elements.wrapper.appendChild(this.elements.poster);\n }\n }\n\n if (this.isHTML5) {\n html5.setup.call(this);\n } else if (this.isYouTube) {\n youtube.setup.call(this);\n } else if (this.isVimeo) {\n vimeo.setup.call(this);\n }\n },\n};\n\nexport default media;\n","// ==========================================================================\n// Advertisement plugin using Google IMA HTML5 SDK\n// Create an account with our ad partner, vi here:\n// https://www.vi.ai/publisher-video-monetization/\n// ==========================================================================\n\n/* global google */\n\nimport { createElement } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport i18n from '../utils/i18n';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { formatTime } from '../utils/time';\nimport { buildUrlParams } from '../utils/urls';\n\nconst destroy = instance => {\n // Destroy our adsManager\n if (instance.manager) {\n instance.manager.destroy();\n }\n\n // Destroy our adsManager\n if (instance.elements.displayContainer) {\n instance.elements.displayContainer.destroy();\n }\n\n instance.elements.container.remove();\n};\n\nclass Ads {\n /**\n * Ads constructor.\n * @param {Object} player\n * @return {Ads}\n */\n constructor(player) {\n this.player = player;\n this.config = player.config.ads;\n this.playing = false;\n this.initialized = false;\n this.elements = {\n container: null,\n displayContainer: null,\n };\n this.manager = null;\n this.loader = null;\n this.cuePoints = null;\n this.events = {};\n this.safetyTimer = null;\n this.countdownTimer = null;\n\n // Setup a promise to resolve when the IMA manager is ready\n this.managerPromise = new Promise((resolve, reject) => {\n // The ad is loaded and ready\n this.on('loaded', resolve);\n\n // Ads failed\n this.on('error', reject);\n });\n\n this.load();\n }\n\n get enabled() {\n const { config } = this;\n\n return (\n this.player.isHTML5 &&\n this.player.isVideo &&\n config.enabled &&\n (!is.empty(config.publisherId) || is.url(config.tagUrl))\n );\n }\n\n /**\n * Load the IMA SDK\n */\n load() {\n if (!this.enabled) {\n return;\n }\n\n // Check if the Google IMA3 SDK is loaded or load it ourselves\n if (!is.object(window.google) || !is.object(window.google.ima)) {\n loadScript(this.player.config.urls.googleIMA.sdk)\n .then(() => {\n this.ready();\n })\n .catch(() => {\n // Script failed to load or is blocked\n this.trigger('error', new Error('Google IMA SDK failed to load'));\n });\n } else {\n this.ready();\n }\n }\n\n /**\n * Get the ads instance ready\n */\n ready() {\n // Double check we're enabled\n if (!this.enabled) {\n destroy(this);\n }\n\n // Start ticking our safety timer. If the whole advertisement\n // thing doesn't resolve within our set time; we bail\n this.startSafetyTimer(12000, 'ready()');\n\n // Clear the safety timer\n this.managerPromise.then(() => {\n this.clearSafetyTimer('onAdsManagerLoaded()');\n });\n\n // Set listeners on the Plyr instance\n this.listeners();\n\n // Setup the IMA SDK\n this.setupIMA();\n }\n\n // Build the tag URL\n get tagUrl() {\n const { config } = this;\n\n if (is.url(config.tagUrl)) {\n return config.tagUrl;\n }\n\n const params = {\n AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n AV_CHANNELID: '5a0458dc28a06145e4519d21',\n AV_URL: window.location.hostname,\n cb: Date.now(),\n AV_WIDTH: 640,\n AV_HEIGHT: 480,\n AV_CDIM2: config.publisherId,\n };\n\n const base = 'https://go.aniview.com/api/adserver6/vast/';\n\n return `${base}?${buildUrlParams(params)}`;\n }\n\n /**\n * In order for the SDK to display ads for our video, we need to tell it where to put them,\n * so here we define our ad container. This div is set up to render on top of the video player.\n * Using the code below, we tell the SDK to render ads within that div. We also provide a\n * handle to the content video player - the SDK will poll the current time of our player to\n * properly place mid-rolls. After we create the ad display container, we initialize it. On\n * mobile devices, this initialization is done as the result of a user action.\n */\n setupIMA() {\n // Create the container for our advertisements\n this.elements.container = createElement('div', {\n class: this.player.config.classNames.ads,\n });\n\n this.player.elements.container.appendChild(this.elements.container);\n\n // So we can run VPAID2\n google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED);\n\n // Set language\n google.ima.settings.setLocale(this.player.config.ads.language);\n\n // Set playback for iOS10+\n google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline);\n\n // We assume the adContainer is the video container of the plyr element that will house the ads\n this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media);\n\n // Request video ads to be pre-loaded\n this.requestAds();\n }\n\n /**\n * Request advertisements\n */\n requestAds() {\n const { container } = this.player.elements;\n\n try {\n // Create ads loader\n this.loader = new google.ima.AdsLoader(this.elements.displayContainer);\n\n // Listen and respond to ads loaded and error events\n this.loader.addEventListener(\n google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n event => this.onAdsManagerLoaded(event),\n false,\n );\n this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);\n\n // Request video ads\n const request = new google.ima.AdsRequest();\n request.adTagUrl = this.tagUrl;\n\n // Specify the linear and nonlinear slot sizes. This helps the SDK\n // to select the correct creative if multiple are returned\n request.linearAdSlotWidth = container.offsetWidth;\n request.linearAdSlotHeight = container.offsetHeight;\n request.nonLinearAdSlotWidth = container.offsetWidth;\n request.nonLinearAdSlotHeight = container.offsetHeight;\n\n // We only overlay ads as we only support video.\n request.forceNonLinearFullSlot = false;\n\n // Mute based on current state\n request.setAdWillPlayMuted(!this.player.muted);\n\n this.loader.requestAds(request);\n } catch (e) {\n this.onAdError(e);\n }\n }\n\n /**\n * Update the ad countdown\n * @param {Boolean} start\n */\n pollCountdown(start = false) {\n if (!start) {\n clearInterval(this.countdownTimer);\n this.elements.container.removeAttribute('data-badge-text');\n return;\n }\n\n const update = () => {\n const time = formatTime(Math.max(this.manager.getRemainingTime(), 0));\n const label = `${i18n.get('advertisement', this.player.config)} - ${time}`;\n this.elements.container.setAttribute('data-badge-text', label);\n };\n\n this.countdownTimer = setInterval(update, 100);\n }\n\n /**\n * This method is called whenever the ads are ready inside the AdDisplayContainer\n * @param {Event} adsManagerLoadedEvent\n */\n onAdsManagerLoaded(event) {\n // Load could occur after a source change (race condition)\n if (!this.enabled) {\n return;\n }\n\n // Get the ads manager\n const settings = new google.ima.AdsRenderingSettings();\n\n // Tell the SDK to save and restore content video state on our behalf\n settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n settings.enablePreloading = true;\n\n // The SDK is polling currentTime on the contentPlayback. And needs a duration\n // so it can determine when to start the mid- and post-roll\n this.manager = event.getAdsManager(this.player, settings);\n\n // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n this.cuePoints = this.manager.getCuePoints();\n\n // Add listeners to the required events\n // Advertisement error events\n this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error));\n\n // Advertisement regular events\n Object.keys(google.ima.AdEvent.Type).forEach(type => {\n this.manager.addEventListener(google.ima.AdEvent.Type[type], e => this.onAdEvent(e));\n });\n\n // Resolve our adsManager\n this.trigger('loaded');\n }\n\n addCuePoints() {\n // Add advertisement cue's within the time line if available\n if (!is.empty(this.cuePoints)) {\n this.cuePoints.forEach(cuePoint => {\n if (cuePoint !== 0 && cuePoint !== -1 && cuePoint < this.player.duration) {\n const seekElement = this.player.elements.progress;\n\n if (is.element(seekElement)) {\n const cuePercentage = (100 / this.player.duration) * cuePoint;\n const cue = createElement('span', {\n class: this.player.config.classNames.cues,\n });\n\n cue.style.left = `${cuePercentage.toString()}%`;\n seekElement.appendChild(cue);\n }\n }\n });\n }\n }\n\n /**\n * This is where all the event handling takes place. Retrieve the ad from the event. Some\n * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n * @param {Event} event\n */\n onAdEvent(event) {\n const { container } = this.player.elements;\n // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n // don't have ad object associated\n const ad = event.getAd();\n const adData = event.getAdData();\n\n // Proxy event\n const dispatchEvent = type => {\n triggerEvent.call(this.player, this.player.media, `ads${type.replace(/_/g, '').toLowerCase()}`);\n };\n\n // Bubble the event\n dispatchEvent(event.type);\n\n switch (event.type) {\n case google.ima.AdEvent.Type.LOADED:\n // This is the first event sent for an ad - it is possible to determine whether the\n // ad is a video ad or an overlay\n this.trigger('loaded');\n\n // Start countdown\n this.pollCountdown(true);\n\n if (!ad.isLinear()) {\n // Position AdDisplayContainer correctly for overlay\n ad.width = container.offsetWidth;\n ad.height = container.offsetHeight;\n }\n\n // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n\n break;\n\n case google.ima.AdEvent.Type.STARTED:\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n break;\n\n case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n // All ads for the current videos are done. We can now request new advertisements\n // in case the video is re-played\n\n // TODO: Example for what happens when a next video in a playlist would be loaded.\n // So here we load a new video when all ads are done.\n // Then we load new ads within a new adsManager. When the video\n // Is started - after - the ads are loaded, then we get ads.\n // You can also easily test cancelling and reloading by running\n // player.ads.cancel() and player.ads.play from the console I guess.\n // this.player.source = {\n // type: 'video',\n // title: 'View From A Blue Moon',\n // sources: [{\n // src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n // 'video/mp4', }], poster:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n // };\n\n // TODO: So there is still this thing where a video should only be allowed to start\n // playing when the IMA SDK is ready or has failed\n\n this.loadAds();\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n // This event indicates the ad has started - the video player can adjust the UI,\n // for example display a pause button and remaining time. Fired when content should\n // be paused. This usually happens right before an ad is about to cover the content\n\n this.pauseContent();\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n // This event indicates the ad has finished - the video player can perform\n // appropriate UI actions, such as removing the timer for remaining time detection.\n // Fired when content should be resumed. This usually happens when an ad finishes\n // or collapses\n\n this.pollCountdown();\n\n this.resumeContent();\n\n break;\n\n case google.ima.AdEvent.Type.LOG:\n if (adData.adError) {\n this.player.debug.warn(`Non-fatal ad error: ${adData.adError.getMessage()}`);\n }\n\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Any ad error handling comes through here\n * @param {Event} event\n */\n onAdError(event) {\n this.cancel();\n this.player.debug.warn('Ads error', event);\n }\n\n /**\n * Setup hooks for Plyr and window events. This ensures\n * the mid- and post-roll launch at the correct time. And\n * resize the advertisement when the player resizes\n */\n listeners() {\n const { container } = this.player.elements;\n let time;\n\n this.player.on('canplay', () => {\n this.addCuePoints();\n });\n\n this.player.on('ended', () => {\n this.loader.contentComplete();\n });\n\n this.player.on('timeupdate', () => {\n time = this.player.currentTime;\n });\n\n this.player.on('seeked', () => {\n const seekedTime = this.player.currentTime;\n\n if (is.empty(this.cuePoints)) {\n return;\n }\n\n this.cuePoints.forEach((cuePoint, index) => {\n if (time < cuePoint && cuePoint < seekedTime) {\n this.manager.discardAdBreak();\n this.cuePoints.splice(index, 1);\n }\n });\n });\n\n // Listen to the resizing of the window. And resize ad accordingly\n // TODO: eventually implement ResizeObserver\n window.addEventListener('resize', () => {\n if (this.manager) {\n this.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n }\n });\n }\n\n /**\n * Initialize the adsManager and start playing advertisements\n */\n play() {\n const { container } = this.player.elements;\n\n if (!this.managerPromise) {\n this.resumeContent();\n }\n\n // Play the requested advertisement whenever the adsManager is ready\n this.managerPromise\n .then(() => {\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n // Initialize the container. Must be done via a user action on mobile devices\n this.elements.displayContainer.initialize();\n\n try {\n if (!this.initialized) {\n // Initialize the ads manager. Ad rules playlist will start at this time\n this.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules\n this.manager.start();\n }\n\n this.initialized = true;\n } catch (adError) {\n // An error may be thrown if there was a problem with the\n // VAST response\n this.onAdError(adError);\n }\n })\n .catch(() => {});\n }\n\n /**\n * Resume our video\n */\n resumeContent() {\n // Hide the advertisement container\n this.elements.container.style.zIndex = '';\n\n // Ad is stopped\n this.playing = false;\n\n // Play video\n this.player.media.play();\n }\n\n /**\n * Pause our video\n */\n pauseContent() {\n // Show the advertisement container\n this.elements.container.style.zIndex = 3;\n\n // Ad is playing\n this.playing = true;\n\n // Pause our video.\n this.player.media.pause();\n }\n\n /**\n * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n * allowed to call new ads based on google policies, as they interpret this as an accidental\n * video requests. https://developers.google.com/interactive-\n * media-ads/docs/sdks/android/faq#8\n */\n cancel() {\n // Pause our video\n if (this.initialized) {\n this.resumeContent();\n }\n\n // Tell our instance that we're done for now\n this.trigger('error');\n\n // Re-create our adsManager\n this.loadAds();\n }\n\n /**\n * Re-create our adsManager\n */\n loadAds() {\n // Tell our adsManager to go bye bye\n this.managerPromise\n .then(() => {\n // Destroy our adsManager\n if (this.manager) {\n this.manager.destroy();\n }\n\n // Re-set our adsManager promises\n this.managerPromise = new Promise(resolve => {\n this.on('loaded', resolve);\n this.player.debug.log(this.manager);\n });\n\n // Now request some new advertisements\n this.requestAds();\n })\n .catch(() => {});\n }\n\n /**\n * Handles callbacks after an ad event was invoked\n * @param {String} event - Event type\n */\n trigger(event, ...args) {\n const handlers = this.events[event];\n\n if (is.array(handlers)) {\n handlers.forEach(handler => {\n if (is.function(handler)) {\n handler.apply(this, args);\n }\n });\n }\n }\n\n /**\n * Add event listeners\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n * @return {Ads}\n */\n on(event, callback) {\n if (!is.array(this.events[event])) {\n this.events[event] = [];\n }\n\n this.events[event].push(callback);\n\n return this;\n }\n\n /**\n * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n * The advertisement has 12 seconds to get its things together. We stop this timer when the\n * advertisement is playing, or when a user action is required to start, then we clear the\n * timer on ad ready\n * @param {Number} time\n * @param {String} from\n */\n startSafetyTimer(time, from) {\n this.player.debug.log(`Safety timer invoked from: ${from}`);\n\n this.safetyTimer = setTimeout(() => {\n this.cancel();\n this.clearSafetyTimer('startSafetyTimer()');\n }, time);\n }\n\n /**\n * Clear our safety timer(s)\n * @param {String} from\n */\n clearSafetyTimer(from) {\n if (!is.nullOrUndefined(this.safetyTimer)) {\n this.player.debug.log(`Safety timer cleared from: ${from}`);\n\n clearTimeout(this.safetyTimer);\n this.safetyTimer = null;\n }\n }\n}\n\nexport default Ads;\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","import { createElement } from '../utils/elements';\nimport { once } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport { formatTime } from '../utils/time';\n\n// Arg: vttDataString example: \"WEBVTT\\n\\n1\\n00:00:05.000 --> 00:00:10.000\\n1080p-00001.jpg\"\nconst parseVtt = vttDataString => {\n const processedList = [];\n const frames = vttDataString.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/);\n\n frames.forEach(frame => {\n const result = {};\n const lines = frame.split(/\\r\\n|\\n|\\r/);\n\n lines.forEach(line => {\n if (!is.number(result.startTime)) {\n // The line with start and end times on it is the first line of interest\n const matchTimes = line.match(\n /([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/,\n ); // Note that this currently ignores caption formatting directives that are optionally on the end of this line - fine for non-captions VTT\n\n if (matchTimes) {\n result.startTime =\n Number(matchTimes[1] || 0) * 60 * 60 +\n Number(matchTimes[2]) * 60 +\n Number(matchTimes[3]) +\n Number(`0.${matchTimes[4]}`);\n result.endTime =\n Number(matchTimes[6] || 0) * 60 * 60 +\n Number(matchTimes[7]) * 60 +\n Number(matchTimes[8]) +\n Number(`0.${matchTimes[9]}`);\n }\n } else if (!is.empty(line.trim()) && is.empty(result.text)) {\n // If we already have the startTime, then we're definitely up to the text line(s)\n const lineSplit = line.trim().split('#xywh=');\n [result.text] = lineSplit;\n\n // If there's content in lineSplit[1], then we have sprites. If not, then it's just one frame per image\n if (lineSplit[1]) {\n [result.x, result.y, result.w, result.h] = lineSplit[1].split(',');\n }\n }\n });\n\n if (result.text) {\n processedList.push(result);\n }\n });\n\n return processedList;\n};\n\n/**\n * Preview thumbnails for seek hover and scrubbing\n * Seeking: Hover over the seek bar (desktop only): shows a small preview container above the seek bar\n * Scrubbing: Click and drag the seek bar (desktop and mobile): shows the preview image over the entire video, as if the video is scrubbing at very high speed\n *\n * Notes:\n * - Thumbs are set via JS settings on Plyr init, not HTML5 'track' property. Using the track property would be a bit gross, because it doesn't support custom 'kinds'. kind=metadata might be used for something else, and we want to allow multiple thumbnails tracks. Tracks must have a unique combination of 'kind' and 'label'. We would have to do something like kind=metadata,label=thumbnails1 / kind=metadata,label=thumbnails2. Square peg, round hole\n * - VTT info: the image URL is relative to the VTT, not the current document. But if the url starts with a slash, it will naturally be relative to the current domain. https://support.jwplayer.com/articles/how-to-add-preview-thumbnails\n * - This implementation uses multiple separate img elements. Other implementations use background-image on one element. This would be nice and simple, but Firefox and Safari have flickering issues with replacing backgrounds of larger images. It seems that YouTube perhaps only avoids this because they don't have the option for high-res previews (even the fullscreen ones, when mousedown/seeking). Images appear over the top of each other, and previous ones are discarded once the new ones have been rendered\n */\n\nconst fitRatio = (ratio, outer) => {\n const targetRatio = outer.width / outer.height;\n const result = {};\n if (ratio > targetRatio) {\n result.width = outer.width;\n result.height = (1 / ratio) * outer.width;\n } else {\n result.height = outer.height;\n result.width = ratio * outer.height;\n }\n\n return result;\n};\n\nclass PreviewThumbnails {\n /**\n * PreviewThumbnails constructor.\n * @param {Plyr} player\n * @return {PreviewThumbnails}\n */\n constructor(player) {\n this.player = player;\n this.thumbnails = [];\n this.loaded = false;\n this.lastMouseMoveTime = Date.now();\n this.mouseDown = false;\n this.loadedImages = [];\n\n this.elements = {\n thumb: {},\n scrubbing: {},\n };\n\n this.load();\n }\n\n get enabled() {\n return this.player.isHTML5 && this.player.isVideo && this.player.config.previewThumbnails.enabled;\n }\n\n load() {\n // Toggle the regular seek tooltip\n if (this.player.elements.display.seekTooltip) {\n this.player.elements.display.seekTooltip.hidden = this.enabled;\n }\n\n if (!this.enabled) {\n return;\n }\n\n this.getThumbnails().then(() => {\n if (!this.enabled) {\n return;\n }\n\n // Render DOM elements\n this.render();\n\n // Check to see if thumb container size was specified manually in CSS\n this.determineContainerAutoSizing();\n\n this.loaded = true;\n });\n }\n\n // Download VTT files and parse them\n getThumbnails() {\n return new Promise(resolve => {\n const { src } = this.player.config.previewThumbnails;\n\n if (is.empty(src)) {\n throw new Error('Missing previewThumbnails.src config attribute');\n }\n\n // If string, convert into single-element list\n const urls = is.string(src) ? [src] : src;\n // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails\n const promises = urls.map(u => this.getThumbnail(u));\n\n Promise.all(promises).then(() => {\n // Sort smallest to biggest (e.g., [120p, 480p, 1080p])\n this.thumbnails.sort((x, y) => x.height - y.height);\n\n this.player.debug.log('Preview thumbnails', this.thumbnails);\n\n resolve();\n });\n });\n }\n\n // Process individual VTT file\n getThumbnail(url) {\n return new Promise(resolve => {\n fetch(url).then(response => {\n const thumbnail = {\n frames: parseVtt(response),\n height: null,\n urlPrefix: '',\n };\n\n // If the URLs don't start with '/', then we need to set their relative path to be the location of the VTT file\n // If the URLs do start with '/', then they obviously don't need a prefix, so it will remain blank\n // If the thumbnail URLs start with with none of '/', 'http://' or 'https://', then we need to set their relative path to be the location of the VTT file\n if (\n !thumbnail.frames[0].text.startsWith('/') &&\n !thumbnail.frames[0].text.startsWith('http://') &&\n !thumbnail.frames[0].text.startsWith('https://')\n ) {\n thumbnail.urlPrefix = url.substring(0, url.lastIndexOf('/') + 1);\n }\n\n // Download the first frame, so that we can determine/set the height of this thumbnailsDef\n const tempImage = new Image();\n\n tempImage.onload = () => {\n thumbnail.height = tempImage.naturalHeight;\n thumbnail.width = tempImage.naturalWidth;\n\n this.thumbnails.push(thumbnail);\n\n resolve();\n };\n\n tempImage.src = thumbnail.urlPrefix + thumbnail.frames[0].text;\n });\n });\n }\n\n startMove(event) {\n if (!this.loaded) {\n return;\n }\n\n if (!is.event(event) || !['touchmove', 'mousemove'].includes(event.type)) {\n return;\n }\n\n // Wait until media has a duration\n if (!this.player.media.duration) {\n return;\n }\n\n if (event.type === 'touchmove') {\n // Calculate seek hover position as approx video seconds\n this.seekTime = this.player.media.duration * (this.player.elements.inputs.seek.value / 100);\n } else {\n // Calculate seek hover position as approx video seconds\n const clientRect = this.player.elements.progress.getBoundingClientRect();\n const percentage = (100 / clientRect.width) * (event.pageX - clientRect.left);\n this.seekTime = this.player.media.duration * (percentage / 100);\n\n if (this.seekTime < 0) {\n // The mousemove fires for 10+px out to the left\n this.seekTime = 0;\n }\n\n if (this.seekTime > this.player.media.duration - 1) {\n // Took 1 second off the duration for safety, because different players can disagree on the real duration of a video\n this.seekTime = this.player.media.duration - 1;\n }\n\n this.mousePosX = event.pageX;\n\n // Set time text inside image container\n this.elements.thumb.time.innerText = formatTime(this.seekTime);\n }\n\n // Download and show image\n this.showImageAtCurrentTime();\n }\n\n endMove() {\n this.toggleThumbContainer(false, true);\n }\n\n startScrubbing(event) {\n // Only act on left mouse button (0), or touch device (event.button does not exist or is false)\n if (is.nullOrUndefined(event.button) || event.button === false || event.button === 0) {\n this.mouseDown = true;\n\n // Wait until media has a duration\n if (this.player.media.duration) {\n this.toggleScrubbingContainer(true);\n this.toggleThumbContainer(false, true);\n\n // Download and show image\n this.showImageAtCurrentTime();\n }\n }\n }\n\n endScrubbing() {\n this.mouseDown = false;\n\n // Hide scrubbing preview. But wait until the video has successfully seeked before hiding the scrubbing preview\n if (Math.ceil(this.lastTime) === Math.ceil(this.player.media.currentTime)) {\n // The video was already seeked/loaded at the chosen time - hide immediately\n this.toggleScrubbingContainer(false);\n } else {\n // The video hasn't seeked yet. Wait for that\n once.call(this.player, this.player.media, 'timeupdate', () => {\n // Re-check mousedown - we might have already started scrubbing again\n if (!this.mouseDown) {\n this.toggleScrubbingContainer(false);\n }\n });\n }\n }\n\n /**\n * Setup hooks for Plyr and window events\n */\n listeners() {\n // Hide thumbnail preview - on mouse click, mouse leave (in listeners.js for now), and video play/seek. All four are required, e.g., for buffering\n this.player.on('play', () => {\n this.toggleThumbContainer(false, true);\n });\n\n this.player.on('seeked', () => {\n this.toggleThumbContainer(false);\n });\n\n this.player.on('timeupdate', () => {\n this.lastTime = this.player.media.currentTime;\n });\n }\n\n /**\n * Create HTML elements for image containers\n */\n render() {\n // Create HTML element: plyr__preview-thumbnail-container\n this.elements.thumb.container = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.thumbContainer,\n });\n\n // Wrapper for the image for styling\n this.elements.thumb.imageContainer = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.imageContainer,\n });\n this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);\n\n // Create HTML element, parent+span: time text (e.g., 01:32:00)\n const timeContainer = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.timeContainer,\n });\n\n this.elements.thumb.time = createElement('span', {}, '00:00');\n timeContainer.appendChild(this.elements.thumb.time);\n\n this.elements.thumb.container.appendChild(timeContainer);\n\n // Inject the whole thumb\n if (is.element(this.player.elements.progress)) {\n this.player.elements.progress.appendChild(this.elements.thumb.container);\n }\n\n // Create HTML element: plyr__preview-scrubbing-container\n this.elements.scrubbing.container = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.scrubbingContainer,\n });\n\n this.player.elements.wrapper.appendChild(this.elements.scrubbing.container);\n }\n\n destroy() {\n if (this.elements.thumb.container) {\n this.elements.thumb.container.remove();\n }\n if (this.elements.scrubbing.container) {\n this.elements.scrubbing.container.remove();\n }\n }\n\n showImageAtCurrentTime() {\n if (this.mouseDown) {\n this.setScrubbingContainerSize();\n } else {\n this.setThumbContainerSizeAndPos();\n }\n\n // Find the desired thumbnail index\n // TODO: Handle a video longer than the thumbs where thumbNum is null\n const thumbNum = this.thumbnails[0].frames.findIndex(\n frame => this.seekTime >= frame.startTime && this.seekTime <= frame.endTime,\n );\n const hasThumb = thumbNum >= 0;\n let qualityIndex = 0;\n\n // Show the thumb container if we're not scrubbing\n if (!this.mouseDown) {\n this.toggleThumbContainer(hasThumb);\n }\n\n // No matching thumb found\n if (!hasThumb) {\n return;\n }\n\n // Check to see if we've already downloaded higher quality versions of this image\n this.thumbnails.forEach((thumbnail, index) => {\n if (this.loadedImages.includes(thumbnail.frames[thumbNum].text)) {\n qualityIndex = index;\n }\n });\n\n // Only proceed if either thumbnum or thumbfilename has changed\n if (thumbNum !== this.showingThumb) {\n this.showingThumb = thumbNum;\n this.loadImage(qualityIndex);\n }\n }\n\n // Show the image that's currently specified in this.showingThumb\n loadImage(qualityIndex = 0) {\n const thumbNum = this.showingThumb;\n const thumbnail = this.thumbnails[qualityIndex];\n const { urlPrefix } = thumbnail;\n const frame = thumbnail.frames[thumbNum];\n const thumbFilename = thumbnail.frames[thumbNum].text;\n const thumbUrl = urlPrefix + thumbFilename;\n\n if (!this.currentImageElement || this.currentImageElement.dataset.filename !== thumbFilename) {\n // If we're already loading a previous image, remove its onload handler - we don't want it to load after this one\n // Only do this if not using sprites. Without sprites we really want to show as many images as possible, as a best-effort\n if (this.loadingImage && this.usingSprites) {\n this.loadingImage.onload = null;\n }\n\n // We're building and adding a new image. In other implementations of similar functionality (YouTube), background image\n // is instead used. But this causes issues with larger images in Firefox and Safari - switching between background\n // images causes a flicker. Putting a new image over the top does not\n const previewImage = new Image();\n previewImage.src = thumbUrl;\n previewImage.dataset.index = thumbNum;\n previewImage.dataset.filename = thumbFilename;\n this.showingThumbFilename = thumbFilename;\n\n this.player.debug.log(`Loading image: ${thumbUrl}`);\n\n // For some reason, passing the named function directly causes it to execute immediately. So I've wrapped it in an anonymous function...\n previewImage.onload = () =>\n this.showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, true);\n this.loadingImage = previewImage;\n this.removeOldImages(previewImage);\n } else {\n // Update the existing image\n this.showImage(this.currentImageElement, frame, qualityIndex, thumbNum, thumbFilename, false);\n this.currentImageElement.dataset.index = thumbNum;\n this.removeOldImages(this.currentImageElement);\n }\n }\n\n showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, newImage = true) {\n this.player.debug.log(\n `Showing thumb: ${thumbFilename}. num: ${thumbNum}. qual: ${qualityIndex}. newimg: ${newImage}`,\n );\n this.setImageSizeAndOffset(previewImage, frame);\n\n if (newImage) {\n this.currentImageContainer.appendChild(previewImage);\n this.currentImageElement = previewImage;\n\n if (!this.loadedImages.includes(thumbFilename)) {\n this.loadedImages.push(thumbFilename);\n }\n }\n\n // Preload images before and after the current one\n // Show higher quality of the same frame\n // Each step here has a short time delay, and only continues if still hovering/seeking the same spot. This is to protect slow connections from overloading\n this.preloadNearby(thumbNum, true)\n .then(this.preloadNearby(thumbNum, false))\n .then(this.getHigherQuality(qualityIndex, previewImage, frame, thumbFilename));\n }\n\n // Remove all preview images that aren't the designated current image\n removeOldImages(currentImage) {\n // Get a list of all images, convert it from a DOM list to an array\n Array.from(this.currentImageContainer.children).forEach(image => {\n if (image.tagName.toLowerCase() !== 'img') {\n return;\n }\n\n const removeDelay = this.usingSprites ? 500 : 1000;\n\n if (image.dataset.index !== currentImage.dataset.index && !image.dataset.deleting) {\n // Wait 200ms, as the new image can take some time to show on certain browsers (even though it was downloaded before showing). This will prevent flicker, and show some generosity towards slower clients\n // First set attribute 'deleting' to prevent multi-handling of this on repeat firing of this function\n // eslint-disable-next-line no-param-reassign\n image.dataset.deleting = true;\n\n // This has to be set before the timeout - to prevent issues switching between hover and scrub\n const { currentImageContainer } = this;\n\n setTimeout(() => {\n currentImageContainer.removeChild(image);\n this.player.debug.log(`Removing thumb: ${image.dataset.filename}`);\n }, removeDelay);\n }\n });\n }\n\n // Preload images before and after the current one. Only if the user is still hovering/seeking the same frame\n // This will only preload the lowest quality\n preloadNearby(thumbNum, forward = true) {\n return new Promise(resolve => {\n setTimeout(() => {\n const oldThumbFilename = this.thumbnails[0].frames[thumbNum].text;\n\n if (this.showingThumbFilename === oldThumbFilename) {\n // Find the nearest thumbs with different filenames. Sometimes it'll be the next index, but in the case of sprites, it might be 100+ away\n let thumbnailsClone;\n if (forward) {\n thumbnailsClone = this.thumbnails[0].frames.slice(thumbNum);\n } else {\n thumbnailsClone = this.thumbnails[0].frames.slice(0, thumbNum).reverse();\n }\n\n let foundOne = false;\n\n thumbnailsClone.forEach(frame => {\n const newThumbFilename = frame.text;\n\n if (newThumbFilename !== oldThumbFilename) {\n // Found one with a different filename. Make sure it hasn't already been loaded on this page visit\n if (!this.loadedImages.includes(newThumbFilename)) {\n foundOne = true;\n this.player.debug.log(`Preloading thumb filename: ${newThumbFilename}`);\n\n const { urlPrefix } = this.thumbnails[0];\n const thumbURL = urlPrefix + newThumbFilename;\n const previewImage = new Image();\n previewImage.src = thumbURL;\n previewImage.onload = () => {\n this.player.debug.log(`Preloaded thumb filename: ${newThumbFilename}`);\n if (!this.loadedImages.includes(newThumbFilename))\n this.loadedImages.push(newThumbFilename);\n\n // We don't resolve until the thumb is loaded\n resolve();\n };\n }\n }\n });\n\n // If there are none to preload then we want to resolve immediately\n if (!foundOne) {\n resolve();\n }\n }\n }, 300);\n });\n }\n\n // If user has been hovering current image for half a second, look for a higher quality one\n getHigherQuality(currentQualityIndex, previewImage, frame, thumbFilename) {\n if (currentQualityIndex < this.thumbnails.length - 1) {\n // Only use the higher quality version if it's going to look any better - if the current thumb is of a lower pixel density than the thumbnail container\n let previewImageHeight = previewImage.naturalHeight;\n\n if (this.usingSprites) {\n previewImageHeight = frame.h;\n }\n\n if (previewImageHeight < this.thumbContainerHeight) {\n // Recurse back to the loadImage function - show a higher quality one, but only if the viewer is on this frame for a while\n setTimeout(() => {\n // Make sure the mouse hasn't already moved on and started hovering at another image\n if (this.showingThumbFilename === thumbFilename) {\n this.player.debug.log(`Showing higher quality thumb for: ${thumbFilename}`);\n this.loadImage(currentQualityIndex + 1);\n }\n }, 300);\n }\n }\n }\n\n get currentImageContainer() {\n if (this.mouseDown) {\n return this.elements.scrubbing.container;\n }\n\n return this.elements.thumb.imageContainer;\n }\n\n get usingSprites() {\n return Object.keys(this.thumbnails[0].frames[0]).includes('w');\n }\n\n get thumbAspectRatio() {\n if (this.usingSprites) {\n return this.thumbnails[0].frames[0].w / this.thumbnails[0].frames[0].h;\n }\n\n return this.thumbnails[0].width / this.thumbnails[0].height;\n }\n\n get thumbContainerHeight() {\n if (this.mouseDown) {\n const { height } = fitRatio(this.thumbAspectRatio, {\n width: this.player.media.clientWidth,\n height: this.player.media.clientHeight,\n });\n return height;\n }\n\n // If css is used this needs to return the css height for sprites to work (see setImageSizeAndOffset)\n if (this.sizeSpecifiedInCSS) {\n return this.elements.thumb.imageContainer.clientHeight;\n }\n\n return Math.floor(this.player.media.clientWidth / this.thumbAspectRatio / 4);\n }\n\n get currentImageElement() {\n if (this.mouseDown) {\n return this.currentScrubbingImageElement;\n }\n\n return this.currentThumbnailImageElement;\n }\n\n set currentImageElement(element) {\n if (this.mouseDown) {\n this.currentScrubbingImageElement = element;\n } else {\n this.currentThumbnailImageElement = element;\n }\n }\n\n toggleThumbContainer(toggle = false, clearShowing = false) {\n const className = this.player.config.classNames.previewThumbnails.thumbContainerShown;\n this.elements.thumb.container.classList.toggle(className, toggle);\n\n if (!toggle && clearShowing) {\n this.showingThumb = null;\n this.showingThumbFilename = null;\n }\n }\n\n toggleScrubbingContainer(toggle = false) {\n const className = this.player.config.classNames.previewThumbnails.scrubbingContainerShown;\n this.elements.scrubbing.container.classList.toggle(className, toggle);\n\n if (!toggle) {\n this.showingThumb = null;\n this.showingThumbFilename = null;\n }\n }\n\n determineContainerAutoSizing() {\n if (this.elements.thumb.imageContainer.clientHeight > 20 || this.elements.thumb.imageContainer.clientWidth > 20) {\n // This will prevent auto sizing in this.setThumbContainerSizeAndPos()\n this.sizeSpecifiedInCSS = true;\n }\n }\n\n // Set the size to be about a quarter of the size of video. Unless option dynamicSize === false, in which case it needs to be set in CSS\n setThumbContainerSizeAndPos() {\n if (!this.sizeSpecifiedInCSS) {\n const thumbWidth = Math.floor(this.thumbContainerHeight * this.thumbAspectRatio);\n this.elements.thumb.imageContainer.style.height = `${this.thumbContainerHeight}px`;\n this.elements.thumb.imageContainer.style.width = `${thumbWidth}px`;\n } else if (this.elements.thumb.imageContainer.clientHeight > 20 && this.elements.thumb.imageContainer.clientWidth < 20) {\n const thumbWidth = Math.floor(this.elements.thumb.imageContainer.clientHeight * this.thumbAspectRatio);\n this.elements.thumb.imageContainer.style.width = `${thumbWidth}px`;\n } else if (this.elements.thumb.imageContainer.clientHeight < 20 && this.elements.thumb.imageContainer.clientWidth > 20) {\n const thumbHeight = Math.floor(this.elements.thumb.imageContainer.clientWidth / this.thumbAspectRatio);\n this.elements.thumb.imageContainer.style.height = `${thumbHeight}px`;\n }\n\n this.setThumbContainerPos();\n }\n\n setThumbContainerPos() {\n const seekbarRect = this.player.elements.progress.getBoundingClientRect();\n const plyrRect = this.player.elements.container.getBoundingClientRect();\n const { container } = this.elements.thumb;\n // Find the lowest and highest desired left-position, so we don't slide out the side of the video container\n const minVal = plyrRect.left - seekbarRect.left + 10;\n const maxVal = plyrRect.right - seekbarRect.left - container.clientWidth - 10;\n // Set preview container position to: mousepos, minus seekbar.left, minus half of previewContainer.clientWidth\n let previewPos = this.mousePosX - seekbarRect.left - container.clientWidth / 2;\n\n if (previewPos < minVal) {\n previewPos = minVal;\n }\n\n if (previewPos > maxVal) {\n previewPos = maxVal;\n }\n\n container.style.left = `${previewPos}px`;\n }\n\n // Can't use 100% width, in case the video is a different aspect ratio to the video container\n setScrubbingContainerSize() {\n const { width, height } = fitRatio(this.thumbAspectRatio, {\n width: this.player.media.clientWidth,\n height: this.player.media.clientHeight,\n });\n this.elements.scrubbing.container.style.width = `${width}px`;\n this.elements.scrubbing.container.style.height = `${height}px`;\n }\n\n // Sprites need to be offset to the correct location\n setImageSizeAndOffset(previewImage, frame) {\n if (!this.usingSprites) {\n return;\n }\n\n // Find difference between height and preview container height\n const multiplier = this.thumbContainerHeight / frame.h;\n\n // eslint-disable-next-line no-param-reassign\n previewImage.style.height = `${previewImage.naturalHeight * multiplier}px`;\n // eslint-disable-next-line no-param-reassign\n previewImage.style.width = `${previewImage.naturalWidth * multiplier}px`;\n // eslint-disable-next-line no-param-reassign\n previewImage.style.left = `-${frame.x * multiplier}px`;\n // eslint-disable-next-line no-param-reassign\n previewImage.style.top = `-${frame.y * multiplier}px`;\n }\n}\n\nexport default PreviewThumbnails;\n","// ==========================================================================\n// Plyr source update\n// ==========================================================================\n\nimport { providers } from './config/types';\nimport html5 from './html5';\nimport media from './media';\nimport PreviewThumbnails from './plugins/preview-thumbnails';\nimport support from './support';\nimport ui from './ui';\nimport { createElement, insertElement, removeElement } from './utils/elements';\nimport is from './utils/is';\nimport { getDeep } from './utils/objects';\n\nconst source = {\n // Add elements to HTML5 media (source, tracks, etc)\n insertElements(type, attributes) {\n if (is.string(attributes)) {\n insertElement(type, this.media, {\n src: attributes,\n });\n } else if (is.array(attributes)) {\n attributes.forEach(attribute => {\n insertElement(type, this.media, attribute);\n });\n }\n },\n\n // Update source\n // Sources are not checked for support so be careful\n change(input) {\n if (!getDeep(input, 'sources.length')) {\n this.debug.warn('Invalid source format');\n return;\n }\n\n // Cancel current network requests\n html5.cancelRequests.call(this);\n\n // Destroy instance and re-setup\n this.destroy.call(\n this,\n () => {\n // Reset quality options\n this.options.quality = [];\n\n // Remove elements\n removeElement(this.media);\n this.media = null;\n\n // Reset class name\n if (is.element(this.elements.container)) {\n this.elements.container.removeAttribute('class');\n }\n\n // Set the type and provider\n const { sources, type } = input;\n const [{ provider = providers.html5, src }] = sources;\n const tagName = provider === 'html5' ? type : 'div';\n const attributes = provider === 'html5' ? {} : { src };\n\n Object.assign(this, {\n provider,\n type,\n // Check for support\n supported: support.check(type, provider, this.config.playsinline),\n // Create new element\n media: createElement(tagName, attributes),\n });\n\n // Inject the new element\n this.elements.container.appendChild(this.media);\n\n // Autoplay the new source?\n if (is.boolean(input.autoplay)) {\n this.config.autoplay = input.autoplay;\n }\n\n // Set attributes for audio and video\n if (this.isHTML5) {\n if (this.config.crossorigin) {\n this.media.setAttribute('crossorigin', '');\n }\n if (this.config.autoplay) {\n this.media.setAttribute('autoplay', '');\n }\n if (!is.empty(input.poster)) {\n this.poster = input.poster;\n }\n if (this.config.loop.active) {\n this.media.setAttribute('loop', '');\n }\n if (this.config.muted) {\n this.media.setAttribute('muted', '');\n }\n if (this.config.playsinline) {\n this.media.setAttribute('playsinline', '');\n }\n }\n\n // Restore class hook\n ui.addStyleHook.call(this);\n\n // Set new sources for html5\n if (this.isHTML5) {\n source.insertElements.call(this, 'source', sources);\n }\n\n // Set video title\n this.config.title = input.title;\n\n // Set up from scratch\n media.setup.call(this);\n\n // HTML5 stuff\n if (this.isHTML5) {\n // Setup captions\n if (Object.keys(input).includes('tracks')) {\n source.insertElements.call(this, 'track', input.tracks);\n }\n }\n\n // If HTML5 or embed but not fully supported, setupInterface and call ready now\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n // Setup interface\n ui.build.call(this);\n }\n\n // Load HTML5 sources\n if (this.isHTML5) {\n this.media.load();\n }\n\n // Update previewThumbnails config & reload plugin\n if (!is.empty(input.previewThumbnails)) {\n Object.assign(this.config.previewThumbnails, input.previewThumbnails);\n\n // Cleanup previewThumbnails plugin if it was loaded\n if (this.previewThumbnails && this.previewThumbnails.loaded) {\n this.previewThumbnails.destroy();\n this.previewThumbnails = null;\n }\n\n // Create new instance if it is still enabled\n if (this.config.previewThumbnails.enabled) {\n this.previewThumbnails = new PreviewThumbnails(this);\n }\n }\n\n // Update the fullscreen support\n this.fullscreen.update();\n },\n true,\n );\n },\n};\n\nexport default source;\n","// ==========================================================================\n// Plyr\n// plyr.js v3.5.10\n// https://github.com/sampotts/plyr\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport captions from './captions';\nimport defaults from './config/defaults';\nimport { pip } from './config/states';\nimport { getProviderByUrl, providers, types } from './config/types';\nimport Console from './console';\nimport controls from './controls';\nimport Fullscreen from './fullscreen';\nimport Listeners from './listeners';\nimport media from './media';\nimport Ads from './plugins/ads';\nimport PreviewThumbnails from './plugins/preview-thumbnails';\nimport source from './source';\nimport Storage from './storage';\nimport support from './support';\nimport ui from './ui';\nimport { closest } from './utils/arrays';\nimport { createElement, hasClass, removeElement, replaceElement, toggleClass, wrap } from './utils/elements';\nimport { off, on, once, triggerEvent, unbindListeners } from './utils/events';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { clamp } from './utils/numbers';\nimport { cloneDeep, extend } from './utils/objects';\nimport { getAspectRatio, reduceAspectRatio, setAspectRatio, validateRatio } from './utils/style';\nimport { parseUrl } from './utils/urls';\n\n// Private properties\n// TODO: Use a WeakMap for private globals\n// const globals = new WeakMap();\n\n// Plyr instance\nclass Plyr {\n constructor(target, options) {\n this.timers = {};\n\n // State\n this.ready = false;\n this.loading = false;\n this.failed = false;\n\n // Touch device\n this.touch = support.touch;\n\n // Set the media element\n this.media = target;\n\n // String selector passed\n if (is.string(this.media)) {\n this.media = document.querySelectorAll(this.media);\n }\n\n // jQuery, NodeList or Array passed, use first element\n if ((window.jQuery && this.media instanceof jQuery) || is.nodeList(this.media) || is.array(this.media)) {\n // eslint-disable-next-line\n this.media = this.media[0];\n }\n\n // Set config\n this.config = extend(\n {},\n defaults,\n Plyr.defaults,\n options || {},\n (() => {\n try {\n return JSON.parse(this.media.getAttribute('data-plyr-config'));\n } catch (e) {\n return {};\n }\n })(),\n );\n\n // Elements cache\n this.elements = {\n container: null,\n captions: null,\n buttons: {},\n display: {},\n progress: {},\n inputs: {},\n settings: {\n popup: null,\n menu: null,\n panels: {},\n buttons: {},\n },\n };\n\n // Captions\n this.captions = {\n active: null,\n currentTrack: -1,\n meta: new WeakMap(),\n };\n\n // Fullscreen\n this.fullscreen = {\n active: false,\n };\n\n // Options\n this.options = {\n speed: [],\n quality: [],\n };\n\n // Debugging\n // TODO: move to globals\n this.debug = new Console(this.config.debug);\n\n // Log config options and support\n this.debug.log('Config', this.config);\n this.debug.log('Support', support);\n\n // We need an element to setup\n if (is.nullOrUndefined(this.media) || !is.element(this.media)) {\n this.debug.error('Setup failed: no suitable element passed');\n return;\n }\n\n // Bail if the element is initialized\n if (this.media.plyr) {\n this.debug.warn('Target already setup');\n return;\n }\n\n // Bail if not enabled\n if (!this.config.enabled) {\n this.debug.error('Setup failed: disabled by config');\n return;\n }\n\n // Bail if disabled or no basic support\n // You may want to disable certain UAs etc\n if (!support.check().api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n // Cache original element state for .destroy()\n const clone = this.media.cloneNode(true);\n clone.autoplay = false;\n this.elements.original = clone;\n\n // Set media type based on tag or data attribute\n // Supported: video, audio, vimeo, youtube\n const type = this.media.tagName.toLowerCase();\n // Embed properties\n let iframe = null;\n let url = null;\n\n // Different setup based on type\n switch (type) {\n case 'div':\n // Find the frame\n iframe = this.media.querySelector('iframe');\n\n // <iframe> type\n if (is.element(iframe)) {\n // Detect provider\n url = parseUrl(iframe.getAttribute('src'));\n this.provider = getProviderByUrl(url.toString());\n\n // Rework elements\n this.elements.container = this.media;\n this.media = iframe;\n\n // Reset classname\n this.elements.container.className = '';\n\n // Get attributes from URL and set config\n if (url.search.length) {\n const truthy = ['1', 'true'];\n\n if (truthy.includes(url.searchParams.get('autoplay'))) {\n this.config.autoplay = true;\n }\n if (truthy.includes(url.searchParams.get('loop'))) {\n this.config.loop.active = true;\n }\n\n // TODO: replace fullscreen.iosNative with this playsinline config option\n // YouTube requires the playsinline in the URL\n if (this.isYouTube) {\n this.config.playsinline = truthy.includes(url.searchParams.get('playsinline'));\n this.config.youtube.hl = url.searchParams.get('hl'); // TODO: Should this be setting language?\n } else {\n this.config.playsinline = true;\n }\n }\n } else {\n // <div> with attributes\n this.provider = this.media.getAttribute(this.config.attributes.embed.provider);\n\n // Remove attribute\n this.media.removeAttribute(this.config.attributes.embed.provider);\n }\n\n // Unsupported or missing provider\n if (is.empty(this.provider) || !Object.keys(providers).includes(this.provider)) {\n this.debug.error('Setup failed: Invalid provider');\n return;\n }\n\n // Audio will come later for external providers\n this.type = types.video;\n\n break;\n\n case 'video':\n case 'audio':\n this.type = type;\n this.provider = providers.html5;\n\n // Get config from attributes\n if (this.media.hasAttribute('crossorigin')) {\n this.config.crossorigin = true;\n }\n if (this.media.hasAttribute('autoplay')) {\n this.config.autoplay = true;\n }\n if (this.media.hasAttribute('playsinline') || this.media.hasAttribute('webkit-playsinline')) {\n this.config.playsinline = true;\n }\n if (this.media.hasAttribute('muted')) {\n this.config.muted = true;\n }\n if (this.media.hasAttribute('loop')) {\n this.config.loop.active = true;\n }\n\n break;\n\n default:\n this.debug.error('Setup failed: unsupported type');\n return;\n }\n\n // Check for support again but with type\n this.supported = support.check(this.type, this.provider, this.config.playsinline);\n\n // If no support for even API, bail\n if (!this.supported.api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n this.eventListeners = [];\n\n // Create listeners\n this.listeners = new Listeners(this);\n\n // Setup local storage for user settings\n this.storage = new Storage(this);\n\n // Store reference\n this.media.plyr = this;\n\n // Wrap media\n if (!is.element(this.elements.container)) {\n this.elements.container = createElement('div', { tabindex: 0 });\n wrap(this.media, this.elements.container);\n }\n\n // Add style hook\n ui.addStyleHook.call(this);\n\n // Setup media\n media.setup.call(this);\n\n // Listen for events if debugging\n if (this.config.debug) {\n on.call(this, this.elements.container, this.config.events.join(' '), event => {\n this.debug.log(`event: ${event.type}`);\n });\n }\n\n // Setup interface\n // If embed but not fully supported, build interface now to avoid flash of controls\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n ui.build.call(this);\n }\n\n // Container listeners\n this.listeners.container();\n\n // Global listeners\n this.listeners.global();\n\n // Setup fullscreen\n this.fullscreen = new Fullscreen(this);\n\n // Setup ads if provided\n if (this.config.ads.enabled) {\n this.ads = new Ads(this);\n }\n\n // Autoplay if required\n if (this.isHTML5 && this.config.autoplay) {\n setTimeout(() => this.play(), 10);\n }\n\n // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek\n this.lastSeekTime = 0;\n\n // Setup preview thumbnails if enabled\n if (this.config.previewThumbnails.enabled) {\n this.previewThumbnails = new PreviewThumbnails(this);\n }\n }\n\n // ---------------------------------------\n // API\n // ---------------------------------------\n\n /**\n * Types and provider helpers\n */\n get isHTML5() {\n return this.provider === providers.html5;\n }\n\n get isEmbed() {\n return this.isYouTube || this.isVimeo;\n }\n\n get isYouTube() {\n return this.provider === providers.youtube;\n }\n\n get isVimeo() {\n return this.provider === providers.vimeo;\n }\n\n get isVideo() {\n return this.type === types.video;\n }\n\n get isAudio() {\n return this.type === types.audio;\n }\n\n /**\n * Play the media, or play the advertisement (if they are not blocked)\n */\n play() {\n if (!is.function(this.media.play)) {\n return null;\n }\n\n // Intecept play with ads\n if (this.ads && this.ads.enabled) {\n this.ads.managerPromise.then(() => this.ads.play()).catch(() => this.media.play());\n }\n\n // Return the promise (for HTML5)\n return this.media.play();\n }\n\n /**\n * Pause the media\n */\n pause() {\n if (!this.playing || !is.function(this.media.pause)) {\n return null;\n }\n\n return this.media.pause();\n }\n\n /**\n * Get playing state\n */\n get playing() {\n return Boolean(this.ready && !this.paused && !this.ended);\n }\n\n /**\n * Get paused state\n */\n get paused() {\n return Boolean(this.media.paused);\n }\n\n /**\n * Get stopped state\n */\n get stopped() {\n return Boolean(this.paused && this.currentTime === 0);\n }\n\n /**\n * Get ended state\n */\n get ended() {\n return Boolean(this.media.ended);\n }\n\n /**\n * Toggle playback based on current status\n * @param {Boolean} input\n */\n togglePlay(input) {\n // Toggle based on current state if nothing passed\n const toggle = is.boolean(input) ? input : !this.playing;\n\n if (toggle) {\n return this.play();\n }\n\n return this.pause();\n }\n\n /**\n * Stop playback\n */\n stop() {\n if (this.isHTML5) {\n this.pause();\n this.restart();\n } else if (is.function(this.media.stop)) {\n this.media.stop();\n }\n }\n\n /**\n * Restart playback\n */\n restart() {\n this.currentTime = 0;\n }\n\n /**\n * Rewind\n * @param {Number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n */\n rewind(seekTime) {\n this.currentTime -= is.number(seekTime) ? seekTime : this.config.seekTime;\n }\n\n /**\n * Fast forward\n * @param {Number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n */\n forward(seekTime) {\n this.currentTime += is.number(seekTime) ? seekTime : this.config.seekTime;\n }\n\n /**\n * Seek to a time\n * @param {Number} input - where to seek to in seconds. Defaults to 0 (the start)\n */\n set currentTime(input) {\n // Bail if media duration isn't available yet\n if (!this.duration) {\n return;\n }\n\n // Validate input\n const inputIsValid = is.number(input) && input > 0;\n\n // Set\n this.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0;\n\n // Logging\n this.debug.log(`Seeking to ${this.currentTime} seconds`);\n }\n\n /**\n * Get current time\n */\n get currentTime() {\n return Number(this.media.currentTime);\n }\n\n /**\n * Get buffered\n */\n get buffered() {\n const { buffered } = this.media;\n\n // YouTube / Vimeo return a float between 0-1\n if (is.number(buffered)) {\n return buffered;\n }\n\n // HTML5\n // TODO: Handle buffered chunks of the media\n // (i.e. seek to another section buffers only that section)\n if (buffered && buffered.length && this.duration > 0) {\n return buffered.end(0) / this.duration;\n }\n\n return 0;\n }\n\n /**\n * Get seeking status\n */\n get seeking() {\n return Boolean(this.media.seeking);\n }\n\n /**\n * Get the duration of the current media\n */\n get duration() {\n // Faux duration set via config\n const fauxDuration = parseFloat(this.config.duration);\n // Media duration can be NaN or Infinity before the media has loaded\n const realDuration = (this.media || {}).duration;\n const duration = !is.number(realDuration) || realDuration === Infinity ? 0 : realDuration;\n\n // If config duration is funky, use regular duration\n return fauxDuration || duration;\n }\n\n /**\n * Set the player volume\n * @param {Number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n */\n set volume(value) {\n let volume = value;\n const max = 1;\n const min = 0;\n\n if (is.string(volume)) {\n volume = Number(volume);\n }\n\n // Load volume from storage if no value specified\n if (!is.number(volume)) {\n volume = this.storage.get('volume');\n }\n\n // Use config if all else fails\n if (!is.number(volume)) {\n ({ volume } = this.config);\n }\n\n // Maximum is volumeMax\n if (volume > max) {\n volume = max;\n }\n // Minimum is volumeMin\n if (volume < min) {\n volume = min;\n }\n\n // Update config\n this.config.volume = volume;\n\n // Set the player volume\n this.media.volume = volume;\n\n // If muted, and we're increasing volume manually, reset muted state\n if (!is.empty(value) && this.muted && volume > 0) {\n this.muted = false;\n }\n }\n\n /**\n * Get the current player volume\n */\n get volume() {\n return Number(this.media.volume);\n }\n\n /**\n * Increase volume\n * @param {Boolean} step - How much to decrease by (between 0 and 1)\n */\n increaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume + (is.number(step) ? step : 0);\n }\n\n /**\n * Decrease volume\n * @param {Boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n this.increaseVolume(-step);\n }\n\n /**\n * Set muted state\n * @param {Boolean} mute\n */\n set muted(mute) {\n let toggle = mute;\n\n // Load muted state from storage\n if (!is.boolean(toggle)) {\n toggle = this.storage.get('muted');\n }\n\n // Use config if all else fails\n if (!is.boolean(toggle)) {\n toggle = this.config.muted;\n }\n\n // Update config\n this.config.muted = toggle;\n\n // Set mute on the player\n this.media.muted = toggle;\n }\n\n /**\n * Get current muted state\n */\n get muted() {\n return Boolean(this.media.muted);\n }\n\n /**\n * Check if the media has audio\n */\n get hasAudio() {\n // Assume yes for all non HTML5 (as we can't tell...)\n if (!this.isHTML5) {\n return true;\n }\n\n if (this.isAudio) {\n return true;\n }\n\n // Get audio tracks\n return (\n Boolean(this.media.mozHasAudio) ||\n Boolean(this.media.webkitAudioDecodedByteCount) ||\n Boolean(this.media.audioTracks && this.media.audioTracks.length)\n );\n }\n\n /**\n * Set playback speed\n * @param {Number} speed - the speed of playback (0.5-2.0)\n */\n set speed(input) {\n let speed = null;\n\n if (is.number(input)) {\n speed = input;\n }\n\n if (!is.number(speed)) {\n speed = this.storage.get('speed');\n }\n\n if (!is.number(speed)) {\n speed = this.config.speed.selected;\n }\n\n // Clamp to min/max\n const { minimumSpeed: min, maximumSpeed: max } = this;\n speed = clamp(speed, min, max);\n\n // Update config\n this.config.speed.selected = speed;\n\n // Set media speed\n setTimeout(() => {\n this.media.playbackRate = speed;\n }, 0);\n }\n\n /**\n * Get current playback speed\n */\n get speed() {\n return Number(this.media.playbackRate);\n }\n\n /**\n * Get the minimum allowed speed\n */\n get minimumSpeed() {\n if (this.isYouTube) {\n // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n return Math.min(...this.options.speed);\n }\n\n if (this.isVimeo) {\n // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n return 0.5;\n }\n\n // https://stackoverflow.com/a/32320020/1191319\n return 0.0625;\n }\n\n /**\n * Get the maximum allowed speed\n */\n get maximumSpeed() {\n if (this.isYouTube) {\n // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n return Math.max(...this.options.speed);\n }\n\n if (this.isVimeo) {\n // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n return 2;\n }\n\n // https://stackoverflow.com/a/32320020/1191319\n return 16;\n }\n\n /**\n * Set playback quality\n * Currently HTML5 & YouTube only\n * @param {Number} input - Quality level\n */\n set quality(input) {\n const config = this.config.quality;\n const options = this.options.quality;\n\n if (!options.length) {\n return;\n }\n\n let quality = [\n !is.empty(input) && Number(input),\n this.storage.get('quality'),\n config.selected,\n config.default,\n ].find(is.number);\n\n let updateStorage = true;\n\n if (!options.includes(quality)) {\n const value = closest(options, quality);\n this.debug.warn(`Unsupported quality option: ${quality}, using ${value} instead`);\n quality = value;\n\n // Don't update storage if quality is not supported\n updateStorage = false;\n }\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\n\n // Save to storage\n if (updateStorage) {\n this.storage.set({ quality });\n }\n }\n\n /**\n * Get current quality level\n */\n get quality() {\n return this.media.quality;\n }\n\n /**\n * Toggle loop\n * TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n * @param {Boolean} input - Whether to loop or not\n */\n set loop(input) {\n const toggle = is.boolean(input) ? input : this.config.loop.active;\n this.config.loop.active = toggle;\n this.media.loop = toggle;\n\n // Set default to be a true toggle\n /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle';\n\n switch (type) {\n case 'start':\n if (this.config.loop.end && this.config.loop.end <= this.currentTime) {\n this.config.loop.end = null;\n }\n this.config.loop.start = this.currentTime;\n // this.config.loop.indicator.start = this.elements.display.played.value;\n break;\n\n case 'end':\n if (this.config.loop.start >= this.currentTime) {\n return this;\n }\n this.config.loop.end = this.currentTime;\n // this.config.loop.indicator.end = this.elements.display.played.value;\n break;\n\n case 'all':\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n this.config.loop.indicator.start = 0;\n this.config.loop.indicator.end = 100;\n break;\n\n case 'toggle':\n if (this.config.loop.active) {\n this.config.loop.start = 0;\n this.config.loop.end = null;\n } else {\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n }\n break;\n\n default:\n this.config.loop.start = 0;\n this.config.loop.end = null;\n break;\n } */\n }\n\n /**\n * Get current loop state\n */\n get loop() {\n return Boolean(this.media.loop);\n }\n\n /**\n * Set new media source\n * @param {Object} input - The new source object (see docs)\n */\n set source(input) {\n source.change.call(this, input);\n }\n\n /**\n * Get current source\n */\n get source() {\n return this.media.currentSrc;\n }\n\n /**\n * Get a download URL (either source or custom)\n */\n get download() {\n const { download } = this.config.urls;\n\n return is.url(download) ? download : this.source;\n }\n\n /**\n * Set the download URL\n */\n set download(input) {\n if (!is.url(input)) {\n return;\n }\n\n this.config.urls.download = input;\n\n controls.setDownloadUrl.call(this);\n }\n\n /**\n * Set the poster image for a video\n * @param {String} input - the URL for the new poster image\n */\n set poster(input) {\n if (!this.isVideo) {\n this.debug.warn('Poster can only be set for video');\n return;\n }\n\n ui.setPoster.call(this, input, false).catch(() => {});\n }\n\n /**\n * Get the current poster image\n */\n get poster() {\n if (!this.isVideo) {\n return null;\n }\n\n return this.media.getAttribute('poster');\n }\n\n /**\n * Get the current aspect ratio in use\n */\n get ratio() {\n if (!this.isVideo) {\n return null;\n }\n\n const ratio = reduceAspectRatio(getAspectRatio.call(this));\n\n return is.array(ratio) ? ratio.join(':') : ratio;\n }\n\n /**\n * Set video aspect ratio\n */\n set ratio(input) {\n if (!this.isVideo) {\n this.debug.warn('Aspect ratio can only be set for video');\n return;\n }\n\n if (!is.string(input) || !validateRatio(input)) {\n this.debug.error(`Invalid aspect ratio specified (${input})`);\n return;\n }\n\n this.config.ratio = input;\n\n setAspectRatio.call(this);\n }\n\n /**\n * Set the autoplay state\n * @param {Boolean} input - Whether to autoplay or not\n */\n set autoplay(input) {\n const toggle = is.boolean(input) ? input : this.config.autoplay;\n this.config.autoplay = toggle;\n }\n\n /**\n * Get the current autoplay state\n */\n get autoplay() {\n return Boolean(this.config.autoplay);\n }\n\n /**\n * Toggle captions\n * @param {Boolean} input - Whether to enable captions\n */\n toggleCaptions(input) {\n captions.toggle.call(this, input, false);\n }\n\n /**\n * Set the caption track by index\n * @param {Number} - Caption index\n */\n set currentTrack(input) {\n captions.set.call(this, input, false);\n }\n\n /**\n * Get the current caption track index (-1 if disabled)\n */\n get currentTrack() {\n const { toggled, currentTrack } = this.captions;\n return toggled ? currentTrack : -1;\n }\n\n /**\n * Set the wanted language for captions\n * Since tracks can be added later it won't update the actual caption track until there is a matching track\n * @param {String} - Two character ISO language code (e.g. EN, FR, PT, etc)\n */\n set language(input) {\n captions.setLanguage.call(this, input, false);\n }\n\n /**\n * Get the current track's language\n */\n get language() {\n return (captions.getCurrentTrack.call(this) || {}).language;\n }\n\n /**\n * Toggle picture-in-picture playback on WebKit/MacOS\n * TODO: update player with state, support, enabled\n * TODO: detect outside changes\n */\n set pip(input) {\n // Bail if no support\n if (!support.pip) {\n return;\n }\n\n // Toggle based on current state if not passed\n const toggle = is.boolean(input) ? input : !this.pip;\n\n // Toggle based on current state\n // Safari\n if (is.function(this.media.webkitSetPresentationMode)) {\n this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n }\n\n // Chrome\n if (is.function(this.media.requestPictureInPicture)) {\n if (!this.pip && toggle) {\n this.media.requestPictureInPicture();\n } else if (this.pip && !toggle) {\n document.exitPictureInPicture();\n }\n }\n }\n\n /**\n * Get the current picture-in-picture state\n */\n get pip() {\n if (!support.pip) {\n return null;\n }\n\n // Safari\n if (!is.empty(this.media.webkitPresentationMode)) {\n return this.media.webkitPresentationMode === pip.active;\n }\n\n // Chrome\n return this.media === document.pictureInPictureElement;\n }\n\n /**\n * Trigger the airplay dialog\n * TODO: update player with state, support, enabled\n */\n airplay() {\n // Show dialog if supported\n if (support.airplay) {\n this.media.webkitShowPlaybackTargetPicker();\n }\n }\n\n /**\n * Toggle the player controls\n * @param {Boolean} [toggle] - Whether to show the controls\n */\n toggleControls(toggle) {\n // Don't toggle if missing UI support or if it's audio\n if (this.supported.ui && !this.isAudio) {\n // Get state before change\n const isHidden = hasClass(this.elements.container, this.config.classNames.hideControls);\n // Negate the argument if not undefined since adding the class to hides the controls\n const force = typeof toggle === 'undefined' ? undefined : !toggle;\n // Apply and get updated state\n const hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force);\n\n // Close menu\n if (hiding && this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n controls.toggleMenu.call(this, false);\n }\n\n // Trigger event on change\n if (hiding !== isHidden) {\n const eventName = hiding ? 'controlshidden' : 'controlsshown';\n triggerEvent.call(this, this.media, eventName);\n }\n\n return !hiding;\n }\n\n return false;\n }\n\n /**\n * Add event listeners\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n */\n on(event, callback) {\n on.call(this, this.elements.container, event, callback);\n }\n\n /**\n * Add event listeners once\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n */\n once(event, callback) {\n once.call(this, this.elements.container, event, callback);\n }\n\n /**\n * Remove event listeners\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n */\n off(event, callback) {\n off(this.elements.container, event, callback);\n }\n\n /**\n * Destroy an instance\n * Event listeners are removed when elements are removed\n * http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n * @param {Function} callback - Callback for when destroy is complete\n * @param {Boolean} soft - Whether it's a soft destroy (for source changes etc)\n */\n destroy(callback, soft = false) {\n if (!this.ready) {\n return;\n }\n\n const done = () => {\n // Reset overflow (incase destroyed while in fullscreen)\n document.body.style.overflow = '';\n\n // GC for embed\n this.embed = null;\n\n // If it's a soft destroy, make minimal changes\n if (soft) {\n if (Object.keys(this.elements).length) {\n // Remove elements\n removeElement(this.elements.buttons.play);\n removeElement(this.elements.captions);\n removeElement(this.elements.controls);\n removeElement(this.elements.wrapper);\n\n // Clear for GC\n this.elements.buttons.play = null;\n this.elements.captions = null;\n this.elements.controls = null;\n this.elements.wrapper = null;\n }\n\n // Callback\n if (is.function(callback)) {\n callback();\n }\n } else {\n // Unbind listeners\n unbindListeners.call(this);\n\n // Replace the container with the original element provided\n replaceElement(this.elements.original, this.elements.container);\n\n // Event\n triggerEvent.call(this, this.elements.original, 'destroyed', true);\n\n // Callback\n if (is.function(callback)) {\n callback.call(this.elements.original);\n }\n\n // Reset state\n this.ready = false;\n\n // Clear for garbage collection\n setTimeout(() => {\n this.elements = null;\n this.media = null;\n }, 200);\n }\n };\n\n // Stop playback\n this.stop();\n\n // Clear timeouts\n clearTimeout(this.timers.loading);\n clearTimeout(this.timers.controls);\n clearTimeout(this.timers.resized);\n\n // Provider specific stuff\n if (this.isHTML5) {\n // Restore native video controls\n ui.toggleNativeControls.call(this, true);\n\n // Clean up\n done();\n } else if (this.isYouTube) {\n // Clear timers\n clearInterval(this.timers.buffering);\n clearInterval(this.timers.playing);\n\n // Destroy YouTube API\n if (this.embed !== null && is.function(this.embed.destroy)) {\n this.embed.destroy();\n }\n\n // Clean up\n done();\n } else if (this.isVimeo) {\n // Destroy Vimeo API\n // then clean up (wait, to prevent postmessage errors)\n if (this.embed !== null) {\n this.embed.unload().then(done);\n }\n\n // Vimeo does not always return\n setTimeout(done, 200);\n }\n }\n\n /**\n * Check for support for a mime type (HTML5 only)\n * @param {String} type - Mime type\n */\n supports(type) {\n return support.mime.call(this, type);\n }\n\n /**\n * Check for support\n * @param {String} type - Player type (audio/video)\n * @param {String} provider - Provider (html5/youtube/vimeo)\n * @param {Boolean} inline - Where player has `playsinline` sttribute\n */\n static supported(type, provider, inline) {\n return support.check(type, provider, inline);\n }\n\n /**\n * Load an SVG sprite into the page\n * @param {String} url - URL for the SVG sprite\n * @param {String} [id] - Unique ID\n */\n static loadSprite(url, id) {\n return loadSprite(url, id);\n }\n\n /**\n * Setup multiple instances\n * @param {*} selector\n * @param {Object} options\n */\n static setup(selector, options = {}) {\n let targets = null;\n\n if (is.string(selector)) {\n targets = Array.from(document.querySelectorAll(selector));\n } else if (is.nodeList(selector)) {\n targets = Array.from(selector);\n } else if (is.array(selector)) {\n targets = selector.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n return targets.map(t => new Plyr(t, options));\n }\n}\n\nPlyr.defaults = cloneDeep(defaults);\n\nexport default Plyr;\n","/**\n * Returns a number whose value is limited to the given range.\n *\n * Example: limit the output of this computation to between 0 and 255\n * (x * 255).clamp(0, 255)\n *\n * @param {Number} input\n * @param {Number} min The lower boundary of the output range\n * @param {Number} max The upper boundary of the output range\n * @returns A number in the range [min, max]\n * @type Number\n */\nexport function clamp(input = 0, min = 0, max = 255) {\n return Math.min(Math.max(input, min), max);\n}\n\nexport default { clamp };\n","const sources = {\n video: {\n type: 'video',\n title: 'View From A Blue Moon',\n sources: [\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4',\n type: 'video/mp4',\n size: 576,\n },\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4',\n type: 'video/mp4',\n size: 720,\n },\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4',\n type: 'video/mp4',\n size: 1080,\n },\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4',\n type: 'video/mp4',\n size: 1440,\n },\n ],\n poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg',\n tracks: [\n {\n kind: 'captions',\n label: 'English',\n srclang: 'en',\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n default: true,\n },\n {\n kind: 'captions',\n label: 'French',\n srclang: 'fr',\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt',\n },\n ],\n },\n audio: {\n type: 'audio',\n title: 'Kishi Bashi – “It All Began With A Burst”',\n sources: [\n {\n src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',\n type: 'audio/mp3',\n },\n {\n src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg',\n type: 'audio/ogg',\n },\n ],\n },\n youtube: {\n type: 'video',\n sources: [\n {\n src: 'https://youtube.com/watch?v=bTqVqk7FSmY',\n provider: 'youtube',\n },\n ],\n },\n vimeo: {\n type: 'video',\n sources: [\n {\n src: 'https://vimeo.com/40648169',\n provider: 'vimeo',\n },\n ],\n },\n};\n\nexport default sources;\n","// ==========================================================================\n// Plyr.io demo\n// This code is purely for the https://plyr.io website\n// Please see readme.md in the root or github.com/sampotts/plyr\n// ==========================================================================\n\nimport './tab-focus';\nimport 'custom-event-polyfill';\nimport 'url-polyfill';\n\nimport Raven from 'raven-js';\nimport Shr from 'shr-buttons';\n\nimport Plyr from '../../../src/js/plyr';\nimport sources from './sources';\nimport toggleClass from './toggle-class';\n\n(() => {\n const { host } = window.location;\n const env = {\n prod: host === 'plyr.io',\n dev: host === 'dev.plyr.io',\n };\n\n document.addEventListener('DOMContentLoaded', () => {\n Raven.context(() => {\n const selector = '#player';\n\n // Setup share buttons\n Shr.setup('.js-shr', {\n count: {\n className: 'button__count',\n },\n wrapper: {\n className: 'button--with-count',\n },\n });\n\n // Setup the player\n const player = new Plyr(selector, {\n debug: true,\n title: 'View From A Blue Moon',\n iconUrl: 'dist/demo.svg',\n keyboard: {\n global: true,\n },\n tooltips: {\n controls: true,\n },\n captions: {\n active: true,\n },\n ads: {\n enabled: env.prod || env.dev,\n publisherId: '918848828995742',\n },\n previewThumbnails: {\n enabled: true,\n src: [\n 'https://cdn.plyr.io/static/demo/thumbs/100p.vtt',\n 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt',\n ],\n },\n vimeo: {\n // Prevent Vimeo blocking plyr.io demo site\n referrerPolicy: 'no-referrer',\n },\n });\n\n // Expose for tinkering in the console\n window.player = player;\n\n // Setup type toggle\n const buttons = document.querySelectorAll('[data-source]');\n const types = Object.keys(sources);\n const historySupport = Boolean(window.history && window.history.pushState);\n let currentType = window.location.hash.substring(1);\n const hasCurrentType = !currentType.length;\n\n function render(type) {\n // Remove active classes\n Array.from(buttons).forEach(button => toggleClass(button.parentElement, 'active', false));\n\n // Set active on parent\n toggleClass(document.querySelector(`[data-source=\"${type}\"]`), 'active', true);\n\n // Show cite\n Array.from(document.querySelectorAll('.plyr__cite')).forEach(cite => {\n // eslint-disable-next-line no-param-reassign\n cite.hidden = true;\n });\n\n document.querySelector(`.plyr__cite--${type}`).hidden = false;\n }\n\n // Set a new source\n function setSource(type, init) {\n // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video\n if (\n !types.includes(type) ||\n (!init && type === currentType) ||\n (!currentType.length && type === 'video')\n ) {\n return;\n }\n\n // Set the new source\n player.source = sources[type];\n\n // Set the current type for next time\n currentType = type;\n\n render(type);\n }\n\n // Bind to each button\n Array.from(buttons).forEach(button => {\n button.addEventListener('click', () => {\n const type = button.getAttribute('data-source');\n\n setSource(type);\n\n if (historySupport) {\n window.history.pushState({ type }, '', `#${type}`);\n }\n });\n });\n\n // List for backwards/forwards\n window.addEventListener('popstate', event => {\n if (event.state && Object.keys(event.state).includes('type')) {\n setSource(event.state.type);\n }\n });\n\n // If there's no current type set, assume video\n if (hasCurrentType) {\n currentType = 'video';\n }\n\n // Replace current history state\n if (historySupport && types.includes(currentType)) {\n window.history.replaceState({ type: currentType }, '', hasCurrentType ? '' : `#${currentType}`);\n }\n\n // If it's not video, load the source\n if (currentType !== 'video') {\n setSource(currentType, true);\n }\n\n render(currentType);\n });\n });\n\n // Raven / Sentry\n // For demo site (https://plyr.io) only\n if (env.prod) {\n Raven.config('https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555').install();\n }\n})();\n","// Toggle class on an element\nconst toggleClass = (element, className = '', toggle = false) =>\n element && element.classList[toggle ? 'add' : 'remove'](className);\n\nexport default toggleClass;\n"]}
\ No newline at end of file +{"version":3,"sources":["demo.js","demo/node_modules/core-js/internals/global.js","demo/node_modules/core-js/internals/fails.js","demo/node_modules/core-js/internals/descriptors.js","demo/node_modules/core-js/internals/object-property-is-enumerable.js","demo/node_modules/core-js/internals/create-property-descriptor.js","demo/node_modules/core-js/internals/classof-raw.js","demo/node_modules/core-js/internals/indexed-object.js","demo/node_modules/core-js/internals/require-object-coercible.js","demo/node_modules/core-js/internals/to-indexed-object.js","demo/node_modules/core-js/internals/is-object.js","demo/node_modules/core-js/internals/to-primitive.js","demo/node_modules/core-js/internals/has.js","demo/node_modules/core-js/internals/document-create-element.js","demo/node_modules/core-js/internals/ie8-dom-define.js","demo/node_modules/core-js/internals/object-get-own-property-descriptor.js","demo/node_modules/core-js/internals/an-object.js","demo/node_modules/core-js/internals/object-define-property.js","demo/node_modules/core-js/internals/create-non-enumerable-property.js","demo/node_modules/core-js/internals/set-global.js","demo/node_modules/core-js/internals/shared-store.js","demo/node_modules/core-js/internals/inspect-source.js","demo/node_modules/core-js/internals/internal-state.js","demo/node_modules/core-js/internals/native-weak-map.js","demo/node_modules/core-js/internals/shared.js","demo/node_modules/core-js/internals/uid.js","demo/node_modules/core-js/internals/shared-key.js","demo/node_modules/core-js/internals/hidden-keys.js","demo/node_modules/core-js/internals/redefine.js","demo/node_modules/core-js/internals/path.js","demo/node_modules/core-js/internals/get-built-in.js","demo/node_modules/core-js/internals/to-integer.js","demo/node_modules/core-js/internals/to-length.js","demo/node_modules/core-js/internals/to-absolute-index.js","demo/node_modules/core-js/internals/array-includes.js","demo/node_modules/core-js/internals/object-keys-internal.js","demo/node_modules/core-js/internals/enum-bug-keys.js","demo/node_modules/core-js/internals/object-get-own-property-names.js","demo/node_modules/core-js/internals/object-get-own-property-symbols.js","demo/node_modules/core-js/internals/own-keys.js","demo/node_modules/core-js/internals/copy-constructor-properties.js","demo/node_modules/core-js/internals/is-forced.js","demo/node_modules/core-js/internals/export.js","demo/node_modules/core-js/internals/a-function.js","demo/node_modules/core-js/internals/function-bind-context.js","demo/node_modules/core-js/internals/to-object.js","demo/node_modules/core-js/internals/is-array.js","demo/node_modules/core-js/internals/native-symbol.js","demo/node_modules/core-js/internals/use-symbol-as-uid.js","demo/node_modules/core-js/internals/well-known-symbol.js","demo/node_modules/core-js/internals/array-species-create.js","demo/node_modules/core-js/internals/array-iteration.js","demo/node_modules/core-js/internals/array-method-is-strict.js","demo/node_modules/core-js/internals/array-method-uses-to-length.js","demo/node_modules/core-js/internals/array-for-each.js","demo/node_modules/core-js/modules/es.array.for-each.js","demo/node_modules/core-js/internals/call-with-safe-iteration-closing.js","demo/node_modules/core-js/internals/iterators.js","demo/node_modules/core-js/internals/is-array-iterator-method.js","demo/node_modules/core-js/internals/create-property.js","demo/node_modules/core-js/internals/to-string-tag-support.js","demo/node_modules/core-js/internals/classof.js","demo/node_modules/core-js/internals/get-iterator-method.js","demo/node_modules/core-js/internals/array-from.js","demo/node_modules/core-js/internals/check-correctness-of-iteration.js","demo/node_modules/core-js/modules/es.array.from.js","demo/node_modules/core-js/internals/object-keys.js","demo/node_modules/core-js/internals/object-create.js","demo/node_modules/core-js/internals/object-define-properties.js","demo/node_modules/core-js/internals/html.js","demo/node_modules/core-js/internals/add-to-unscopables.js","demo/node_modules/core-js/modules/es.array.includes.js","demo/node_modules/core-js/internals/engine-user-agent.js","demo/node_modules/core-js/internals/engine-v8-version.js","demo/node_modules/core-js/internals/array-method-has-species-support.js","demo/node_modules/core-js/modules/es.array.map.js","demo/node_modules/core-js/modules/es.object.keys.js","demo/node_modules/core-js/internals/a-possible-prototype.js","demo/node_modules/core-js/internals/object-set-prototype-of.js","demo/node_modules/core-js/internals/inherit-if-required.js","demo/node_modules/core-js/internals/is-regexp.js","demo/node_modules/core-js/internals/regexp-flags.js","demo/node_modules/core-js/internals/regexp-sticky-helpers.js","demo/node_modules/core-js/internals/set-species.js","demo/node_modules/core-js/modules/es.regexp.constructor.js","demo/node_modules/core-js/internals/regexp-exec.js","demo/node_modules/core-js/modules/es.regexp.exec.js","demo/node_modules/core-js/modules/es.regexp.to-string.js","demo/node_modules/core-js/internals/not-a-regexp.js","demo/node_modules/core-js/internals/correct-is-regexp-logic.js","demo/node_modules/core-js/modules/es.string.includes.js","demo/node_modules/core-js/internals/string-multibyte.js","demo/node_modules/core-js/internals/iterators-core.js","demo/node_modules/core-js/internals/correct-prototype-getter.js","demo/node_modules/core-js/internals/object-get-prototype-of.js","demo/node_modules/core-js/internals/set-to-string-tag.js","demo/node_modules/core-js/internals/create-iterator-constructor.js","demo/node_modules/core-js/internals/define-iterator.js","demo/node_modules/core-js/modules/es.string.iterator.js","demo/node_modules/core-js/internals/dom-iterables.js","demo/node_modules/core-js/modules/web.dom-collections.for-each.js","demo/src/js/tab-focus.js","demo/node_modules/custom-event-polyfill/polyfill.js","demo/node_modules/core-js/internals/object-get-own-property-names-external.js","demo/node_modules/core-js/internals/well-known-symbol-wrapped.js","demo/node_modules/core-js/internals/define-well-known-symbol.js","demo/node_modules/core-js/modules/es.symbol.js","demo/node_modules/core-js/modules/es.symbol.description.js","demo/node_modules/core-js/modules/es.symbol.iterator.js","demo/node_modules/core-js/modules/es.array.index-of.js","demo/node_modules/core-js/modules/es.array.iterator.js","demo/node_modules/core-js/modules/es.array.join.js","demo/node_modules/core-js/modules/es.array.slice.js","demo/node_modules/core-js/internals/object-to-string.js","demo/node_modules/core-js/modules/es.object.to-string.js","demo/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","demo/node_modules/core-js/internals/advance-string-index.js","demo/node_modules/core-js/internals/regexp-exec-abstract.js","demo/node_modules/core-js/modules/es.string.replace.js","demo/node_modules/core-js/internals/same-value.js","demo/node_modules/core-js/modules/es.string.search.js","demo/node_modules/core-js/internals/species-constructor.js","demo/node_modules/core-js/modules/es.string.split.js","demo/node_modules/core-js/modules/web.dom-collections.iterator.js","demo/node_modules/core-js/internals/native-url.js","demo/node_modules/core-js/internals/an-instance.js","demo/node_modules/core-js/internals/object-assign.js","demo/node_modules/core-js/internals/string-punycode-to-ascii.js","demo/node_modules/core-js/internals/redefine-all.js","demo/node_modules/core-js/internals/get-iterator.js","demo/node_modules/core-js/modules/web.url-search-params.js","demo/node_modules/core-js/modules/web.url.js","demo/node_modules/url-polyfill/url-polyfill.js","demo/node_modules/core-js/modules/es.symbol.async-iterator.js","demo/node_modules/core-js/modules/es.array.concat.js","demo/node_modules/core-js/modules/es.object.assign.js","demo/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","demo/node_modules/core-js/internals/native-promise-constructor.js","demo/node_modules/core-js/internals/task.js","demo/node_modules/core-js/internals/iterate.js","demo/node_modules/core-js/internals/engine-is-ios.js","demo/node_modules/core-js/internals/microtask.js","demo/node_modules/core-js/modules/es.promise.js","demo/node_modules/core-js/internals/new-promise-capability.js","demo/node_modules/core-js/internals/promise-resolve.js","demo/node_modules/core-js/internals/perform.js","demo/node_modules/core-js/internals/host-report-errors.js","demo/node_modules/tslib/tslib.es6.js","demo/node_modules/@sentry/types/esm/severity.js","demo/node_modules/@sentry/types/esm/status.js","demo/node_modules/core-js/modules/es.function.name.js","demo/node_modules/@sentry/utils/esm/polyfill.js","demo/node_modules/@sentry/utils/esm/error.js","demo/node_modules/@sentry/utils/esm/is.js","demo/node_modules/core-js/modules/es.string.match.js","demo/node_modules/core-js/internals/array-buffer-native.js","demo/node_modules/core-js/internals/array-buffer-view-core.js","demo/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","demo/node_modules/core-js/internals/to-index.js","demo/node_modules/core-js/internals/ieee754.js","demo/node_modules/core-js/internals/array-fill.js","demo/node_modules/core-js/internals/array-buffer.js","demo/node_modules/core-js/internals/to-offset.js","demo/node_modules/core-js/internals/to-positive-integer.js","demo/node_modules/core-js/internals/typed-array-from.js","demo/node_modules/core-js/internals/typed-array-constructor.js","demo/node_modules/core-js/modules/es.typed-array.uint16-array.js","demo/node_modules/core-js/internals/array-copy-within.js","demo/node_modules/core-js/modules/es.typed-array.copy-within.js","demo/node_modules/core-js/modules/es.typed-array.every.js","demo/node_modules/core-js/modules/es.typed-array.fill.js","demo/node_modules/core-js/modules/es.typed-array.filter.js","demo/node_modules/core-js/modules/es.typed-array.find.js","demo/node_modules/core-js/modules/es.typed-array.find-index.js","demo/node_modules/core-js/modules/es.typed-array.for-each.js","demo/node_modules/core-js/modules/es.typed-array.includes.js","demo/node_modules/core-js/modules/es.typed-array.index-of.js","demo/node_modules/core-js/modules/es.typed-array.iterator.js","demo/node_modules/core-js/modules/es.typed-array.join.js","demo/node_modules/core-js/internals/array-last-index-of.js","demo/node_modules/core-js/modules/es.typed-array.last-index-of.js","demo/node_modules/core-js/modules/es.typed-array.map.js","demo/node_modules/core-js/internals/array-reduce.js","demo/node_modules/core-js/modules/es.typed-array.reduce.js","demo/node_modules/core-js/modules/es.typed-array.reduce-right.js","demo/node_modules/core-js/modules/es.typed-array.reverse.js","demo/node_modules/core-js/modules/es.typed-array.set.js","demo/node_modules/core-js/modules/es.typed-array.slice.js","demo/node_modules/core-js/modules/es.typed-array.some.js","demo/node_modules/core-js/modules/es.typed-array.sort.js","demo/node_modules/core-js/modules/es.typed-array.subarray.js","demo/node_modules/core-js/modules/es.typed-array.to-locale-string.js","demo/node_modules/core-js/modules/es.typed-array.to-string.js","demo/node_modules/@sentry/utils/esm/string.js","demo/node_modules/@sentry/utils/esm/misc.js","demo/node_modules/@sentry/utils/esm/logger.js","demo/node_modules/core-js/modules/es.array.splice.js","demo/node_modules/core-js/internals/freezing.js","demo/node_modules/core-js/internals/internal-metadata.js","demo/node_modules/core-js/internals/collection-weak.js","demo/node_modules/core-js/internals/collection.js","demo/node_modules/core-js/modules/es.weak-set.js","demo/node_modules/@sentry/utils/esm/memo.js","demo/node_modules/@sentry/utils/esm/object.js","demo/node_modules/core-js/modules/web.url.to-json.js","demo/node_modules/core-js/modules/es.array.filter.js","demo/node_modules/core-js/modules/es.promise.finally.js","demo/node_modules/@sentry/utils/esm/syncpromise.js","demo/node_modules/@sentry/utils/esm/promisebuffer.js","demo/node_modules/@sentry/utils/esm/supports.js","demo/node_modules/@sentry/utils/esm/instrument.js","demo/node_modules/@sentry/utils/esm/dsn.js","demo/node_modules/@sentry/hub/esm/scope.js","demo/node_modules/@sentry/hub/esm/hub.js","demo/node_modules/@sentry/minimal/esm/index.js","demo/node_modules/@sentry/core/esm/api.js","demo/node_modules/@sentry/core/esm/integration.js","demo/node_modules/@sentry/core/esm/baseclient.js","demo/node_modules/@sentry/core/esm/integrations/functiontostring.js","demo/node_modules/@sentry/core/esm/transports/noop.js","demo/node_modules/@sentry/core/esm/basebackend.js","demo/node_modules/core-js/modules/es.array.some.js","demo/node_modules/@sentry/core/esm/integrations/inboundfilters.js","demo/node_modules/@sentry/browser/esm/tracekit.js","demo/node_modules/@sentry/browser/esm/parsers.js","demo/node_modules/@sentry/browser/esm/eventbuilder.js","demo/node_modules/@sentry/browser/esm/transports/base.js","demo/node_modules/@sentry/browser/esm/transports/fetch.js","demo/node_modules/@sentry/browser/esm/transports/xhr.js","demo/node_modules/@sentry/browser/esm/backend.js","demo/node_modules/@sentry/browser/esm/client.js","demo/node_modules/@sentry/browser/esm/version.js","demo/node_modules/@sentry/browser/esm/helpers.js","demo/node_modules/@sentry/browser/esm/integrations/globalhandlers.js","demo/node_modules/@sentry/browser/esm/integrations/trycatch.js","demo/node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","demo/node_modules/@sentry/browser/esm/integrations/linkederrors.js","demo/node_modules/@sentry/browser/esm/integrations/useragent.js","demo/node_modules/@sentry/browser/esm/sdk.js","demo/node_modules/@sentry/core/esm/sdk.js","demo/node_modules/core-js/modules/es.array.find.js","demo/node_modules/core-js/internals/whitespaces.js","demo/node_modules/core-js/internals/string-trim.js","demo/node_modules/core-js/modules/es.number.constructor.js","demo/node_modules/core-js/modules/es.number.is-nan.js","demo/node_modules/core-js/internals/object-to-array.js","demo/node_modules/core-js/modules/es.object.entries.js","demo/node_modules/shr-buttons/dist/shr.mjs","node_modules/core-js/internals/global.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/indexed-object.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/to-indexed-object.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/has.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/set-global.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/native-weak-map.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/redefine.js","node_modules/core-js/internals/path.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/to-integer.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/to-absolute-index.js","node_modules/core-js/internals/array-includes.js","node_modules/core-js/internals/object-keys-internal.js","node_modules/core-js/internals/enum-bug-keys.js","node_modules/core-js/internals/object-get-own-property-names.js","node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/core-js/internals/own-keys.js","node_modules/core-js/internals/copy-constructor-properties.js","node_modules/core-js/internals/is-forced.js","node_modules/core-js/internals/export.js","node_modules/core-js/internals/is-array.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/create-property.js","node_modules/core-js/internals/native-symbol.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/internals/array-species-create.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/array-method-has-species-support.js","node_modules/core-js/modules/es.array.concat.js","node_modules/core-js/internals/a-function.js","node_modules/core-js/internals/function-bind-context.js","node_modules/core-js/internals/array-iteration.js","node_modules/core-js/internals/array-method-uses-to-length.js","node_modules/core-js/modules/es.array.filter.js","node_modules/core-js/internals/object-keys.js","node_modules/core-js/internals/object-create.js","node_modules/core-js/internals/object-define-properties.js","node_modules/core-js/internals/html.js","node_modules/core-js/internals/add-to-unscopables.js","node_modules/core-js/modules/es.array.find.js","node_modules/core-js/internals/call-with-safe-iteration-closing.js","node_modules/core-js/internals/iterators.js","node_modules/core-js/internals/is-array-iterator-method.js","node_modules/core-js/internals/to-string-tag-support.js","node_modules/core-js/internals/classof.js","node_modules/core-js/internals/get-iterator-method.js","node_modules/core-js/internals/array-from.js","node_modules/core-js/internals/check-correctness-of-iteration.js","node_modules/core-js/modules/es.array.from.js","node_modules/core-js/modules/es.array.includes.js","node_modules/core-js/internals/correct-prototype-getter.js","node_modules/core-js/internals/iterators-core.js","node_modules/core-js/internals/object-get-prototype-of.js","node_modules/core-js/internals/set-to-string-tag.js","node_modules/core-js/internals/create-iterator-constructor.js","node_modules/core-js/internals/object-set-prototype-of.js","node_modules/core-js/internals/a-possible-prototype.js","node_modules/core-js/internals/define-iterator.js","node_modules/core-js/modules/es.array.iterator.js","node_modules/core-js/internals/array-method-is-strict.js","node_modules/core-js/modules/es.array.join.js","node_modules/core-js/modules/es.array.map.js","node_modules/core-js/internals/inherit-if-required.js","node_modules/core-js/internals/string-trim.js","node_modules/core-js/modules/es.number.constructor.js","node_modules/core-js/modules/es.object.keys.js","node_modules/core-js/internals/object-to-string.js","node_modules/core-js/modules/es.object.to-string.js","node_modules/core-js/internals/regexp-flags.js","node_modules/core-js/internals/regexp-sticky-helpers.js","node_modules/core-js/internals/regexp-exec.js","node_modules/core-js/modules/es.regexp.exec.js","node_modules/core-js/modules/es.regexp.to-string.js","node_modules/core-js/internals/is-regexp.js","node_modules/core-js/internals/not-a-regexp.js","node_modules/core-js/internals/correct-is-regexp-logic.js","node_modules/core-js/modules/es.string.includes.js","node_modules/core-js/internals/string-multibyte.js","node_modules/core-js/modules/es.string.iterator.js","node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","node_modules/core-js/internals/same-value.js","node_modules/core-js/internals/regexp-exec-abstract.js","node_modules/core-js/modules/es.string.search.js","node_modules/core-js/internals/redefine-all.js","node_modules/core-js/internals/freezing.js","node_modules/core-js/internals/internal-metadata.js","node_modules/core-js/internals/iterate.js","node_modules/core-js/internals/an-instance.js","node_modules/core-js/internals/collection-weak.js","node_modules/core-js/internals/dom-iterables.js","node_modules/core-js/modules/es.weak-map.js","node_modules/core-js/internals/collection.js","node_modules/core-js/modules/web.dom-collections.iterator.js","node_modules/core-js/modules/es.array.every.js","node_modules/core-js/internals/array-for-each.js","node_modules/core-js/modules/es.array.for-each.js","node_modules/core-js/modules/es.array.index-of.js","node_modules/core-js/internals/object-assign.js","node_modules/core-js/modules/es.object.assign.js","node_modules/core-js/internals/species-constructor.js","node_modules/core-js/internals/advance-string-index.js","node_modules/core-js/modules/es.string.split.js","node_modules/core-js/internals/string-trim-forced.js","node_modules/core-js/modules/es.string.trim.js","node_modules/core-js/modules/web.dom-collections.for-each.js","node_modules/core-js/internals/whitespaces.js","node_modules/core-js/internals/native-url.js","node_modules/core-js/internals/string-punycode-to-ascii.js","node_modules/core-js/internals/get-iterator.js","node_modules/core-js/modules/web.url-search-params.js","node_modules/core-js/modules/web.url.js","node_modules/core-js/modules/es.array.some.js","node_modules/core-js/internals/this-number-value.js","node_modules/core-js/internals/string-repeat.js","node_modules/core-js/modules/es.number.to-fixed.js","node_modules/core-js/internals/object-to-array.js","node_modules/core-js/modules/es.object.entries.js","node_modules/core-js/modules/es.object.values.js","node_modules/core-js/modules/es.string.replace.js","node_modules/core-js/internals/object-get-own-property-names-external.js","node_modules/core-js/internals/well-known-symbol-wrapped.js","node_modules/core-js/internals/define-well-known-symbol.js","node_modules/core-js/modules/es.symbol.js","node_modules/core-js/modules/es.number.is-nan.js","node_modules/core-js/modules/es.object.get-own-property-descriptor.js","node_modules/rangetouch/dist/rangetouch.mjs","node_modules/core-js/modules/es.object.get-own-property-descriptors.js","node_modules/core-js/modules/es.string.match.js","node_modules/core-js/internals/task.js","node_modules/core-js/internals/native-promise-constructor.js","node_modules/core-js/internals/set-species.js","node_modules/core-js/internals/engine-is-ios.js","node_modules/core-js/internals/microtask.js","node_modules/core-js/modules/es.promise.js","node_modules/core-js/internals/new-promise-capability.js","node_modules/core-js/internals/promise-resolve.js","node_modules/core-js/internals/perform.js","node_modules/core-js/internals/host-report-errors.js","node_modules/core-js/modules/es.string.starts-with.js","src/js/utils/is.js","src/js/utils/animation.js","src/js/utils/browser.js","node_modules/core-js/internals/array-reduce.js","node_modules/core-js/modules/es.array.reduce.js","src/js/utils/objects.js","src/js/utils/elements.js","src/js/support.js","src/js/utils/events.js","src/js/utils/promise.js","src/js/utils/style.js","src/js/html5.js","src/js/utils/arrays.js","node_modules/core-js/modules/es.array.slice.js","node_modules/core-js/modules/es.regexp.constructor.js","src/js/utils/strings.js","src/js/utils/i18n.js","src/js/storage.js","src/js/utils/fetch.js","src/js/utils/load-sprite.js","node_modules/core-js/modules/es.math.trunc.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/states.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","node_modules/core-js/internals/math-sign.js","src/js/utils/load-image.js","node_modules/core-js/modules/es.math.sign.js","src/js/ui.js","src/js/listeners.js","node_modules/core-js/modules/es.array.splice.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/load-script.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","src/js/media.js","src/js/plugins/ads.js","node_modules/core-js/modules/es.array.find-index.js","node_modules/core-js/internals/array-last-index-of.js","node_modules/core-js/modules/es.array.last-index-of.js","src/js/plugins/preview-thumbnails.js","src/js/source.js","src/js/plyr.js","src/js/utils/numbers.js","demo/src/js/sources.js","demo/src/js/demo.js","demo/src/js/toggle-class.js"],"names":["navigator","commonjsGlobal","globalThis","window","global","self","createCommonjsModule","fn","module","exports","check","it","Math","global_1","Function","fails","exec","error","descriptors","Object","defineProperty","get","nativePropertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","objectPropertyIsEnumerable","f","call","1","V","descriptor","this","enumerable","createPropertyDescriptor","bitmap","value","configurable","writable","toString","classofRaw","slice","split","indexedObject","classof","requireObjectCoercible","undefined","TypeError","toIndexedObject","IndexedObject","isObject","toPrimitive","input","PREFERRED_STRING","val","valueOf","hasOwnProperty","has","key","document","EXISTS","createElement","documentCreateElement","ie8DomDefine","DESCRIPTORS","a","nativeGetOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","P","IE8_DOM_DEFINE","propertyIsEnumerableModule","anObject","String","nativeDefineProperty","objectDefineProperty","Attributes","createNonEnumerableProperty","object","definePropertyModule","setGlobal","sharedStore","functionToString","store","inspectSource","set","WeakMap","nativeWeakMap","test","shared","push","version","mode","copyright","id","postfix","random","uid","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","STATE","objectHas","internalState","enforce","getterFor","TYPE","state","type","redefine","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","source","join","prototype","path","aFunction","variable","getBuiltIn","namespace","method","arguments","length","ceil","floor","toInteger","argument","isNaN","min","toLength","max","toAbsoluteIndex","index","integer","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","includes","indexOf","require$$0","objectKeysInternal","names","i","result","enumBugKeys","concat","objectGetOwnPropertyNames","getOwnPropertyNames","internalObjectKeys","objectGetOwnPropertySymbols","getOwnPropertySymbols","ownKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","copyConstructorProperties","target","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","isForced_1","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","sham","aFunction$1","functionBindContext","that","b","c","apply","toObject","isArray","Array","arg","nativeSymbol","Symbol","useSymbolAsUid","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","wellKnownSymbol","name","SPECIES","arraySpeciesCreate","originalArray","C","constructor","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","specificCreate","boundFunction","bind","create","arrayIteration","forEach","map","filter","some","every","find","findIndex","arrayMethodIsStrict","METHOD_NAME","cache","thrower","arrayMethodUsesToLength","ACCESSORS","argument0","argument1","$forEach","STRICT_METHOD","USES_TO_LENGTH","arrayForEach","$","proto","callWithSafeIterationClosing","ENTRIES","returnMethod","iterators","ITERATOR","ArrayPrototype","isArrayIteratorMethod","Iterators","createProperty","propertyKey","toStringTagSupport","TO_STRING_TAG","CORRECT_ARGUMENTS","TO_STRING_TAG_SUPPORT","tag","tryGet","callee","getIteratorMethod","arrayFrom","arrayLike","step","next","argumentsLength","mapfn","mapping","iteratorMethod","done","SAFE_CLOSING","called","iteratorWithReturn","return","from","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","INCORRECT_ITERATION","iterable","activeXDocument","objectKeys","objectDefineProperties","defineProperties","Properties","html","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","open","F","objectCreate","UNSCOPABLES","addToUnscopables","$includes","match","engineUserAgent","process","versions","v8","userAgent","engineV8Version","arrayMethodHasSpeciesSupport","V8_VERSION","array","foo","Boolean","$map","HAS_SPECIES_SUPPORT","FAILS_ON_PRIMITIVES","nativeKeys","objectSetPrototypeOf","setPrototypeOf","setter","CORRECT_SETTER","aPossiblePrototype","__proto__","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","MATCH","isRegexp","isRegExp","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","RE","s","RegExp","regexpStickyHelpers","UNSUPPORTED_Y","re","lastIndex","BROKEN_CARET","setSpecies","CONSTRUCTOR_NAME","Constructor","require$$1","setInternalState","require$$2","NativeRegExp","RegExpPrototype","re1","re2","CORRECT_NEW","stickyHelpers","RegExpWrapper","pattern","flags","thisIsRegExp","patternIsRegExp","flagsAreUndefined","getFlags","proxy","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","str","reCopy","charsAdded","strCopy","regexpExec","nativeToString","NOT_GENERIC","INCORRECT_NAME","R","p","rf","notARegexp","regexp","e","correctIsRegExpLogic","searchString","notARegExp","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","charAt","stringMultibyte","codeAt","correctPrototypeGetter","getPrototypeOf","ObjectPrototype","objectGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","BUGGY_SAFARI_ITERATORS","iteratorsCore","setToStringTag","TAG","returnThis","createIteratorConstructor","IteratorConstructor","NAME","IteratorsCore","defineIterator","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","iterated","point","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","COLLECTION_NAME","DOMIterables","Collection","CollectionPrototype","container","getElementById","addEventListener","event","classList","contains","remove","keyCode","setTimeout","focused","activeElement","add","ce","CustomEvent","cancelable","preventDefault","defaultPrevented","Error","params","evt","origPrevent","bubbles","createEvent","initCustomEvent","detail","Event","nativeGetOwnPropertyNames","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","wellKnownSymbolWrapped","defineWellKnownSymbol","wrappedWellKnownSymbolModule","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","getOwnPropertyNamesExternal","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","nativeObjectCreate","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","for","keyFor","sym","useSetter","useSimple","FORCED_JSON_STRINGIFY","stringify","replacer","space","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","es_array_iterator","kind","Arguments","nativeJoin","ES3_STRINGS","separator","0","nativeSlice","start","end","n","k","fin","objectToString","REPLACE_SUPPORTS_NAMED_GROUPS","groups","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","fixRegexpWellKnownSymbolLogic","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","advanceStringIndex","regexpExecAbstract","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","fixRegExpWellKnownSymbolLogic","maybeCallNative","reason","UNSAFE_SUBSTITUTE","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","regExpExec","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","m","symbols","ch","capture","sameValue","is","x","y","SEARCH","nativeSearch","searcher","previousLastIndex","speciesConstructor","defaultConstructor","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","callRegExpExec","q","A","z","ArrayValues","ArrayIteratorMethods","nativeUrl","url","URL","searchParams","pathname","sort","href","URLSearchParams","username","host","hash","anInstance","nativeAssign","assign","objectAssign","B","chr","T","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","base","encode","currentValue","inputLength","counter","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","t","qMinusT","baseMinusT","redefineAll","getIterator","$fetch","Headers","getInternalParamsState","getInternalIteratorState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","bytes","percentDecode","sequence","decodeURIComponent","deserialize","!","'","(",")","~","%20","serialize","encodeURIComponent","parseSearchParams","query","attribute","entry","attributes","shift","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","init","updateURL","hasOwn","URLSearchParamsPrototype","append","delete","splice","getAll","found","entriesIndex","sliceIndex","callback","USE_NATIVE_URL","fetch","body","headers","EOF","web_urlSearchParams","getState","NativeURL","URLSearchParamsModule","getInternalSearchParamsState","getInternalURLState","pow","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","label","encoded","labels","toASCII","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","number","ipv4","parts","pop","parseInt","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","unshift","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet"," ","\"","<",">","`","pathPercentEncodeSet","#","?","{","}","userinfoPercentEncodeSet","/",":",";","=","@","[","\\","]","^","|","code","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","port","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","origin","getOrigin","protocol","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","search","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","_typeof","obj","_classCallCheck","instance","_defineProperties","props","_createClass","protoProps","staticProps","_defineProperty","ownKeys$1","enumerableOnly","_objectSpread2","getOwnPropertyDescriptors","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","o","minLen","len","arr2","iteratorSupported","checkIfIteratorIsSupported","createIterator","items","serializeParam","deserializeParam","checkIfURLSearchParamsSupported","typeofSearchString","_fromString","_this","_entries","thisArg","searchArray","polyfillURLSearchParams","u","checkIfURLIsSupported","_URL","baseElement","doc","location","implementation","createHTMLDocument","head","anchorElement","enableSearchUpdate","enableSearchParamsUpdate","methodName","attributeName","_anchorElement","linkURLWithAnchorAttribute","_updateSearchParams","expectedPort","http:","https:","ftp:","addPortToOrigin","polyfillURL","setInterval","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","defer","channel","nativePromiseConstructor","Promise","iterate_1","Result","stopped","AS_ENTRIES","IS_ITERATOR","iterFn","stop","engineIsIos","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","queue","run","runner","listener","post","postMessage","nextTick","now","IS_IOS","port2","port1","onmessage","importScripts","removeChild","flush","last","notify","toggle","node","promise","then","task","macrotask","MutationObserver","WebKitMutationObserver","IS_NODE","queueMicrotaskDescriptor","queueMicrotask","parent","exit","enter","createTextNode","observe","characterData","resolve","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","microtask","PromiseCapability","reject","$$resolve","$$reject","newPromiseCapability","promiseResolve","promiseCapability","perform","PROMISE","getInternalPromiseState","PromiseConstructor","NativePromise","newPromiseCapabilityModule","newGenericPromiseCapability","DISPATCH_EVENT","dispatchEvent","PromiseRejectionEvent","FakePromise","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","initEvent","console","hostReportErrors","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","catch","r","capability","$promiseResolve","remaining","iterate","alreadyCalled","race","extendStatics","d","__extends","__","Severity","Status","__assign","__read","ar","__spread","fromString","level","Debug","Info","Warning","Fatal","Critical","Log","fromHttpCode","Success","RateLimit","Invalid","Failed","Unknown","FunctionPrototype","FunctionPrototypeToString","nameRE","prop","SentryError","_super","message","_newTarget","tslib_1.__extends","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isString","isPrimitive","isPlainObject","isEvent","isElement","Element","nativeMatch","matcher","matchStr","arrayBufferNative","ArrayBuffer","DataView","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","NATIVE_ARRAY_BUFFER","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","arrayBufferViewCore","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","property","exportTypedArrayStaticMethod","isView","klass","typedArrayConstructorsRequireWrappers","toIndex","abs","log","LN2","ieee754","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","nBits","NaN","arrayFill","endPos","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","packIEEE754","IEEE754","unpackIEEE754","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","count","isLittleEndian","intIndex","byteLength","byteOffset","pack","reverse","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","arrayBuffer","toOffset","BYTES","toPositiveInteger","typedArrayFrom","round","ArrayBufferModule","ArrayBufferViewCore","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","typedArrayOffset","$length","$len","createTypedArrayConstructor","arrayCopyWithin","copyWithin","to","inc","$copyWithin","$every","$fill","$filter","$find","predicate","$findIndex","arrayValues","ArrayIterators","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","nativeLastIndexOf","lastIndexOf","arrayLastIndexOf","$lastIndexOf","IS_RIGHT","memo","arrayReduce","left","right","$reduce","$reduceRight","middle","$slice","$some","$sort","comparefn","begin","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","truncate","substr","safeJoin","delimiter","isMatchingPattern","isNodeEnv","fallbackGlobalObject","getGlobalObject","uuid4","crypto","msCrypto","getRandomValues","pad","num","v","parseUrl","relative","getEventDescription","exception","event_id","consoleSandbox","originalConsole","wrappedLevels","__sentry_original__","addExceptionTypeValue","addExceptionMechanism","mechanism","_oO","htmlTreeAsString","elem","currentElem","out","height","sepLength","nextStr","_htmlElementAsString","parentNode","className","classes","attr","tagName","attrWhitelist","getAttribute","INITIAL_TIME","Date","prevNow","performanceFallback","timeOrigin","crossPlatformPerformance","mod","request","require","performance","_","timing","navigationStart","timestampWithMs","parseRetryAfterHeader","header","headerDelay","headerDate","parse","getFunctionName","PREFIX","Logger","_enabled","disable","enable","warn","__SENTRY__","logger","deleteCount","insertCount","actualDeleteCount","actualStart","freezing","isExtensible","preventExtensions","internalMetadata","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","FREEZING","internalStateGetterFor","ArrayIterationModule","uncaughtFrozenStore","frozen","UncaughtFrozenStore","findUncaughtFrozen","common","IS_WEAK","ADDER","NativeConstructor","NativePrototype","fixMethod","getConstructor","InternalMetadataModule","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","collection","define","$has","Memo","_hasWeakSet","WeakSet","_inner","memoize","unmemoize","fill","original","wrapped","_Oo","getWalkSource","stack","event_1","currentTarget","jsonSize","encodeURI","utf8Length","JSON","normalizeToSize","depth","maxSize","serialized","normalizeValue","_events","walk","Infinity","serializeValue","toJSON","acc","innerKey","extractExceptionKeysForMessage","includedKeys","States","NON_GENERIC","real","finally","onFinally","isFunction","SyncPromise","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","REJECTED","_value","_executeHandlers","_attachHandler","cachedHandlers","onfulfilled","onrejected","resolvedCollection","item","_onfulfilled","_onrejected","onfinally","isRejected","PromiseBuffer","_limit","_buffer","isReady","drain","timeout","capturedSetTimeout","clearTimeout","supportsFetch","Request","Response","isNativeFetch","func","supportsReferrerPolicy","referrerPolicy","lastHref","handlers","instrumented","instrument","originalConsoleLevel","triggerHandlers","instrumentConsole","domEventHandler","keypressEventHandler","eventName","handleEvent","innerOriginal","__sentry_wrapped__","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","__sentry_xhr__","toUpperCase","__sentry_own_request__","originalSend","xhr","commonHandlerData","startTimestamp","tslib_1.__assign","readyState","status_code","status","endTimestamp","instrumentXHR","sandbox","hidden","supportsNativeFetch","originalFetch","fetchData","getFetchMethod","getFetchUrl","response","instrumentFetch","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","instrumentHistory","_oldOnErrorHandler","onerror","msg","line","column","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","e_1","_a","_b","tslib_1.__values","_c","e_1_1","fetchArgs","keypressTimeout","lastCapturedEvent","debounceTimer","debounce","isContentEditable","DSN_REGEX","Dsn","_fromComponents","_validate","withPassword","pass","projectId","user","tslib_1.__read","components","component","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_context","addScopeListener","addEventProcessor","_notifyScopeListeners","_notifyEventProcessors","processors","hint","processor","final","setUser","setTags","tags","setTag","setExtras","extras","setExtra","setFingerprint","fingerprint","_fingerprint","setLevel","_level","setTransaction","transaction","_transaction","_span","setContext","context","setSpan","span","getSpan","clone","scope","newScope","tslib_1.__spread","addBreadcrumb","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","_applyFingerprint","applyToEvent","contexts","trace","getTraceContext","breadcrumbs","getGlobalEventProcessors","globalEventProcessors","addGlobalEventProcessor","Hub","client","_version","_stack","_invokeClient","top","getStackTop","isOlderThan","bindClient","setupIntegrations","pushScope","getStack","parentScope","getClient","popScope","withScope","getScope","captureException","eventId","_lastEventId","finalHint","syntheticException","originalException","captureMessage","captureEvent","lastEventId","getOptions","beforeBreadcrumb","finalBreadcrumb","configureScope","oldHub","makeMain","getIntegration","integration","startSpan","spanOrSpanContext","forceNoChild","_callExtensionMethod","traceHeaders","carrier","getMainCarrier","sentry","extensions","hub","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","activeDomain","active","registryHubTopStack","getHubFromActiveDomain","callOnHub","API","dsn","_dsnObject","getDsn","getStoreEndpoint","_getBaseUrl","getStoreEndpointPath","getStoreEndpointWithUrlEncodedAuth","auth","sentry_key","sentry_version","getRequestHeaders","clientName","clientVersion","Content-Type","X-Sentry-Auth","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","email","installedIntegrations","integrations","defaultIntegrations","userIntegrations","userIntegrationsNames_1","pickedIntegrationsNames_1","defaultIntegration","userIntegration","integrationsNames","getIntegrationsToSetup","setupOnce","setupIntegration","originalFunctionToString","BaseClient","backendClass","_integrations","_processing","_backend","_options","_dsn","_getBackend","eventFromException","_processEvent","finalEvent","eventFromMessage","_isClientProcessing","clearInterval","interval","getTransport","transportFlushed","ready","enabled","_isEnabled","ticked","_prepareEvent","environment","release","dist","maxValueLength","normalizeDepth","prepared","_addIntegrations","sdk","_normalizeEvent","sdkInfo","integrationsArray","beforeSend","sampleRate","__sentry__","sendEvent","beforeSendResult","_handleAsyncBeforeSend","processedEvent","NoopTransport","Skipped","BaseBackend","_transport","_setupTransport","_exception","_hint","_message","FunctionToString","DEFAULT_IGNORE_ERRORS","InboundFilters","clientOptions","_mergeOptions","_shouldDropEvent","_isSentryError","_isIgnoredError","_isBlacklistedUrl","_getEventFilterUrl","_isWhitelistedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","blacklistUrls","whitelistUrls","oO","stacktrace","frames_1","frames","filename","frames_2","gecko","winjs","geckoEval","chromeEval","computeStackTrace","ex","popSize","framesToPop","opera10Regex","opera11Regex","lines","element","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","columnNumber","computeStackTraceFromStackProp","failed","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","colno","function","in_app","lineno","eventFromUnknownInput","domException","name_1","eventFromString","__serialized__","eventFromPlainObject","synthetic","attachStacktrace","BaseTransport","FetchTransport","_disabledUntil","defaultOptions","XHRTransport","onreadystatechange","getResponseHeader","setRequestHeader","send","BrowserBackend","transportOptions","transport","handled","BrowserClient","platform","packages","showReportDialog","script","async","onLoad","onload","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","before","sentryWrapped","wrappedArguments","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_eventFromIncompleteRejection","getLocationHref","TryCatch","_ignoreOnError","_wrapTimeFunction","originalCallback","_wrapRAF","_wrapEventTarget","_wrapXHR","xmlHttpRequestProps","wrapOptions","Breadcrumbs","dom","_consoleBreadcrumb","handlerData","category","_domBreadcrumb","_xhrBreadcrumb","addSentryBreadcrumb","_fetchBreadcrumb","filterUrl","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","serializedData","LinkedErrors","_key","_handler","linkedErrors","_walkErrorTree","UserAgent","CoreIntegrations.InboundFilters","CoreIntegrations.FunctionToString","window_1","SENTRY_RELEASE","clientClass","debug","initAndBind","SKIPS_HOLES","whitespace","ltrim","rtrim","stringTrim","trim","require$$3","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","maxCode","digits","NumberWrapper","TO_ENTRIES","$entries","instanceOf","isNullOrUndefined","isNodeList","Number","constants","facebook","shareCount","og_object","engagement","popup","width","twitter","pinterest","github","stargazers_count","youtube","statistics","subscriberCount","defaults","displayZero","format","increment","tokens","storage","ttl","getJSONP","setAttribute","noop","Console","matches","querySelectorAll","cloneNode","nextSibling","insertBefore","setAttributes","innerText","formatNumber","extend","Storage","supported","localStorage","getItem","setItem","removeItem","Shr","elements","trigger","querySelector","shr","config","networks","getCount","updateDisplay","listeners","share","openPopup","network","networkConfig","closed","focus","screenLeft","screen","screenTop","apiUrl","textContent","class","insertAdjacentElement","getDomain","substring","watch","addedNodes","childList","subtree","global_1$1","fails$1","descriptors$1","objectPropertyIsEnumerable$1","createPropertyDescriptor$1","classofRaw$1","indexedObject$1","requireObjectCoercible$1","toIndexedObject$1","isObject$2","toPrimitive$1","has$2","documentCreateElement$1","ie8DomDefine$1","objectGetOwnPropertyDescriptor$1","anObject$1","objectDefineProperty$1","createNonEnumerableProperty$1","setGlobal$1","sharedStore$1","inspectSource$1","nativeWeakMap$1","shared$1","uid$1","sharedKey$1","hiddenKeys$2","internalState$1","redefine$1","path$1","getBuiltIn$1","toInteger$1","toLength$1","toAbsoluteIndex$1","arrayIncludes$1","objectKeysInternal$1","enumBugKeys$1","objectGetOwnPropertyNames$1","objectGetOwnPropertySymbols$1","ownKeys$2","copyConstructorProperties$1","isForced_1$1","_export$1","isArray$2","toObject$1","createProperty$1","nativeSymbol$1","useSymbolAsUid$1","wellKnownSymbol$1","arraySpeciesCreate$1","engineUserAgent$1","engineV8Version$1","arrayMethodHasSpeciesSupport$1","aFunction$3","functionBindContext$1","arrayIteration$1","arrayMethodUsesToLength$1","objectKeys$1","objectDefineProperties$1","html$1","objectCreate$1","addToUnscopables$1","callWithSafeIterationClosing$1","iterators$1","isArrayIteratorMethod$1","toStringTagSupport$1","classof$1","getIteratorMethod$1","arrayFrom$1","checkCorrectnessOfIteration$1","correctPrototypeGetter$1","objectGetPrototypeOf$1","iteratorsCore$1","setToStringTag$1","createIteratorConstructor$1","objectSetPrototypeOf$1","defineIterator$1","es_array_iterator$1","arrayMethodIsStrict$1","inheritIfRequired$1","stringTrim$1","objectToString$1","regexpFlags$1","regexpStickyHelpers$1","regexpExec$1","isRegexp$1","notARegexp$1","correctIsRegexpLogic$1","stringMultibyte$1","fixRegexpWellKnownSymbolLogic$1","sameValue$1","regexpExecAbstract$1","redefineAll$1","freezing$1","internalMetadata$1","iterate_1$1","anInstance$1","collectionWeak$1","domIterables$1","InternalWeakMap","enforceIternalState","IS_IE11","$WeakMap","collectionWeak","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","arrayForEach$1","objectAssign$1","speciesConstructor$1","advanceStringIndex$1","$trim","forcedStringTrimMethod","nativeUrl$1","getIterator$1","web_urlSearchParams$1","stringRepeat","repeat","nativeToFixed","toFixed","fractionDigits","thisNumberValue","fractDigits","multiply","c2","divide","dataToString","x2","objectToArray$1","$values","objectGetOwnPropertyNamesExternal$1","wellKnownSymbolWrapped$1","addCSS","thumbWidth","getDecimalPlaces","parseFloat","RangeTouch","rangeTouch","userSelect","webKitUserSelect","touchAction","changedTouches","getBoundingClientRect","clientX","disabled","documentElement","nativePromiseConstructor$1","setSpecies$1","engineIsIos$1","task$2","microtask$1","newPromiseCapability$2","promiseResolve$1","perform$1","nativeStartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","events","isEmpty","is$2","KeyboardEvent","TextTrack","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","repaint","delay","offsetHeight","browser","isIE","documentMode","isEdge","isWebkit","isIPhone","isIos","getDeep","reduce","_len","sources","targets","child","sibling","_ref","_ref3","_ref4","text","insertElement","removeElement","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","toggleHidden","hide","toggleClass","force","hasClass","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getElements","getElement","setFocus","tabFocus","preventScroll","classNames","range","defaultCodecs","audio/ogg","audio/wav","video/webm","video/mp4","video/ogg","support","audio","video","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","touch","transitions","reducedMotion","matchMedia","supportsPassiveListeners","removeEventListener","toggleListener","passive","eventListeners","on","off","once","_this2","onceCallback","triggerEvent","plyr","unbindListeners","_this3","silencePromise","validateRatio","reduceAspectRatio","ratio","_ratio","divider","getDivider","w","h","getAspectRatio","embed","_this$media","videoWidth","videoHeight","setAspectRatio","isVideo","_ref2","padding","paddingBottom","isVimeo","vimeo","premium","offsetWidth","getComputedStyle","transform","videoFixedRatio","html5","getSources","getQualityOptions","quality","setup","player","speed","onChange","_player$media","currentTime","paused","preload","playbackRate","play","load","cancelRequests","blankVideo","dedupe","replaceAll","toTitleCase","toPascalCase","getHTML","innerHTML","resources","i18n","{seektime}","seekTime","{title}","title","json","responseType","responseText","loadSprite","hasId","exists","update","useStorage","cached","trunc","getHours","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","cors","iconUrl","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","duration","seekTooltip","tooltip","toggleNativeControls","createIcon","iconPath","iconPrefix","icon","createElementNS","aria-hidden","focusable","use","setAttributeNS","createLabel","createBadge","badge","menu","createButton","buttonType","toCamelCase","labelPressed","iconPressed","control","button","createRange","autocomplete","role","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","updateRangeFill","createProgress","suffixKey","played","suffix","createTime","attrs","bindMenuItemShortcuts","menuItem","which","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","_ref$badge","_ref$checked","checked","aria-checked","flex","children","currentTrack","forceHours","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","_this4","current","getPercentage","getElementsByTagName","nodeValue","setProgress","buffered","percent","setProperty","updateSeekTooltip","_this5","tooltips","visible","show","clientRect","pageX","timeUpdate","invert","invertTime","seeking","durationUpdate","hasDuration","displayDuration","toggleMenuButton","setting","updateSetting","pane","panels","default","getLabel","setQualityMenu","_this6","checkMenu","getBadge","sorting","setCaptionsMenu","_this7","tracks","getTracks","track","toggled","language","setSpeedMenu","_this8","minimumSpeed","maximumSpeed","firstItem","toggleMenu","composedPath","isMenuItem","getMenuSize","tab","opacity","removeAttribute","scrollWidth","scrollHeight","_this9","restore","propertyName","setDownloadUrl","download","_this10","defaultAttributes","progressContainer","aria-haspopup","aria-controls","aria-expanded","inner","home","backButton","urls","isEmbed","inject","_this11","seektime","addProperty","controlPressed","_this$config","safe","parser","buildUrlParams","isYouTube","insertAfter","languages","userLanguage","trackEvents","_this$captions","currentTrackNode","languageExists","updateCues","setLanguage","activeClass","findTrack","enableTextTrack","sortIsDefault","sorted","getCurrentTrack","cues","activeCues","cue","getCueAsHTML","cueText","caption","autoplay","autopause","toggleInvert","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","reset","advertisement","qualityBadge","2160","1440","1080","720","576","480","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","loading","hover","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","publisherId","tagUrl","byline","portrait","transparent","noCookie","rel","showinfo","iv_load_policy","modestbranding","providers","types","Fullscreen","prefix","scrollPosition","forceFallback","closest","parentElement","nodeType","trapFocus","scrollX","scrollY","scrollTo","overflow","viewport","hasProperty","cleanupViewport","shiftKey","webkitEnterFullscreen","toggleFallback","requestFullscreen","navigationUI","webkitExitFullscreen","action","cancelFullScreen","fullscreenElement","shadowRoot","getRootNode","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","pre","mathSign","loadImage","minWidth","image","Image","naturalWidth","addStyleHook","build","checkPlaying","setTitle","setPoster","togglePoster","backgroundImage","backgroundSize","toggleControls","checkLoading","timers","controlsElement","recentTouchSeek","lastSeekTime","migrateStyles","getPropertyValue","removeProperty","Listeners","lastKey","focusTimer","lastKeyDown","handleKey","setTabFocus","firstTouch","altKey","ctrlKey","metaKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","usingNative","timeStamp","wasKeyDown","setPlayerSize","measure","rect","resized","_player$fullscreen","isEnter","_setPlayerSize","firstChild","_getAspectRatio$call2","videoX","videoY","maxWidth","margin","setGutter","isAudio","ended","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","hasAttribute","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","_map2","deltaX","deltaY","direction","loadjs_umd","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isLegacyIECss","maxTries","numRetries","beforeCallbackFn","pathStripped","relList","as","onbeforeload","ev","sheet","cssText","loadjs","paths","arg1","loadFn","numWaiting","loadFiles","returnPromise","deps","bundleIds","subscribe","isDefined","factory","loadScript","assurePlaybackState","hasPlayed","Vimeo","frameParams","sidedock","gesture","$2","data-poster","thumbnail_large","Player","disableTextTrack","restorePause","setVolume","setCurrentTime","setPlaybackRate","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","_ref$cues","strippedCues","createDocumentFragment","stripHTML","getPaused","seconds","YT","onYouTubeIframeAPIReady","getTitle","videoId","currentId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","onError","2","5","100","101","150","onPlaybackRateChange","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","speeds","getAvailablePlaybackRates","buffering","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","initialized","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","managerPromise","google","ima","destroy","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","requestAds","AdsRequest","adTagUrl","linearAdSlotWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","STARTED","ALL_ADS_COMPLETED","loadAds","contentComplete","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","LOG","adError","getMessage","cancel","addCuePoints","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","zIndex","_this12","_this13","AV_PUBLISHERID","AV_CHANNELID","AV_URL","cb","AV_WIDTH","AV_HEIGHT","AV_CDIM2","arrayLastIndexOf$1","fitRatio","outer","PreviewThumbnails","thumbnails","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","sortAndResolve","promises","getThumbnail","vttDataString","processedList","thumbnail","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","matchTimes","endTime","urlPrefix","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","clientWidth","sizeSpecifiedInCSS","thumbAspectRatio","thumbHeight","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","previewPos","_fitRatio","multiplier","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","change","_sources$","_sources$$provider","crossorigin","Plyr","jQuery","getProviderByUrl","truthy","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","soft","unload","inputIsValid","fauxDuration","realDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","clamp","updateStorage","prev","curr","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","production","srclang","Sentry","historySupport","currentType","hasInitialType","cite","setSource"],"mappings":"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","file":"demo.min.js","sourcesContent":["typeof navigator === \"object\" && (function () {\n\t'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar check = function (it) {\n\t return it && it.Math == Math && it;\n\t};\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global_1 =\n\t // eslint-disable-next-line no-undef\n\t check(typeof globalThis == 'object' && globalThis) ||\n\t check(typeof window == 'object' && window) ||\n\t check(typeof self == 'object' && self) ||\n\t check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||\n\t // eslint-disable-next-line no-new-func\n\t Function('return this')();\n\n\tvar fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (error) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar descriptors = !fails(function () {\n\t return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n\t});\n\n\tvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\n\tvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n\t// Nashorn ~ JDK8 bug\n\tvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n\t// `Object.prototype.propertyIsEnumerable` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\n\tvar f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n\t var descriptor = getOwnPropertyDescriptor(this, V);\n\t return !!descriptor && descriptor.enumerable;\n\t} : nativePropertyIsEnumerable;\n\n\tvar objectPropertyIsEnumerable = {\n\t\tf: f\n\t};\n\n\tvar createPropertyDescriptor = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar toString = {}.toString;\n\n\tvar classofRaw = function (it) {\n\t return toString.call(it).slice(8, -1);\n\t};\n\n\tvar split = ''.split;\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar indexedObject = fails(function () {\n\t // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n\t // eslint-disable-next-line no-prototype-builtins\n\t return !Object('z').propertyIsEnumerable(0);\n\t}) ? function (it) {\n\t return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);\n\t} : Object;\n\n\t// `RequireObjectCoercible` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\n\tvar requireObjectCoercible = function (it) {\n\t if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n\t// toObject with fallback for non-array-like ES3 strings\n\n\n\n\tvar toIndexedObject = function (it) {\n\t return indexedObject(requireObjectCoercible(it));\n\t};\n\n\tvar isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\t// `ToPrimitive` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toprimitive\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar toPrimitive = function (input, PREFERRED_STRING) {\n\t if (!isObject(input)) return input;\n\t var fn, val;\n\t if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n\t if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n\t if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\n\tvar has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar document$1 = global_1.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar EXISTS = isObject(document$1) && isObject(document$1.createElement);\n\n\tvar documentCreateElement = function (it) {\n\t return EXISTS ? document$1.createElement(it) : {};\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar ie8DomDefine = !descriptors && !fails(function () {\n\t return Object.defineProperty(documentCreateElement('div'), 'a', {\n\t get: function () { return 7; }\n\t }).a != 7;\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n\t// `Object.getOwnPropertyDescriptor` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\tvar f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n\t O = toIndexedObject(O);\n\t P = toPrimitive(P, true);\n\t if (ie8DomDefine) try {\n\t return nativeGetOwnPropertyDescriptor(O, P);\n\t } catch (error) { /* empty */ }\n\t if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);\n\t};\n\n\tvar objectGetOwnPropertyDescriptor = {\n\t\tf: f$1\n\t};\n\n\tvar anObject = function (it) {\n\t if (!isObject(it)) {\n\t throw TypeError(String(it) + ' is not an object');\n\t } return it;\n\t};\n\n\tvar nativeDefineProperty = Object.defineProperty;\n\n\t// `Object.defineProperty` method\n\t// https://tc39.github.io/ecma262/#sec-object.defineproperty\n\tvar f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n\t anObject(O);\n\t P = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if (ie8DomDefine) try {\n\t return nativeDefineProperty(O, P, Attributes);\n\t } catch (error) { /* empty */ }\n\t if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n\t if ('value' in Attributes) O[P] = Attributes.value;\n\t return O;\n\t};\n\n\tvar objectDefineProperty = {\n\t\tf: f$2\n\t};\n\n\tvar createNonEnumerableProperty = descriptors ? function (object, key, value) {\n\t return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar setGlobal = function (key, value) {\n\t try {\n\t createNonEnumerableProperty(global_1, key, value);\n\t } catch (error) {\n\t global_1[key] = value;\n\t } return value;\n\t};\n\n\tvar SHARED = '__core-js_shared__';\n\tvar store = global_1[SHARED] || setGlobal(SHARED, {});\n\n\tvar sharedStore = store;\n\n\tvar functionToString = Function.toString;\n\n\t// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\n\tif (typeof sharedStore.inspectSource != 'function') {\n\t sharedStore.inspectSource = function (it) {\n\t return functionToString.call(it);\n\t };\n\t}\n\n\tvar inspectSource = sharedStore.inspectSource;\n\n\tvar WeakMap$1 = global_1.WeakMap;\n\n\tvar nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(inspectSource(WeakMap$1));\n\n\tvar isPure = false;\n\n\tvar shared = createCommonjsModule(function (module) {\n\t(module.exports = function (key, value) {\n\t return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: '3.6.5',\n\t mode: 'global',\n\t copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar id = 0;\n\tvar postfix = Math.random();\n\n\tvar uid = function (key) {\n\t return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n\t};\n\n\tvar keys = shared('keys');\n\n\tvar sharedKey = function (key) {\n\t return keys[key] || (keys[key] = uid(key));\n\t};\n\n\tvar hiddenKeys = {};\n\n\tvar WeakMap$2 = global_1.WeakMap;\n\tvar set, get, has$1;\n\n\tvar enforce = function (it) {\n\t return has$1(it) ? get(it) : set(it, {});\n\t};\n\n\tvar getterFor = function (TYPE) {\n\t return function (it) {\n\t var state;\n\t if (!isObject(it) || (state = get(it)).type !== TYPE) {\n\t throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n\t } return state;\n\t };\n\t};\n\n\tif (nativeWeakMap) {\n\t var store$1 = new WeakMap$2();\n\t var wmget = store$1.get;\n\t var wmhas = store$1.has;\n\t var wmset = store$1.set;\n\t set = function (it, metadata) {\n\t wmset.call(store$1, it, metadata);\n\t return metadata;\n\t };\n\t get = function (it) {\n\t return wmget.call(store$1, it) || {};\n\t };\n\t has$1 = function (it) {\n\t return wmhas.call(store$1, it);\n\t };\n\t} else {\n\t var STATE = sharedKey('state');\n\t hiddenKeys[STATE] = true;\n\t set = function (it, metadata) {\n\t createNonEnumerableProperty(it, STATE, metadata);\n\t return metadata;\n\t };\n\t get = function (it) {\n\t return has(it, STATE) ? it[STATE] : {};\n\t };\n\t has$1 = function (it) {\n\t return has(it, STATE);\n\t };\n\t}\n\n\tvar internalState = {\n\t set: set,\n\t get: get,\n\t has: has$1,\n\t enforce: enforce,\n\t getterFor: getterFor\n\t};\n\n\tvar redefine = createCommonjsModule(function (module) {\n\tvar getInternalState = internalState.get;\n\tvar enforceInternalState = internalState.enforce;\n\tvar TEMPLATE = String(String).split('String');\n\n\t(module.exports = function (O, key, value, options) {\n\t var unsafe = options ? !!options.unsafe : false;\n\t var simple = options ? !!options.enumerable : false;\n\t var noTargetGet = options ? !!options.noTargetGet : false;\n\t if (typeof value == 'function') {\n\t if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n\t enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n\t }\n\t if (O === global_1) {\n\t if (simple) O[key] = value;\n\t else setGlobal(key, value);\n\t return;\n\t } else if (!unsafe) {\n\t delete O[key];\n\t } else if (!noTargetGet && O[key]) {\n\t simple = true;\n\t }\n\t if (simple) O[key] = value;\n\t else createNonEnumerableProperty(O, key, value);\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, 'toString', function toString() {\n\t return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n\t});\n\t});\n\n\tvar path = global_1;\n\n\tvar aFunction = function (variable) {\n\t return typeof variable == 'function' ? variable : undefined;\n\t};\n\n\tvar getBuiltIn = function (namespace, method) {\n\t return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace])\n\t : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];\n\t};\n\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\n\t// `ToInteger` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tointeger\n\tvar toInteger = function (argument) {\n\t return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n\t};\n\n\tvar min = Math.min;\n\n\t// `ToLength` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tolength\n\tvar toLength = function (argument) {\n\t return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n\t};\n\n\tvar max = Math.max;\n\tvar min$1 = Math.min;\n\n\t// Helper for a popular repeating case of the spec:\n\t// Let integer be ? ToInteger(index).\n\t// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\n\tvar toAbsoluteIndex = function (index, length) {\n\t var integer = toInteger(index);\n\t return integer < 0 ? max(integer + length, 0) : min$1(integer, length);\n\t};\n\n\t// `Array.prototype.{ indexOf, includes }` methods implementation\n\tvar createMethod = function (IS_INCLUDES) {\n\t return function ($this, el, fromIndex) {\n\t var O = toIndexedObject($this);\n\t var length = toLength(O.length);\n\t var index = toAbsoluteIndex(fromIndex, length);\n\t var value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t // eslint-disable-next-line no-self-compare\n\t if (IS_INCLUDES && el != el) while (length > index) {\n\t value = O[index++];\n\t // eslint-disable-next-line no-self-compare\n\t if (value != value) return true;\n\t // Array#indexOf ignores holes, Array#includes - not\n\t } else for (;length > index; index++) {\n\t if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n\tvar arrayIncludes = {\n\t // `Array.prototype.includes` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t includes: createMethod(true),\n\t // `Array.prototype.indexOf` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t indexOf: createMethod(false)\n\t};\n\n\tvar indexOf = arrayIncludes.indexOf;\n\n\n\tvar objectKeysInternal = function (object, names) {\n\t var O = toIndexedObject(object);\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while (names.length > i) if (has(O, key = names[i++])) {\n\t ~indexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n\t// IE8- don't enum bug keys\n\tvar enumBugKeys = [\n\t 'constructor',\n\t 'hasOwnProperty',\n\t 'isPrototypeOf',\n\t 'propertyIsEnumerable',\n\t 'toLocaleString',\n\t 'toString',\n\t 'valueOf'\n\t];\n\n\tvar hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');\n\n\t// `Object.getOwnPropertyNames` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\tvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n\t return objectKeysInternal(O, hiddenKeys$1);\n\t};\n\n\tvar objectGetOwnPropertyNames = {\n\t\tf: f$3\n\t};\n\n\tvar f$4 = Object.getOwnPropertySymbols;\n\n\tvar objectGetOwnPropertySymbols = {\n\t\tf: f$4\n\t};\n\n\t// all object keys, includes non-enumerable and symbols\n\tvar ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n\t var keys = objectGetOwnPropertyNames.f(anObject(it));\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n\t return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n\t};\n\n\tvar copyConstructorProperties = function (target, source) {\n\t var keys = ownKeys(source);\n\t var defineProperty = objectDefineProperty.f;\n\t var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n\t }\n\t};\n\n\tvar replacement = /#|\\.prototype\\./;\n\n\tvar isForced = function (feature, detection) {\n\t var value = data[normalize(feature)];\n\t return value == POLYFILL ? true\n\t : value == NATIVE ? false\n\t : typeof detection == 'function' ? fails(detection)\n\t : !!detection;\n\t};\n\n\tvar normalize = isForced.normalize = function (string) {\n\t return String(string).replace(replacement, '.').toLowerCase();\n\t};\n\n\tvar data = isForced.data = {};\n\tvar NATIVE = isForced.NATIVE = 'N';\n\tvar POLYFILL = isForced.POLYFILL = 'P';\n\n\tvar isForced_1 = isForced;\n\n\tvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\n\n\n\n\n\n\t/*\n\t options.target - name of the target object\n\t options.global - target is the global object\n\t options.stat - export as static methods of target\n\t options.proto - export as prototype methods of target\n\t options.real - real prototype method for the `pure` version\n\t options.forced - export even if the native feature is available\n\t options.bind - bind methods to the target, required for the `pure` version\n\t options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n\t options.unsafe - use the simple assignment of property instead of delete + defineProperty\n\t options.sham - add a flag to not completely full polyfills\n\t options.enumerable - export as enumerable property\n\t options.noTargetGet - prevent calling a getter on target\n\t*/\n\tvar _export = function (options, source) {\n\t var TARGET = options.target;\n\t var GLOBAL = options.global;\n\t var STATIC = options.stat;\n\t var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\t if (GLOBAL) {\n\t target = global_1;\n\t } else if (STATIC) {\n\t target = global_1[TARGET] || setGlobal(TARGET, {});\n\t } else {\n\t target = (global_1[TARGET] || {}).prototype;\n\t }\n\t if (target) for (key in source) {\n\t sourceProperty = source[key];\n\t if (options.noTargetGet) {\n\t descriptor = getOwnPropertyDescriptor$1(target, key);\n\t targetProperty = descriptor && descriptor.value;\n\t } else targetProperty = target[key];\n\t FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n\t // contained in target\n\t if (!FORCED && targetProperty !== undefined) {\n\t if (typeof sourceProperty === typeof targetProperty) continue;\n\t copyConstructorProperties(sourceProperty, targetProperty);\n\t }\n\t // add a flag to not completely full polyfills\n\t if (options.sham || (targetProperty && targetProperty.sham)) {\n\t createNonEnumerableProperty(sourceProperty, 'sham', true);\n\t }\n\t // extend global\n\t redefine(target, key, sourceProperty, options);\n\t }\n\t};\n\n\tvar aFunction$1 = function (it) {\n\t if (typeof it != 'function') {\n\t throw TypeError(String(it) + ' is not a function');\n\t } return it;\n\t};\n\n\t// optional / simple context binding\n\tvar functionBindContext = function (fn, that, length) {\n\t aFunction$1(fn);\n\t if (that === undefined) return fn;\n\t switch (length) {\n\t case 0: return function () {\n\t return fn.call(that);\n\t };\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\t// `ToObject` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toobject\n\tvar toObject = function (argument) {\n\t return Object(requireObjectCoercible(argument));\n\t};\n\n\t// `IsArray` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isarray\n\tvar isArray = Array.isArray || function isArray(arg) {\n\t return classofRaw(arg) == 'Array';\n\t};\n\n\tvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {\n\t // Chrome 38 Symbol has incorrect toString conversion\n\t // eslint-disable-next-line no-undef\n\t return !String(Symbol());\n\t});\n\n\tvar useSymbolAsUid = nativeSymbol\n\t // eslint-disable-next-line no-undef\n\t && !Symbol.sham\n\t // eslint-disable-next-line no-undef\n\t && typeof Symbol.iterator == 'symbol';\n\n\tvar WellKnownSymbolsStore = shared('wks');\n\tvar Symbol$1 = global_1.Symbol;\n\tvar createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;\n\n\tvar wellKnownSymbol = function (name) {\n\t if (!has(WellKnownSymbolsStore, name)) {\n\t if (nativeSymbol && has(Symbol$1, name)) WellKnownSymbolsStore[name] = Symbol$1[name];\n\t else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n\t } return WellKnownSymbolsStore[name];\n\t};\n\n\tvar SPECIES = wellKnownSymbol('species');\n\n\t// `ArraySpeciesCreate` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\n\tvar arraySpeciesCreate = function (originalArray, length) {\n\t var C;\n\t if (isArray(originalArray)) {\n\t C = originalArray.constructor;\n\t // cross-realm fallback\n\t if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n\t else if (isObject(C)) {\n\t C = C[SPECIES];\n\t if (C === null) C = undefined;\n\t }\n\t } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n\t};\n\n\tvar push = [].push;\n\n\t// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\n\tvar createMethod$1 = function (TYPE) {\n\t var IS_MAP = TYPE == 1;\n\t var IS_FILTER = TYPE == 2;\n\t var IS_SOME = TYPE == 3;\n\t var IS_EVERY = TYPE == 4;\n\t var IS_FIND_INDEX = TYPE == 6;\n\t var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n\t return function ($this, callbackfn, that, specificCreate) {\n\t var O = toObject($this);\n\t var self = indexedObject(O);\n\t var boundFunction = functionBindContext(callbackfn, that, 3);\n\t var length = toLength(self.length);\n\t var index = 0;\n\t var create = specificCreate || arraySpeciesCreate;\n\t var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n\t var value, result;\n\t for (;length > index; index++) if (NO_HOLES || index in self) {\n\t value = self[index];\n\t result = boundFunction(value, index, O);\n\t if (TYPE) {\n\t if (IS_MAP) target[index] = result; // map\n\t else if (result) switch (TYPE) {\n\t case 3: return true; // some\n\t case 5: return value; // find\n\t case 6: return index; // findIndex\n\t case 2: push.call(target, value); // filter\n\t } else if (IS_EVERY) return false; // every\n\t }\n\t }\n\t return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n\t };\n\t};\n\n\tvar arrayIteration = {\n\t // `Array.prototype.forEach` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t forEach: createMethod$1(0),\n\t // `Array.prototype.map` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t map: createMethod$1(1),\n\t // `Array.prototype.filter` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t filter: createMethod$1(2),\n\t // `Array.prototype.some` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t some: createMethod$1(3),\n\t // `Array.prototype.every` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.every\n\t every: createMethod$1(4),\n\t // `Array.prototype.find` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t find: createMethod$1(5),\n\t // `Array.prototype.findIndex` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\t findIndex: createMethod$1(6)\n\t};\n\n\tvar arrayMethodIsStrict = function (METHOD_NAME, argument) {\n\t var method = [][METHOD_NAME];\n\t return !!method && fails(function () {\n\t // eslint-disable-next-line no-useless-call,no-throw-literal\n\t method.call(null, argument || function () { throw 1; }, 1);\n\t });\n\t};\n\n\tvar defineProperty = Object.defineProperty;\n\tvar cache = {};\n\n\tvar thrower = function (it) { throw it; };\n\n\tvar arrayMethodUsesToLength = function (METHOD_NAME, options) {\n\t if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n\t if (!options) options = {};\n\t var method = [][METHOD_NAME];\n\t var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n\t var argument0 = has(options, 0) ? options[0] : thrower;\n\t var argument1 = has(options, 1) ? options[1] : undefined;\n\n\t return cache[METHOD_NAME] = !!method && !fails(function () {\n\t if (ACCESSORS && !descriptors) return true;\n\t var O = { length: -1 };\n\n\t if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n\t else O[1] = 1;\n\n\t method.call(O, argument0, argument1);\n\t });\n\t};\n\n\tvar $forEach = arrayIteration.forEach;\n\n\n\n\tvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\tvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n\t// `Array.prototype.forEach` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\tvar arrayForEach = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n\t return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t} : [].forEach;\n\n\t// `Array.prototype.forEach` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t_export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, {\n\t forEach: arrayForEach\n\t});\n\n\t// call something on iterator step with safe closing on error\n\tvar callWithSafeIterationClosing = function (iterator, fn, value, ENTRIES) {\n\t try {\n\t return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n\t // 7.4.6 IteratorClose(iterator, completion)\n\t } catch (error) {\n\t var returnMethod = iterator['return'];\n\t if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n\t throw error;\n\t }\n\t};\n\n\tvar iterators = {};\n\n\tvar ITERATOR = wellKnownSymbol('iterator');\n\tvar ArrayPrototype = Array.prototype;\n\n\t// check on default Array iterator\n\tvar isArrayIteratorMethod = function (it) {\n\t return it !== undefined && (iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n\t};\n\n\tvar createProperty = function (object, key, value) {\n\t var propertyKey = toPrimitive(key);\n\t if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));\n\t else object[propertyKey] = value;\n\t};\n\n\tvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\tvar test = {};\n\n\ttest[TO_STRING_TAG] = 'z';\n\n\tvar toStringTagSupport = String(test) === '[object z]';\n\n\tvar TO_STRING_TAG$1 = wellKnownSymbol('toStringTag');\n\t// ES3 wrong here\n\tvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n\t// fallback for IE11 Script Access Denied error\n\tvar tryGet = function (it, key) {\n\t try {\n\t return it[key];\n\t } catch (error) { /* empty */ }\n\t};\n\n\t// getting tag from ES6+ `Object.prototype.toString`\n\tvar classof = toStringTagSupport ? classofRaw : function (it) {\n\t var O, tag, result;\n\t return it === undefined ? 'Undefined' : it === null ? 'Null'\n\t // @@toStringTag case\n\t : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag\n\t // builtinTag case\n\t : CORRECT_ARGUMENTS ? classofRaw(O)\n\t // ES3 arguments fallback\n\t : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n\t};\n\n\tvar ITERATOR$1 = wellKnownSymbol('iterator');\n\n\tvar getIteratorMethod = function (it) {\n\t if (it != undefined) return it[ITERATOR$1]\n\t || it['@@iterator']\n\t || iterators[classof(it)];\n\t};\n\n\t// `Array.from` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\tvar arrayFrom = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n\t var O = toObject(arrayLike);\n\t var C = typeof this == 'function' ? this : Array;\n\t var argumentsLength = arguments.length;\n\t var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n\t var mapping = mapfn !== undefined;\n\t var iteratorMethod = getIteratorMethod(O);\n\t var index = 0;\n\t var length, result, step, iterator, next, value;\n\t if (mapping) mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n\t // if the target is not iterable or it's an array with the default iterator - use a simple case\n\t if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n\t iterator = iteratorMethod.call(O);\n\t next = iterator.next;\n\t result = new C();\n\t for (;!(step = next.call(iterator)).done; index++) {\n\t value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n\t createProperty(result, index, value);\n\t }\n\t } else {\n\t length = toLength(O.length);\n\t result = new C(length);\n\t for (;length > index; index++) {\n\t value = mapping ? mapfn(O[index], index) : O[index];\n\t createProperty(result, index, value);\n\t }\n\t }\n\t result.length = index;\n\t return result;\n\t};\n\n\tvar ITERATOR$2 = wellKnownSymbol('iterator');\n\tvar SAFE_CLOSING = false;\n\n\ttry {\n\t var called = 0;\n\t var iteratorWithReturn = {\n\t next: function () {\n\t return { done: !!called++ };\n\t },\n\t 'return': function () {\n\t SAFE_CLOSING = true;\n\t }\n\t };\n\t iteratorWithReturn[ITERATOR$2] = function () {\n\t return this;\n\t };\n\t // eslint-disable-next-line no-throw-literal\n\t Array.from(iteratorWithReturn, function () { throw 2; });\n\t} catch (error) { /* empty */ }\n\n\tvar checkCorrectnessOfIteration = function (exec, SKIP_CLOSING) {\n\t if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n\t var ITERATION_SUPPORT = false;\n\t try {\n\t var object = {};\n\t object[ITERATOR$2] = function () {\n\t return {\n\t next: function () {\n\t return { done: ITERATION_SUPPORT = true };\n\t }\n\t };\n\t };\n\t exec(object);\n\t } catch (error) { /* empty */ }\n\t return ITERATION_SUPPORT;\n\t};\n\n\tvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n\t Array.from(iterable);\n\t});\n\n\t// `Array.from` method\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\t_export({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n\t from: arrayFrom\n\t});\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\tvar objectKeys = Object.keys || function keys(O) {\n\t return objectKeysInternal(O, enumBugKeys);\n\t};\n\n\t// `Object.defineProperties` method\n\t// https://tc39.github.io/ecma262/#sec-object.defineproperties\n\tvar objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n\t anObject(O);\n\t var keys = objectKeys(Properties);\n\t var length = keys.length;\n\t var index = 0;\n\t var key;\n\t while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]);\n\t return O;\n\t};\n\n\tvar html = getBuiltIn('document', 'documentElement');\n\n\tvar GT = '>';\n\tvar LT = '<';\n\tvar PROTOTYPE = 'prototype';\n\tvar SCRIPT = 'script';\n\tvar IE_PROTO = sharedKey('IE_PROTO');\n\n\tvar EmptyConstructor = function () { /* empty */ };\n\n\tvar scriptTag = function (content) {\n\t return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n\t};\n\n\t// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n\tvar NullProtoObjectViaActiveX = function (activeXDocument) {\n\t activeXDocument.write(scriptTag(''));\n\t activeXDocument.close();\n\t var temp = activeXDocument.parentWindow.Object;\n\t activeXDocument = null; // avoid memory leak\n\t return temp;\n\t};\n\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\n\tvar NullProtoObjectViaIFrame = function () {\n\t // Thrash, waste and sodomy: IE GC bug\n\t var iframe = documentCreateElement('iframe');\n\t var JS = 'java' + SCRIPT + ':';\n\t var iframeDocument;\n\t iframe.style.display = 'none';\n\t html.appendChild(iframe);\n\t // https://github.com/zloirock/core-js/issues/475\n\t iframe.src = String(JS);\n\t iframeDocument = iframe.contentWindow.document;\n\t iframeDocument.open();\n\t iframeDocument.write(scriptTag('document.F=Object'));\n\t iframeDocument.close();\n\t return iframeDocument.F;\n\t};\n\n\t// Check for document.domain and active x support\n\t// No need to use active x approach when document.domain is not set\n\t// see https://github.com/es-shims/es5-shim/issues/150\n\t// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n\t// avoid IE GC bug\n\tvar activeXDocument;\n\tvar NullProtoObject = function () {\n\t try {\n\t /* global ActiveXObject */\n\t activeXDocument = document.domain && new ActiveXObject('htmlfile');\n\t } catch (error) { /* ignore */ }\n\t NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n\t var length = enumBugKeys.length;\n\t while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n\t return NullProtoObject();\n\t};\n\n\thiddenKeys[IE_PROTO] = true;\n\n\t// `Object.create` method\n\t// https://tc39.github.io/ecma262/#sec-object.create\n\tvar objectCreate = Object.create || function create(O, Properties) {\n\t var result;\n\t if (O !== null) {\n\t EmptyConstructor[PROTOTYPE] = anObject(O);\n\t result = new EmptyConstructor();\n\t EmptyConstructor[PROTOTYPE] = null;\n\t // add \"__proto__\" for Object.getPrototypeOf polyfill\n\t result[IE_PROTO] = O;\n\t } else result = NullProtoObject();\n\t return Properties === undefined ? result : objectDefineProperties(result, Properties);\n\t};\n\n\tvar UNSCOPABLES = wellKnownSymbol('unscopables');\n\tvar ArrayPrototype$1 = Array.prototype;\n\n\t// Array.prototype[@@unscopables]\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\tif (ArrayPrototype$1[UNSCOPABLES] == undefined) {\n\t objectDefineProperty.f(ArrayPrototype$1, UNSCOPABLES, {\n\t configurable: true,\n\t value: objectCreate(null)\n\t });\n\t}\n\n\t// add a key to Array.prototype[@@unscopables]\n\tvar addToUnscopables = function (key) {\n\t ArrayPrototype$1[UNSCOPABLES][key] = true;\n\t};\n\n\tvar $includes = arrayIncludes.includes;\n\n\n\n\tvar USES_TO_LENGTH$1 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n\t// `Array.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t_export({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$1 }, {\n\t includes: function includes(el /* , fromIndex = 0 */) {\n\t return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables('includes');\n\n\tvar engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';\n\n\tvar process$1 = global_1.process;\n\tvar versions = process$1 && process$1.versions;\n\tvar v8 = versions && versions.v8;\n\tvar match, version;\n\n\tif (v8) {\n\t match = v8.split('.');\n\t version = match[0] + match[1];\n\t} else if (engineUserAgent) {\n\t match = engineUserAgent.match(/Edge\\/(\\d+)/);\n\t if (!match || match[1] >= 74) {\n\t match = engineUserAgent.match(/Chrome\\/(\\d+)/);\n\t if (match) version = match[1];\n\t }\n\t}\n\n\tvar engineV8Version = version && +version;\n\n\tvar SPECIES$1 = wellKnownSymbol('species');\n\n\tvar arrayMethodHasSpeciesSupport = function (METHOD_NAME) {\n\t // We can't use this feature detection in V8 since it causes\n\t // deoptimization and serious performance degradation\n\t // https://github.com/zloirock/core-js/issues/677\n\t return engineV8Version >= 51 || !fails(function () {\n\t var array = [];\n\t var constructor = array.constructor = {};\n\t constructor[SPECIES$1] = function () {\n\t return { foo: 1 };\n\t };\n\t return array[METHOD_NAME](Boolean).foo !== 1;\n\t });\n\t};\n\n\tvar $map = arrayIteration.map;\n\n\n\n\tvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\t// FF49- issue\n\tvar USES_TO_LENGTH$2 = arrayMethodUsesToLength('map');\n\n\t// `Array.prototype.map` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t// with adding support of @@species\n\t_export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$2 }, {\n\t map: function map(callbackfn /* , thisArg */) {\n\t return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tvar FAILS_ON_PRIMITIVES = fails(function () { objectKeys(1); });\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\t_export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n\t keys: function keys(it) {\n\t return objectKeys(toObject(it));\n\t }\n\t});\n\n\tvar aPossiblePrototype = function (it) {\n\t if (!isObject(it) && it !== null) {\n\t throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n\t } return it;\n\t};\n\n\t// `Object.setPrototypeOf` method\n\t// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n\t// Works with __proto__ only. Old v8 can't work with null proto objects.\n\t/* eslint-disable no-proto */\n\tvar objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n\t var CORRECT_SETTER = false;\n\t var test = {};\n\t var setter;\n\t try {\n\t setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n\t setter.call(test, []);\n\t CORRECT_SETTER = test instanceof Array;\n\t } catch (error) { /* empty */ }\n\t return function setPrototypeOf(O, proto) {\n\t anObject(O);\n\t aPossiblePrototype(proto);\n\t if (CORRECT_SETTER) setter.call(O, proto);\n\t else O.__proto__ = proto;\n\t return O;\n\t };\n\t}() : undefined);\n\n\t// makes subclassing work correct for wrapped built-ins\n\tvar inheritIfRequired = function ($this, dummy, Wrapper) {\n\t var NewTarget, NewTargetPrototype;\n\t if (\n\t // it can work only with native `setPrototypeOf`\n\t objectSetPrototypeOf &&\n\t // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n\t typeof (NewTarget = dummy.constructor) == 'function' &&\n\t NewTarget !== Wrapper &&\n\t isObject(NewTargetPrototype = NewTarget.prototype) &&\n\t NewTargetPrototype !== Wrapper.prototype\n\t ) objectSetPrototypeOf($this, NewTargetPrototype);\n\t return $this;\n\t};\n\n\tvar MATCH = wellKnownSymbol('match');\n\n\t// `IsRegExp` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isregexp\n\tvar isRegexp = function (it) {\n\t var isRegExp;\n\t return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');\n\t};\n\n\t// `RegExp.prototype.flags` getter implementation\n\t// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\n\tvar regexpFlags = function () {\n\t var that = anObject(this);\n\t var result = '';\n\t if (that.global) result += 'g';\n\t if (that.ignoreCase) result += 'i';\n\t if (that.multiline) result += 'm';\n\t if (that.dotAll) result += 's';\n\t if (that.unicode) result += 'u';\n\t if (that.sticky) result += 'y';\n\t return result;\n\t};\n\n\t// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n\t// so we use an intermediate function.\n\tfunction RE(s, f) {\n\t return RegExp(s, f);\n\t}\n\n\tvar UNSUPPORTED_Y = fails(function () {\n\t // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n\t var re = RE('a', 'y');\n\t re.lastIndex = 2;\n\t return re.exec('abcd') != null;\n\t});\n\n\tvar BROKEN_CARET = fails(function () {\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n\t var re = RE('^r', 'gy');\n\t re.lastIndex = 2;\n\t return re.exec('str') != null;\n\t});\n\n\tvar regexpStickyHelpers = {\n\t\tUNSUPPORTED_Y: UNSUPPORTED_Y,\n\t\tBROKEN_CARET: BROKEN_CARET\n\t};\n\n\tvar SPECIES$2 = wellKnownSymbol('species');\n\n\tvar setSpecies = function (CONSTRUCTOR_NAME) {\n\t var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\t var defineProperty = objectDefineProperty.f;\n\n\t if (descriptors && Constructor && !Constructor[SPECIES$2]) {\n\t defineProperty(Constructor, SPECIES$2, {\n\t configurable: true,\n\t get: function () { return this; }\n\t });\n\t }\n\t};\n\n\tvar defineProperty$1 = objectDefineProperty.f;\n\tvar getOwnPropertyNames = objectGetOwnPropertyNames.f;\n\n\n\n\n\n\tvar setInternalState = internalState.set;\n\n\n\n\tvar MATCH$1 = wellKnownSymbol('match');\n\tvar NativeRegExp = global_1.RegExp;\n\tvar RegExpPrototype = NativeRegExp.prototype;\n\tvar re1 = /a/g;\n\tvar re2 = /a/g;\n\n\t// \"new\" should create a new object, old webkit bug\n\tvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\n\tvar UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y;\n\n\tvar FORCED = descriptors && isForced_1('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y$1 || fails(function () {\n\t re2[MATCH$1] = false;\n\t // RegExp constructor can alter flags and IsRegExp works correct with @@match\n\t return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n\t})));\n\n\t// `RegExp` constructor\n\t// https://tc39.github.io/ecma262/#sec-regexp-constructor\n\tif (FORCED) {\n\t var RegExpWrapper = function RegExp(pattern, flags) {\n\t var thisIsRegExp = this instanceof RegExpWrapper;\n\t var patternIsRegExp = isRegexp(pattern);\n\t var flagsAreUndefined = flags === undefined;\n\t var sticky;\n\n\t if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n\t return pattern;\n\t }\n\n\t if (CORRECT_NEW) {\n\t if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n\t } else if (pattern instanceof RegExpWrapper) {\n\t if (flagsAreUndefined) flags = regexpFlags.call(pattern);\n\t pattern = pattern.source;\n\t }\n\n\t if (UNSUPPORTED_Y$1) {\n\t sticky = !!flags && flags.indexOf('y') > -1;\n\t if (sticky) flags = flags.replace(/y/g, '');\n\t }\n\n\t var result = inheritIfRequired(\n\t CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n\t thisIsRegExp ? this : RegExpPrototype,\n\t RegExpWrapper\n\t );\n\n\t if (UNSUPPORTED_Y$1 && sticky) setInternalState(result, { sticky: sticky });\n\n\t return result;\n\t };\n\t var proxy = function (key) {\n\t key in RegExpWrapper || defineProperty$1(RegExpWrapper, key, {\n\t configurable: true,\n\t get: function () { return NativeRegExp[key]; },\n\t set: function (it) { NativeRegExp[key] = it; }\n\t });\n\t };\n\t var keys$1 = getOwnPropertyNames(NativeRegExp);\n\t var index = 0;\n\t while (keys$1.length > index) proxy(keys$1[index++]);\n\t RegExpPrototype.constructor = RegExpWrapper;\n\t RegExpWrapper.prototype = RegExpPrototype;\n\t redefine(global_1, 'RegExp', RegExpWrapper);\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\n\tsetSpecies('RegExp');\n\n\tvar nativeExec = RegExp.prototype.exec;\n\t// This always refers to the native implementation, because the\n\t// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n\t// which loads this file before patching the method.\n\tvar nativeReplace = String.prototype.replace;\n\n\tvar patchedExec = nativeExec;\n\n\tvar UPDATES_LAST_INDEX_WRONG = (function () {\n\t var re1 = /a/;\n\t var re2 = /b*/g;\n\t nativeExec.call(re1, 'a');\n\t nativeExec.call(re2, 'a');\n\t return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n\t})();\n\n\tvar UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET;\n\n\t// nonparticipating capturing group, copied from es5-shim's String#split patch.\n\tvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\n\tvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$2;\n\n\tif (PATCH) {\n\t patchedExec = function exec(str) {\n\t var re = this;\n\t var lastIndex, reCopy, match, i;\n\t var sticky = UNSUPPORTED_Y$2 && re.sticky;\n\t var flags = regexpFlags.call(re);\n\t var source = re.source;\n\t var charsAdded = 0;\n\t var strCopy = str;\n\n\t if (sticky) {\n\t flags = flags.replace('y', '');\n\t if (flags.indexOf('g') === -1) {\n\t flags += 'g';\n\t }\n\n\t strCopy = String(str).slice(re.lastIndex);\n\t // Support anchored sticky behavior.\n\t if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n\t source = '(?: ' + source + ')';\n\t strCopy = ' ' + strCopy;\n\t charsAdded++;\n\t }\n\t // ^(? + rx + ) is needed, in combination with some str slicing, to\n\t // simulate the 'y' flag.\n\t reCopy = new RegExp('^(?:' + source + ')', flags);\n\t }\n\n\t if (NPCG_INCLUDED) {\n\t reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n\t }\n\t if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n\t match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n\t if (sticky) {\n\t if (match) {\n\t match.input = match.input.slice(charsAdded);\n\t match[0] = match[0].slice(charsAdded);\n\t match.index = re.lastIndex;\n\t re.lastIndex += match[0].length;\n\t } else re.lastIndex = 0;\n\t } else if (UPDATES_LAST_INDEX_WRONG && match) {\n\t re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n\t }\n\t if (NPCG_INCLUDED && match && match.length > 1) {\n\t // Fix browsers whose `exec` methods don't consistently return `undefined`\n\t // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n\t nativeReplace.call(match[0], reCopy, function () {\n\t for (i = 1; i < arguments.length - 2; i++) {\n\t if (arguments[i] === undefined) match[i] = undefined;\n\t }\n\t });\n\t }\n\n\t return match;\n\t };\n\t}\n\n\tvar regexpExec = patchedExec;\n\n\t_export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, {\n\t exec: regexpExec\n\t});\n\n\tvar TO_STRING = 'toString';\n\tvar RegExpPrototype$1 = RegExp.prototype;\n\tvar nativeToString = RegExpPrototype$1[TO_STRING];\n\n\tvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n\t// FF44- RegExp#toString has a wrong name\n\tvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n\t// `RegExp.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\tif (NOT_GENERIC || INCORRECT_NAME) {\n\t redefine(RegExp.prototype, TO_STRING, function toString() {\n\t var R = anObject(this);\n\t var p = String(R.source);\n\t var rf = R.flags;\n\t var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$1) ? regexpFlags.call(R) : rf);\n\t return '/' + p + '/' + f;\n\t }, { unsafe: true });\n\t}\n\n\tvar notARegexp = function (it) {\n\t if (isRegexp(it)) {\n\t throw TypeError(\"The method doesn't accept regular expressions\");\n\t } return it;\n\t};\n\n\tvar MATCH$2 = wellKnownSymbol('match');\n\n\tvar correctIsRegexpLogic = function (METHOD_NAME) {\n\t var regexp = /./;\n\t try {\n\t '/./'[METHOD_NAME](regexp);\n\t } catch (e) {\n\t try {\n\t regexp[MATCH$2] = false;\n\t return '/./'[METHOD_NAME](regexp);\n\t } catch (f) { /* empty */ }\n\t } return false;\n\t};\n\n\t// `String.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n\t_export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, {\n\t includes: function includes(searchString /* , position = 0 */) {\n\t return !!~String(requireObjectCoercible(this))\n\t .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `String.prototype.{ codePointAt, at }` methods implementation\n\tvar createMethod$2 = function (CONVERT_TO_STRING) {\n\t return function ($this, pos) {\n\t var S = String(requireObjectCoercible($this));\n\t var position = toInteger(pos);\n\t var size = S.length;\n\t var first, second;\n\t if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n\t first = S.charCodeAt(position);\n\t return first < 0xD800 || first > 0xDBFF || position + 1 === size\n\t || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n\t ? CONVERT_TO_STRING ? S.charAt(position) : first\n\t : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n\t };\n\t};\n\n\tvar stringMultibyte = {\n\t // `String.prototype.codePointAt` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n\t codeAt: createMethod$2(false),\n\t // `String.prototype.at` method\n\t // https://github.com/mathiasbynens/String.prototype.at\n\t charAt: createMethod$2(true)\n\t};\n\n\tvar correctPrototypeGetter = !fails(function () {\n\t function F() { /* empty */ }\n\t F.prototype.constructor = null;\n\t return Object.getPrototypeOf(new F()) !== F.prototype;\n\t});\n\n\tvar IE_PROTO$1 = sharedKey('IE_PROTO');\n\tvar ObjectPrototype = Object.prototype;\n\n\t// `Object.getPrototypeOf` method\n\t// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n\tvar objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) {\n\t O = toObject(O);\n\t if (has(O, IE_PROTO$1)) return O[IE_PROTO$1];\n\t if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n\t return O.constructor.prototype;\n\t } return O instanceof Object ? ObjectPrototype : null;\n\t};\n\n\tvar ITERATOR$3 = wellKnownSymbol('iterator');\n\tvar BUGGY_SAFARI_ITERATORS = false;\n\n\tvar returnThis = function () { return this; };\n\n\t// `%IteratorPrototype%` object\n\t// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\n\tvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n\tif ([].keys) {\n\t arrayIterator = [].keys();\n\t // Safari 8 has buggy iterators w/o `next`\n\t if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n\t else {\n\t PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator));\n\t if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n\t }\n\t}\n\n\tif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\tif ( !has(IteratorPrototype, ITERATOR$3)) {\n\t createNonEnumerableProperty(IteratorPrototype, ITERATOR$3, returnThis);\n\t}\n\n\tvar iteratorsCore = {\n\t IteratorPrototype: IteratorPrototype,\n\t BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n\t};\n\n\tvar defineProperty$2 = objectDefineProperty.f;\n\n\n\n\tvar TO_STRING_TAG$2 = wellKnownSymbol('toStringTag');\n\n\tvar setToStringTag = function (it, TAG, STATIC) {\n\t if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG$2)) {\n\t defineProperty$2(it, TO_STRING_TAG$2, { configurable: true, value: TAG });\n\t }\n\t};\n\n\tvar IteratorPrototype$1 = iteratorsCore.IteratorPrototype;\n\n\n\n\n\n\tvar returnThis$1 = function () { return this; };\n\n\tvar createIteratorConstructor = function (IteratorConstructor, NAME, next) {\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) });\n\t setToStringTag(IteratorConstructor, TO_STRING_TAG, false);\n\t iterators[TO_STRING_TAG] = returnThis$1;\n\t return IteratorConstructor;\n\t};\n\n\tvar IteratorPrototype$2 = iteratorsCore.IteratorPrototype;\n\tvar BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS;\n\tvar ITERATOR$4 = wellKnownSymbol('iterator');\n\tvar KEYS = 'keys';\n\tvar VALUES = 'values';\n\tvar ENTRIES = 'entries';\n\n\tvar returnThis$2 = function () { return this; };\n\n\tvar defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n\t createIteratorConstructor(IteratorConstructor, NAME, next);\n\n\t var getIterationMethod = function (KIND) {\n\t if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n\t if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) return IterablePrototype[KIND];\n\t switch (KIND) {\n\t case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n\t case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n\t case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n\t } return function () { return new IteratorConstructor(this); };\n\t };\n\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t var INCORRECT_VALUES_NAME = false;\n\t var IterablePrototype = Iterable.prototype;\n\t var nativeIterator = IterablePrototype[ITERATOR$4]\n\t || IterablePrototype['@@iterator']\n\t || DEFAULT && IterablePrototype[DEFAULT];\n\t var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT);\n\t var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n\t var CurrentIteratorPrototype, methods, KEY;\n\n\t // fix native\n\t if (anyNativeIterator) {\n\t CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable()));\n\t if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) {\n\t if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) {\n\t if (objectSetPrototypeOf) {\n\t objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2);\n\t } else if (typeof CurrentIteratorPrototype[ITERATOR$4] != 'function') {\n\t createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$4, returnThis$2);\n\t }\n\t }\n\t // Set @@toStringTag to native iterators\n\t setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true);\n\t }\n\t }\n\n\t // fix Array#{values, @@iterator}.name in V8 / FF\n\t if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n\t INCORRECT_VALUES_NAME = true;\n\t defaultIterator = function values() { return nativeIterator.call(this); };\n\t }\n\n\t // define iterator\n\t if ( IterablePrototype[ITERATOR$4] !== defaultIterator) {\n\t createNonEnumerableProperty(IterablePrototype, ITERATOR$4, defaultIterator);\n\t }\n\t iterators[NAME] = defaultIterator;\n\n\t // export additional methods\n\t if (DEFAULT) {\n\t methods = {\n\t values: getIterationMethod(VALUES),\n\t keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n\t entries: getIterationMethod(ENTRIES)\n\t };\n\t if (FORCED) for (KEY in methods) {\n\t if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n\t redefine(IterablePrototype, KEY, methods[KEY]);\n\t }\n\t } else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods);\n\t }\n\n\t return methods;\n\t};\n\n\tvar charAt = stringMultibyte.charAt;\n\n\n\n\tvar STRING_ITERATOR = 'String Iterator';\n\tvar setInternalState$1 = internalState.set;\n\tvar getInternalState = internalState.getterFor(STRING_ITERATOR);\n\n\t// `String.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\n\tdefineIterator(String, 'String', function (iterated) {\n\t setInternalState$1(this, {\n\t type: STRING_ITERATOR,\n\t string: String(iterated),\n\t index: 0\n\t });\n\t// `%StringIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n\t}, function next() {\n\t var state = getInternalState(this);\n\t var string = state.string;\n\t var index = state.index;\n\t var point;\n\t if (index >= string.length) return { value: undefined, done: true };\n\t point = charAt(string, index);\n\t state.index += point.length;\n\t return { value: point, done: false };\n\t});\n\n\t// iterable DOM collections\n\t// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\n\tvar domIterables = {\n\t CSSRuleList: 0,\n\t CSSStyleDeclaration: 0,\n\t CSSValueList: 0,\n\t ClientRectList: 0,\n\t DOMRectList: 0,\n\t DOMStringList: 0,\n\t DOMTokenList: 1,\n\t DataTransferItemList: 0,\n\t FileList: 0,\n\t HTMLAllCollection: 0,\n\t HTMLCollection: 0,\n\t HTMLFormElement: 0,\n\t HTMLSelectElement: 0,\n\t MediaList: 0,\n\t MimeTypeArray: 0,\n\t NamedNodeMap: 0,\n\t NodeList: 1,\n\t PaintRequestList: 0,\n\t Plugin: 0,\n\t PluginArray: 0,\n\t SVGLengthList: 0,\n\t SVGNumberList: 0,\n\t SVGPathSegList: 0,\n\t SVGPointList: 0,\n\t SVGStringList: 0,\n\t SVGTransformList: 0,\n\t SourceBufferList: 0,\n\t StyleSheetList: 0,\n\t TextTrackCueList: 0,\n\t TextTrackList: 0,\n\t TouchList: 0\n\t};\n\n\tfor (var COLLECTION_NAME in domIterables) {\n\t var Collection = global_1[COLLECTION_NAME];\n\t var CollectionPrototype = Collection && Collection.prototype;\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try {\n\t createNonEnumerableProperty(CollectionPrototype, 'forEach', arrayForEach);\n\t } catch (error) {\n\t CollectionPrototype.forEach = arrayForEach;\n\t }\n\t}\n\n\t// Setup tab focus\n\tvar container = document.getElementById('container');\n\tvar tabClassName = 'tab-focus'; // Remove class on blur\n\n\tdocument.addEventListener('focusout', function (event) {\n\t if (!event.target.classList || container.contains(event.target)) {\n\t return;\n\t }\n\n\t event.target.classList.remove(tabClassName);\n\t}); // Add classname to tabbed elements\n\n\tdocument.addEventListener('keydown', function (event) {\n\t if (event.keyCode !== 9) {\n\t return;\n\t } // Delay the adding of classname until the focus has changed\n\t // This event fires before the focusin event\n\n\n\t setTimeout(function () {\n\t var focused = document.activeElement;\n\n\t if (!focused || !focused.classList || container.contains(focused)) {\n\t return;\n\t }\n\n\t focused.classList.add(tabClassName);\n\t }, 10);\n\t});\n\n\t// Polyfill for creating CustomEvents on IE9/10/11\n\t// code pulled from:\n\t// https://github.com/d4tocchini/customevent-polyfill\n\t// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\t(function () {\n\t if (typeof window === 'undefined') {\n\t return;\n\t }\n\n\t try {\n\t var ce = new window.CustomEvent('test', {\n\t cancelable: true\n\t });\n\t ce.preventDefault();\n\n\t if (ce.defaultPrevented !== true) {\n\t // IE has problems with .preventDefault() on custom events\n\t // http://stackoverflow.com/questions/23349191\n\t throw new Error('Could not prevent default');\n\t }\n\t } catch (e) {\n\t var CustomEvent = function CustomEvent(event, params) {\n\t var evt, origPrevent;\n\t params = params || {};\n\t params.bubbles = !!params.bubbles;\n\t params.cancelable = !!params.cancelable;\n\t evt = document.createEvent('CustomEvent');\n\t evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t origPrevent = evt.preventDefault;\n\n\t evt.preventDefault = function () {\n\t origPrevent.call(this);\n\n\t try {\n\t Object.defineProperty(this, 'defaultPrevented', {\n\t get: function get() {\n\t return true;\n\t }\n\t });\n\t } catch (e) {\n\t this.defaultPrevented = true;\n\t }\n\t };\n\n\t return evt;\n\t };\n\n\t CustomEvent.prototype = window.Event.prototype;\n\t window.CustomEvent = CustomEvent; // expose definition to window\n\t }\n\t})();\n\n\tvar nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f;\n\n\tvar toString$1 = {}.toString;\n\n\tvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n\t ? Object.getOwnPropertyNames(window) : [];\n\n\tvar getWindowNames = function (it) {\n\t try {\n\t return nativeGetOwnPropertyNames(it);\n\t } catch (error) {\n\t return windowNames.slice();\n\t }\n\t};\n\n\t// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\tvar f$5 = function getOwnPropertyNames(it) {\n\t return windowNames && toString$1.call(it) == '[object Window]'\n\t ? getWindowNames(it)\n\t : nativeGetOwnPropertyNames(toIndexedObject(it));\n\t};\n\n\tvar objectGetOwnPropertyNamesExternal = {\n\t\tf: f$5\n\t};\n\n\tvar f$6 = wellKnownSymbol;\n\n\tvar wellKnownSymbolWrapped = {\n\t\tf: f$6\n\t};\n\n\tvar defineProperty$3 = objectDefineProperty.f;\n\n\tvar defineWellKnownSymbol = function (NAME) {\n\t var Symbol = path.Symbol || (path.Symbol = {});\n\t if (!has(Symbol, NAME)) defineProperty$3(Symbol, NAME, {\n\t value: wellKnownSymbolWrapped.f(NAME)\n\t });\n\t};\n\n\tvar $forEach$1 = arrayIteration.forEach;\n\n\tvar HIDDEN = sharedKey('hidden');\n\tvar SYMBOL = 'Symbol';\n\tvar PROTOTYPE$1 = 'prototype';\n\tvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\tvar setInternalState$2 = internalState.set;\n\tvar getInternalState$1 = internalState.getterFor(SYMBOL);\n\tvar ObjectPrototype$1 = Object[PROTOTYPE$1];\n\tvar $Symbol = global_1.Symbol;\n\tvar $stringify = getBuiltIn('JSON', 'stringify');\n\tvar nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\tvar nativeDefineProperty$1 = objectDefineProperty.f;\n\tvar nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f;\n\tvar nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f;\n\tvar AllSymbols = shared('symbols');\n\tvar ObjectPrototypeSymbols = shared('op-symbols');\n\tvar StringToSymbolRegistry = shared('string-to-symbol-registry');\n\tvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\tvar WellKnownSymbolsStore$1 = shared('wks');\n\tvar QObject = global_1.QObject;\n\t// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\tvar USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild;\n\n\t// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\tvar setSymbolDescriptor = descriptors && fails(function () {\n\t return objectCreate(nativeDefineProperty$1({}, 'a', {\n\t get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; }\n\t })).a != 7;\n\t}) ? function (O, P, Attributes) {\n\t var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype$1, P);\n\t if (ObjectPrototypeDescriptor) delete ObjectPrototype$1[P];\n\t nativeDefineProperty$1(O, P, Attributes);\n\t if (ObjectPrototypeDescriptor && O !== ObjectPrototype$1) {\n\t nativeDefineProperty$1(ObjectPrototype$1, P, ObjectPrototypeDescriptor);\n\t }\n\t} : nativeDefineProperty$1;\n\n\tvar wrap = function (tag, description) {\n\t var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]);\n\t setInternalState$2(symbol, {\n\t type: SYMBOL,\n\t tag: tag,\n\t description: description\n\t });\n\t if (!descriptors) symbol.description = description;\n\t return symbol;\n\t};\n\n\tvar isSymbol = useSymbolAsUid ? function (it) {\n\t return typeof it == 'symbol';\n\t} : function (it) {\n\t return Object(it) instanceof $Symbol;\n\t};\n\n\tvar $defineProperty = function defineProperty(O, P, Attributes) {\n\t if (O === ObjectPrototype$1) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n\t anObject(O);\n\t var key = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if (has(AllSymbols, key)) {\n\t if (!Attributes.enumerable) {\n\t if (!has(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {}));\n\t O[HIDDEN][key] = true;\n\t } else {\n\t if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n\t Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n\t } return setSymbolDescriptor(O, key, Attributes);\n\t } return nativeDefineProperty$1(O, key, Attributes);\n\t};\n\n\tvar $defineProperties = function defineProperties(O, Properties) {\n\t anObject(O);\n\t var properties = toIndexedObject(Properties);\n\t var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n\t $forEach$1(keys, function (key) {\n\t if (!descriptors || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n\t });\n\t return O;\n\t};\n\n\tvar $create = function create(O, Properties) {\n\t return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties);\n\t};\n\n\tvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n\t var P = toPrimitive(V, true);\n\t var enumerable = nativePropertyIsEnumerable$1.call(this, P);\n\t if (this === ObjectPrototype$1 && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n\t return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n\t};\n\n\tvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n\t var it = toIndexedObject(O);\n\t var key = toPrimitive(P, true);\n\t if (it === ObjectPrototype$1 && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n\t var descriptor = nativeGetOwnPropertyDescriptor$1(it, key);\n\t if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n\t descriptor.enumerable = true;\n\t }\n\t return descriptor;\n\t};\n\n\tvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n\t var names = nativeGetOwnPropertyNames$1(toIndexedObject(O));\n\t var result = [];\n\t $forEach$1(names, function (key) {\n\t if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n\t });\n\t return result;\n\t};\n\n\tvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n\t var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$1;\n\t var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n\t var result = [];\n\t $forEach$1(names, function (key) {\n\t if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype$1, key))) {\n\t result.push(AllSymbols[key]);\n\t }\n\t });\n\t return result;\n\t};\n\n\t// `Symbol` constructor\n\t// https://tc39.github.io/ecma262/#sec-symbol-constructor\n\tif (!nativeSymbol) {\n\t $Symbol = function Symbol() {\n\t if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n\t var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n\t var tag = uid(description);\n\t var setter = function (value) {\n\t if (this === ObjectPrototype$1) setter.call(ObjectPrototypeSymbols, value);\n\t if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n\t setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n\t };\n\t if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype$1, tag, { configurable: true, set: setter });\n\t return wrap(tag, description);\n\t };\n\n\t redefine($Symbol[PROTOTYPE$1], 'toString', function toString() {\n\t return getInternalState$1(this).tag;\n\t });\n\n\t redefine($Symbol, 'withoutSetter', function (description) {\n\t return wrap(uid(description), description);\n\t });\n\n\t objectPropertyIsEnumerable.f = $propertyIsEnumerable;\n\t objectDefineProperty.f = $defineProperty;\n\t objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;\n\t objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n\t objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;\n\n\t wellKnownSymbolWrapped.f = function (name) {\n\t return wrap(wellKnownSymbol(name), name);\n\t };\n\n\t if (descriptors) {\n\t // https://github.com/tc39/proposal-Symbol-description\n\t nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {\n\t configurable: true,\n\t get: function description() {\n\t return getInternalState$1(this).description;\n\t }\n\t });\n\t {\n\t redefine(ObjectPrototype$1, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n\t }\n\t }\n\t}\n\n\t_export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, {\n\t Symbol: $Symbol\n\t});\n\n\t$forEach$1(objectKeys(WellKnownSymbolsStore$1), function (name) {\n\t defineWellKnownSymbol(name);\n\t});\n\n\t_export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, {\n\t // `Symbol.for` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.for\n\t 'for': function (key) {\n\t var string = String(key);\n\t if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n\t var symbol = $Symbol(string);\n\t StringToSymbolRegistry[string] = symbol;\n\t SymbolToStringRegistry[symbol] = string;\n\t return symbol;\n\t },\n\t // `Symbol.keyFor` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n\t keyFor: function keyFor(sym) {\n\t if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n\t if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n\t },\n\t useSetter: function () { USE_SETTER = true; },\n\t useSimple: function () { USE_SETTER = false; }\n\t});\n\n\t_export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, {\n\t // `Object.create` method\n\t // https://tc39.github.io/ecma262/#sec-object.create\n\t create: $create,\n\t // `Object.defineProperty` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperty\n\t defineProperty: $defineProperty,\n\t // `Object.defineProperties` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperties\n\t defineProperties: $defineProperties,\n\t // `Object.getOwnPropertyDescriptor` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n\t getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n\t});\n\n\t_export({ target: 'Object', stat: true, forced: !nativeSymbol }, {\n\t // `Object.getOwnPropertyNames` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\t getOwnPropertyNames: $getOwnPropertyNames,\n\t // `Object.getOwnPropertySymbols` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n\t getOwnPropertySymbols: $getOwnPropertySymbols\n\t});\n\n\t// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n\t// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n\t_export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, {\n\t getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n\t return objectGetOwnPropertySymbols.f(toObject(it));\n\t }\n\t});\n\n\t// `JSON.stringify` method behavior with symbols\n\t// https://tc39.github.io/ecma262/#sec-json.stringify\n\tif ($stringify) {\n\t var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function () {\n\t var symbol = $Symbol();\n\t // MS Edge converts symbol values to JSON as {}\n\t return $stringify([symbol]) != '[null]'\n\t // WebKit converts symbol values to JSON as null\n\t || $stringify({ a: symbol }) != '{}'\n\t // V8 throws on boxed symbols\n\t || $stringify(Object(symbol)) != '{}';\n\t });\n\n\t _export({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n\t // eslint-disable-next-line no-unused-vars\n\t stringify: function stringify(it, replacer, space) {\n\t var args = [it];\n\t var index = 1;\n\t var $replacer;\n\t while (arguments.length > index) args.push(arguments[index++]);\n\t $replacer = replacer;\n\t if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n\t if (!isArray(replacer)) replacer = function (key, value) {\n\t if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n\t if (!isSymbol(value)) return value;\n\t };\n\t args[1] = replacer;\n\t return $stringify.apply(null, args);\n\t }\n\t });\n\t}\n\n\t// `Symbol.prototype[@@toPrimitive]` method\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\n\tif (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) {\n\t createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf);\n\t}\n\t// `Symbol.prototype[@@toStringTag]` property\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\n\tsetToStringTag($Symbol, SYMBOL);\n\n\thiddenKeys[HIDDEN] = true;\n\n\tvar defineProperty$4 = objectDefineProperty.f;\n\n\n\tvar NativeSymbol = global_1.Symbol;\n\n\tif (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n\t // Safari 12 bug\n\t NativeSymbol().description !== undefined\n\t)) {\n\t var EmptyStringDescriptionStore = {};\n\t // wrap Symbol constructor for correct work with undefined description\n\t var SymbolWrapper = function Symbol() {\n\t var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n\t var result = this instanceof SymbolWrapper\n\t ? new NativeSymbol(description)\n\t // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n\t : description === undefined ? NativeSymbol() : NativeSymbol(description);\n\t if (description === '') EmptyStringDescriptionStore[result] = true;\n\t return result;\n\t };\n\t copyConstructorProperties(SymbolWrapper, NativeSymbol);\n\t var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n\t symbolPrototype.constructor = SymbolWrapper;\n\n\t var symbolToString = symbolPrototype.toString;\n\t var native = String(NativeSymbol('test')) == 'Symbol(test)';\n\t var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n\t defineProperty$4(symbolPrototype, 'description', {\n\t configurable: true,\n\t get: function description() {\n\t var symbol = isObject(this) ? this.valueOf() : this;\n\t var string = symbolToString.call(symbol);\n\t if (has(EmptyStringDescriptionStore, symbol)) return '';\n\t var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n\t return desc === '' ? undefined : desc;\n\t }\n\t });\n\n\t _export({ global: true, forced: true }, {\n\t Symbol: SymbolWrapper\n\t });\n\t}\n\n\t// `Symbol.iterator` well-known symbol\n\t// https://tc39.github.io/ecma262/#sec-symbol.iterator\n\tdefineWellKnownSymbol('iterator');\n\n\tvar $indexOf = arrayIncludes.indexOf;\n\n\n\n\tvar nativeIndexOf = [].indexOf;\n\n\tvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\n\tvar STRICT_METHOD$1 = arrayMethodIsStrict('indexOf');\n\tvar USES_TO_LENGTH$3 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n\t// `Array.prototype.indexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t_export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD$1 || !USES_TO_LENGTH$3 }, {\n\t indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n\t return NEGATIVE_ZERO\n\t // convert -0 to +0\n\t ? nativeIndexOf.apply(this, arguments) || 0\n\t : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tvar ARRAY_ITERATOR = 'Array Iterator';\n\tvar setInternalState$3 = internalState.set;\n\tvar getInternalState$2 = internalState.getterFor(ARRAY_ITERATOR);\n\n\t// `Array.prototype.entries` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n\t// `Array.prototype.keys` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n\t// `Array.prototype.values` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.values\n\t// `Array.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n\t// `CreateArrayIterator` internal method\n\t// https://tc39.github.io/ecma262/#sec-createarrayiterator\n\tvar es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) {\n\t setInternalState$3(this, {\n\t type: ARRAY_ITERATOR,\n\t target: toIndexedObject(iterated), // target\n\t index: 0, // next index\n\t kind: kind // kind\n\t });\n\t// `%ArrayIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n\t}, function () {\n\t var state = getInternalState$2(this);\n\t var target = state.target;\n\t var kind = state.kind;\n\t var index = state.index++;\n\t if (!target || index >= target.length) {\n\t state.target = undefined;\n\t return { value: undefined, done: true };\n\t }\n\t if (kind == 'keys') return { value: index, done: false };\n\t if (kind == 'values') return { value: target[index], done: false };\n\t return { value: [index, target[index]], done: false };\n\t}, 'values');\n\n\t// argumentsList[@@iterator] is %ArrayProto_values%\n\t// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n\t// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\n\titerators.Arguments = iterators.Array;\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables('keys');\n\taddToUnscopables('values');\n\taddToUnscopables('entries');\n\n\tvar nativeJoin = [].join;\n\n\tvar ES3_STRINGS = indexedObject != Object;\n\tvar STRICT_METHOD$2 = arrayMethodIsStrict('join', ',');\n\n\t// `Array.prototype.join` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.join\n\t_export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD$2 }, {\n\t join: function join(separator) {\n\t return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n\t }\n\t});\n\n\tvar HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('slice');\n\tvar USES_TO_LENGTH$4 = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\n\tvar SPECIES$3 = wellKnownSymbol('species');\n\tvar nativeSlice = [].slice;\n\tvar max$1 = Math.max;\n\n\t// `Array.prototype.slice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n\t// fallback for not array-like ES3 strings and DOM objects\n\t_export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$4 }, {\n\t slice: function slice(start, end) {\n\t var O = toIndexedObject(this);\n\t var length = toLength(O.length);\n\t var k = toAbsoluteIndex(start, length);\n\t var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n\t // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n\t var Constructor, result, n;\n\t if (isArray(O)) {\n\t Constructor = O.constructor;\n\t // cross-realm fallback\n\t if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n\t Constructor = undefined;\n\t } else if (isObject(Constructor)) {\n\t Constructor = Constructor[SPECIES$3];\n\t if (Constructor === null) Constructor = undefined;\n\t }\n\t if (Constructor === Array || Constructor === undefined) {\n\t return nativeSlice.call(O, k, fin);\n\t }\n\t }\n\t result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0));\n\t for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n\t result.length = n;\n\t return result;\n\t }\n\t});\n\n\t// `Object.prototype.toString` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tvar objectToString = toStringTagSupport ? {}.toString : function toString() {\n\t return '[object ' + classof(this) + ']';\n\t};\n\n\t// `Object.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tif (!toStringTagSupport) {\n\t redefine(Object.prototype, 'toString', objectToString, { unsafe: true });\n\t}\n\n\t// TODO: Remove from `core-js@4` since it's moved to entry points\n\n\n\n\n\n\n\n\tvar SPECIES$4 = wellKnownSymbol('species');\n\n\tvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n\t // #replace needs built-in support for named groups.\n\t // #match works fine because it just return the exec results, even if it has\n\t // a \"grops\" property.\n\t var re = /./;\n\t re.exec = function () {\n\t var result = [];\n\t result.groups = { a: '7' };\n\t return result;\n\t };\n\t return ''.replace(re, '$<a>') !== '7';\n\t});\n\n\t// IE <= 11 replaces $0 with the whole match, as if it was $&\n\t// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\n\tvar REPLACE_KEEPS_$0 = (function () {\n\t return 'a'.replace(/./, '$0') === '$0';\n\t})();\n\n\tvar REPLACE = wellKnownSymbol('replace');\n\t// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\n\tvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n\t if (/./[REPLACE]) {\n\t return /./[REPLACE]('a', '$0') === '';\n\t }\n\t return false;\n\t})();\n\n\t// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n\t// Weex JS has frozen built-in prototypes, so use try / catch wrapper\n\tvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n\t var re = /(?:)/;\n\t var originalExec = re.exec;\n\t re.exec = function () { return originalExec.apply(this, arguments); };\n\t var result = 'ab'.split(re);\n\t return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n\t});\n\n\tvar fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {\n\t var SYMBOL = wellKnownSymbol(KEY);\n\n\t var DELEGATES_TO_SYMBOL = !fails(function () {\n\t // String methods call symbol-named RegEp methods\n\t var O = {};\n\t O[SYMBOL] = function () { return 7; };\n\t return ''[KEY](O) != 7;\n\t });\n\n\t var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n\t // Symbol-named RegExp methods call .exec\n\t var execCalled = false;\n\t var re = /a/;\n\n\t if (KEY === 'split') {\n\t // We can't use real regex here since it causes deoptimization\n\t // and serious performance degradation in V8\n\t // https://github.com/zloirock/core-js/issues/306\n\t re = {};\n\t // RegExp[@@split] doesn't call the regex's exec method, but first creates\n\t // a new one. We need to return the patched regex when creating the new one.\n\t re.constructor = {};\n\t re.constructor[SPECIES$4] = function () { return re; };\n\t re.flags = '';\n\t re[SYMBOL] = /./[SYMBOL];\n\t }\n\n\t re.exec = function () { execCalled = true; return null; };\n\n\t re[SYMBOL]('');\n\t return !execCalled;\n\t });\n\n\t if (\n\t !DELEGATES_TO_SYMBOL ||\n\t !DELEGATES_TO_EXEC ||\n\t (KEY === 'replace' && !(\n\t REPLACE_SUPPORTS_NAMED_GROUPS &&\n\t REPLACE_KEEPS_$0 &&\n\t !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n\t )) ||\n\t (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n\t ) {\n\t var nativeRegExpMethod = /./[SYMBOL];\n\t var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n\t if (regexp.exec === regexpExec) {\n\t if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n\t // The native String method already delegates to @@method (this\n\t // polyfilled function), leasing to infinite recursion.\n\t // We avoid it by directly calling the native @@method method.\n\t return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n\t }\n\t return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n\t }\n\t return { done: false };\n\t }, {\n\t REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n\t REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n\t });\n\t var stringMethod = methods[0];\n\t var regexMethod = methods[1];\n\n\t redefine(String.prototype, KEY, stringMethod);\n\t redefine(RegExp.prototype, SYMBOL, length == 2\n\t // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n\t // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n\t ? function (string, arg) { return regexMethod.call(string, this, arg); }\n\t // 21.2.5.6 RegExp.prototype[@@match](string)\n\t // 21.2.5.9 RegExp.prototype[@@search](string)\n\t : function (string) { return regexMethod.call(string, this); }\n\t );\n\t }\n\n\t if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n\t};\n\n\tvar charAt$1 = stringMultibyte.charAt;\n\n\t// `AdvanceStringIndex` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-advancestringindex\n\tvar advanceStringIndex = function (S, index, unicode) {\n\t return index + (unicode ? charAt$1(S, index).length : 1);\n\t};\n\n\t// `RegExpExec` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-regexpexec\n\tvar regexpExecAbstract = function (R, S) {\n\t var exec = R.exec;\n\t if (typeof exec === 'function') {\n\t var result = exec.call(R, S);\n\t if (typeof result !== 'object') {\n\t throw TypeError('RegExp exec method returned something other than an Object or null');\n\t }\n\t return result;\n\t }\n\n\t if (classofRaw(R) !== 'RegExp') {\n\t throw TypeError('RegExp#exec called on incompatible receiver');\n\t }\n\n\t return regexpExec.call(R, S);\n\t};\n\n\tvar max$2 = Math.max;\n\tvar min$2 = Math.min;\n\tvar floor$1 = Math.floor;\n\tvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\n\tvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n\tvar maybeToString = function (it) {\n\t return it === undefined ? it : String(it);\n\t};\n\n\t// @@replace logic\n\tfixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n\t var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n\t var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n\t var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n\t return [\n\t // `String.prototype.replace` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n\t function replace(searchValue, replaceValue) {\n\t var O = requireObjectCoercible(this);\n\t var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n\t return replacer !== undefined\n\t ? replacer.call(searchValue, O, replaceValue)\n\t : nativeReplace.call(String(O), searchValue, replaceValue);\n\t },\n\t // `RegExp.prototype[@@replace]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n\t function (regexp, replaceValue) {\n\t if (\n\t (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n\t (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n\t ) {\n\t var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n\t if (res.done) return res.value;\n\t }\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\n\t var functionalReplace = typeof replaceValue === 'function';\n\t if (!functionalReplace) replaceValue = String(replaceValue);\n\n\t var global = rx.global;\n\t if (global) {\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t }\n\t var results = [];\n\t while (true) {\n\t var result = regexpExecAbstract(rx, S);\n\t if (result === null) break;\n\n\t results.push(result);\n\t if (!global) break;\n\n\t var matchStr = String(result[0]);\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n\t }\n\n\t var accumulatedResult = '';\n\t var nextSourcePosition = 0;\n\t for (var i = 0; i < results.length; i++) {\n\t result = results[i];\n\n\t var matched = String(result[0]);\n\t var position = max$2(min$2(toInteger(result.index), S.length), 0);\n\t var captures = [];\n\t // NOTE: This is equivalent to\n\t // captures = result.slice(1).map(maybeToString)\n\t // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n\t // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n\t // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\t for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n\t var namedCaptures = result.groups;\n\t if (functionalReplace) {\n\t var replacerArgs = [matched].concat(captures, position, S);\n\t if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n\t var replacement = String(replaceValue.apply(undefined, replacerArgs));\n\t } else {\n\t replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n\t }\n\t if (position >= nextSourcePosition) {\n\t accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n\t nextSourcePosition = position + matched.length;\n\t }\n\t }\n\t return accumulatedResult + S.slice(nextSourcePosition);\n\t }\n\t ];\n\n\t // https://tc39.github.io/ecma262/#sec-getsubstitution\n\t function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n\t var tailPos = position + matched.length;\n\t var m = captures.length;\n\t var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n\t if (namedCaptures !== undefined) {\n\t namedCaptures = toObject(namedCaptures);\n\t symbols = SUBSTITUTION_SYMBOLS;\n\t }\n\t return nativeReplace.call(replacement, symbols, function (match, ch) {\n\t var capture;\n\t switch (ch.charAt(0)) {\n\t case '$': return '$';\n\t case '&': return matched;\n\t case '`': return str.slice(0, position);\n\t case \"'\": return str.slice(tailPos);\n\t case '<':\n\t capture = namedCaptures[ch.slice(1, -1)];\n\t break;\n\t default: // \\d\\d?\n\t var n = +ch;\n\t if (n === 0) return match;\n\t if (n > m) {\n\t var f = floor$1(n / 10);\n\t if (f === 0) return match;\n\t if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n\t return match;\n\t }\n\t capture = captures[n - 1];\n\t }\n\t return capture === undefined ? '' : capture;\n\t });\n\t }\n\t});\n\n\t// `SameValue` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-samevalue\n\tvar sameValue = Object.is || function is(x, y) {\n\t // eslint-disable-next-line no-self-compare\n\t return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n\t};\n\n\t// @@search logic\n\tfixRegexpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n\t return [\n\t // `String.prototype.search` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.search\n\t function search(regexp) {\n\t var O = requireObjectCoercible(this);\n\t var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n\t return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n\t },\n\t // `RegExp.prototype[@@search]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n\t function (regexp) {\n\t var res = maybeCallNative(nativeSearch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\n\t var previousLastIndex = rx.lastIndex;\n\t if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n\t var result = regexpExecAbstract(rx, S);\n\t if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n\t return result === null ? -1 : result.index;\n\t }\n\t ];\n\t});\n\n\tvar SPECIES$5 = wellKnownSymbol('species');\n\n\t// `SpeciesConstructor` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-speciesconstructor\n\tvar speciesConstructor = function (O, defaultConstructor) {\n\t var C = anObject(O).constructor;\n\t var S;\n\t return C === undefined || (S = anObject(C)[SPECIES$5]) == undefined ? defaultConstructor : aFunction$1(S);\n\t};\n\n\tvar arrayPush = [].push;\n\tvar min$3 = Math.min;\n\tvar MAX_UINT32 = 0xFFFFFFFF;\n\n\t// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\n\tvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n\t// @@split logic\n\tfixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n\t var internalSplit;\n\t if (\n\t 'abbc'.split(/(b)*/)[1] == 'c' ||\n\t 'test'.split(/(?:)/, -1).length != 4 ||\n\t 'ab'.split(/(?:ab)*/).length != 2 ||\n\t '.'.split(/(.?)(.?)/).length != 4 ||\n\t '.'.split(/()()/).length > 1 ||\n\t ''.split(/.?/).length\n\t ) {\n\t // based on es5-shim implementation, need to rework it\n\t internalSplit = function (separator, limit) {\n\t var string = String(requireObjectCoercible(this));\n\t var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (separator === undefined) return [string];\n\t // If `separator` is not a regex, use native split\n\t if (!isRegexp(separator)) {\n\t return nativeSplit.call(string, separator, lim);\n\t }\n\t var output = [];\n\t var flags = (separator.ignoreCase ? 'i' : '') +\n\t (separator.multiline ? 'm' : '') +\n\t (separator.unicode ? 'u' : '') +\n\t (separator.sticky ? 'y' : '');\n\t var lastLastIndex = 0;\n\t // Make `global` and avoid `lastIndex` issues by working with a copy\n\t var separatorCopy = new RegExp(separator.source, flags + 'g');\n\t var match, lastIndex, lastLength;\n\t while (match = regexpExec.call(separatorCopy, string)) {\n\t lastIndex = separatorCopy.lastIndex;\n\t if (lastIndex > lastLastIndex) {\n\t output.push(string.slice(lastLastIndex, match.index));\n\t if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n\t lastLength = match[0].length;\n\t lastLastIndex = lastIndex;\n\t if (output.length >= lim) break;\n\t }\n\t if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n\t }\n\t if (lastLastIndex === string.length) {\n\t if (lastLength || !separatorCopy.test('')) output.push('');\n\t } else output.push(string.slice(lastLastIndex));\n\t return output.length > lim ? output.slice(0, lim) : output;\n\t };\n\t // Chakra, V8\n\t } else if ('0'.split(undefined, 0).length) {\n\t internalSplit = function (separator, limit) {\n\t return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n\t };\n\t } else internalSplit = nativeSplit;\n\n\t return [\n\t // `String.prototype.split` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.split\n\t function split(separator, limit) {\n\t var O = requireObjectCoercible(this);\n\t var splitter = separator == undefined ? undefined : separator[SPLIT];\n\t return splitter !== undefined\n\t ? splitter.call(separator, O, limit)\n\t : internalSplit.call(String(O), separator, limit);\n\t },\n\t // `RegExp.prototype[@@split]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n\t //\n\t // NOTE: This cannot be properly polyfilled in engines that don't support\n\t // the 'y' flag.\n\t function (regexp, limit) {\n\t var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\t var C = speciesConstructor(rx, RegExp);\n\n\t var unicodeMatching = rx.unicode;\n\t var flags = (rx.ignoreCase ? 'i' : '') +\n\t (rx.multiline ? 'm' : '') +\n\t (rx.unicode ? 'u' : '') +\n\t (SUPPORTS_Y ? 'y' : 'g');\n\n\t // ^(? + rx + ) is needed, in combination with some S slicing, to\n\t // simulate the 'y' flag.\n\t var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n\t var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];\n\t var p = 0;\n\t var q = 0;\n\t var A = [];\n\t while (q < S.length) {\n\t splitter.lastIndex = SUPPORTS_Y ? q : 0;\n\t var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q));\n\t var e;\n\t if (\n\t z === null ||\n\t (e = min$3(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n\t ) {\n\t q = advanceStringIndex(S, q, unicodeMatching);\n\t } else {\n\t A.push(S.slice(p, q));\n\t if (A.length === lim) return A;\n\t for (var i = 1; i <= z.length - 1; i++) {\n\t A.push(z[i]);\n\t if (A.length === lim) return A;\n\t }\n\t q = p = e;\n\t }\n\t }\n\t A.push(S.slice(p));\n\t return A;\n\t }\n\t ];\n\t}, !SUPPORTS_Y);\n\n\tvar ITERATOR$5 = wellKnownSymbol('iterator');\n\tvar TO_STRING_TAG$3 = wellKnownSymbol('toStringTag');\n\tvar ArrayValues = es_array_iterator.values;\n\n\tfor (var COLLECTION_NAME$1 in domIterables) {\n\t var Collection$1 = global_1[COLLECTION_NAME$1];\n\t var CollectionPrototype$1 = Collection$1 && Collection$1.prototype;\n\t if (CollectionPrototype$1) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$1[ITERATOR$5] !== ArrayValues) try {\n\t createNonEnumerableProperty(CollectionPrototype$1, ITERATOR$5, ArrayValues);\n\t } catch (error) {\n\t CollectionPrototype$1[ITERATOR$5] = ArrayValues;\n\t }\n\t if (!CollectionPrototype$1[TO_STRING_TAG$3]) {\n\t createNonEnumerableProperty(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1);\n\t }\n\t if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try {\n\t createNonEnumerableProperty(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]);\n\t } catch (error) {\n\t CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME];\n\t }\n\t }\n\t }\n\t}\n\n\tvar ITERATOR$6 = wellKnownSymbol('iterator');\n\n\tvar nativeUrl = !fails(function () {\n\t var url = new URL('b?a=1&b=2&c=3', 'http://a');\n\t var searchParams = url.searchParams;\n\t var result = '';\n\t url.pathname = 'c%20d';\n\t searchParams.forEach(function (value, key) {\n\t searchParams['delete']('b');\n\t result += key + value;\n\t });\n\t return (isPure && !url.toJSON)\n\t || !searchParams.sort\n\t || url.href !== 'http://a/c%20d?a=1&c=3'\n\t || searchParams.get('c') !== '3'\n\t || String(new URLSearchParams('?a=1')) !== 'a=1'\n\t || !searchParams[ITERATOR$6]\n\t // throws in Edge\n\t || new URL('https://a@b').username !== 'a'\n\t || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n\t // not punycoded in Edge\n\t || new URL('http://тест').host !== 'xn--e1aybc'\n\t // not escaped in Chrome 62-\n\t || new URL('http://a#б').hash !== '#%D0%B1'\n\t // fails in Chrome 66-\n\t || result !== 'a1c3'\n\t // throws in Safari\n\t || new URL('http://x', undefined).host !== 'x';\n\t});\n\n\tvar anInstance = function (it, Constructor, name) {\n\t if (!(it instanceof Constructor)) {\n\t throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n\t } return it;\n\t};\n\n\tvar nativeAssign = Object.assign;\n\tvar defineProperty$5 = Object.defineProperty;\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\tvar objectAssign = !nativeAssign || fails(function () {\n\t // should have correct order of operations (Edge bug)\n\t if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty$5({}, 'a', {\n\t enumerable: true,\n\t get: function () {\n\t defineProperty$5(this, 'b', {\n\t value: 3,\n\t enumerable: false\n\t });\n\t }\n\t }), { b: 2 })).b !== 1) return true;\n\t // should work with symbols and should have deterministic property order (V8 bug)\n\t var A = {};\n\t var B = {};\n\t // eslint-disable-next-line no-undef\n\t var symbol = Symbol();\n\t var alphabet = 'abcdefghijklmnopqrst';\n\t A[symbol] = 7;\n\t alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n\t return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n\t}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n\t var T = toObject(target);\n\t var argumentsLength = arguments.length;\n\t var index = 1;\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n\t var propertyIsEnumerable = objectPropertyIsEnumerable.f;\n\t while (argumentsLength > index) {\n\t var S = indexedObject(arguments[index++]);\n\t var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n\t var length = keys.length;\n\t var j = 0;\n\t var key;\n\t while (length > j) {\n\t key = keys[j++];\n\t if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n\t }\n\t } return T;\n\t} : nativeAssign;\n\n\t// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\n\tvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\tvar base = 36;\n\tvar tMin = 1;\n\tvar tMax = 26;\n\tvar skew = 38;\n\tvar damp = 700;\n\tvar initialBias = 72;\n\tvar initialN = 128; // 0x80\n\tvar delimiter = '-'; // '\\x2D'\n\tvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\n\tvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\tvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\n\tvar baseMinusTMin = base - tMin;\n\tvar floor$2 = Math.floor;\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t */\n\tvar ucs2decode = function (string) {\n\t var output = [];\n\t var counter = 0;\n\t var length = string.length;\n\t while (counter < length) {\n\t var value = string.charCodeAt(counter++);\n\t if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t // It's a high surrogate, and there is a next character.\n\t var extra = string.charCodeAt(counter++);\n\t if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t } else {\n\t // It's an unmatched surrogate; only append this code unit, in case the\n\t // next code unit is the high surrogate of a surrogate pair.\n\t output.push(value);\n\t counter--;\n\t }\n\t } else {\n\t output.push(value);\n\t }\n\t }\n\t return output;\n\t};\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t */\n\tvar digitToBasic = function (digit) {\n\t // 0..25 map to ASCII a..z or A..Z\n\t // 26..35 map to ASCII 0..9\n\t return digit + 22 + 75 * (digit < 26);\n\t};\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t */\n\tvar adapt = function (delta, numPoints, firstTime) {\n\t var k = 0;\n\t delta = firstTime ? floor$2(delta / damp) : delta >> 1;\n\t delta += floor$2(delta / numPoints);\n\t for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t delta = floor$2(delta / baseMinusTMin);\n\t }\n\t return floor$2(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t};\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t */\n\t// eslint-disable-next-line max-statements\n\tvar encode = function (input) {\n\t var output = [];\n\n\t // Convert the input in UCS-2 to an array of Unicode code points.\n\t input = ucs2decode(input);\n\n\t // Cache the length.\n\t var inputLength = input.length;\n\n\t // Initialize the state.\n\t var n = initialN;\n\t var delta = 0;\n\t var bias = initialBias;\n\t var i, currentValue;\n\n\t // Handle the basic code points.\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < 0x80) {\n\t output.push(stringFromCharCode(currentValue));\n\t }\n\t }\n\n\t var basicLength = output.length; // number of basic code points.\n\t var handledCPCount = basicLength; // number of code points that have been handled;\n\n\t // Finish the basic string with a delimiter unless it's empty.\n\t if (basicLength) {\n\t output.push(delimiter);\n\t }\n\n\t // Main encoding loop:\n\t while (handledCPCount < inputLength) {\n\t // All non-basic code points < n have been handled already. Find the next larger one:\n\t var m = maxInt;\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue >= n && currentValue < m) {\n\t m = currentValue;\n\t }\n\t }\n\n\t // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n\t var handledCPCountPlusOne = handledCPCount + 1;\n\t if (m - n > floor$2((maxInt - delta) / handledCPCountPlusOne)) {\n\t throw RangeError(OVERFLOW_ERROR);\n\t }\n\n\t delta += (m - n) * handledCPCountPlusOne;\n\t n = m;\n\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < n && ++delta > maxInt) {\n\t throw RangeError(OVERFLOW_ERROR);\n\t }\n\t if (currentValue == n) {\n\t // Represent delta as a generalized variable-length integer.\n\t var q = delta;\n\t for (var k = base; /* no condition */; k += base) {\n\t var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t if (q < t) break;\n\t var qMinusT = q - t;\n\t var baseMinusT = base - t;\n\t output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n\t q = floor$2(qMinusT / baseMinusT);\n\t }\n\n\t output.push(stringFromCharCode(digitToBasic(q)));\n\t bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t delta = 0;\n\t ++handledCPCount;\n\t }\n\t }\n\n\t ++delta;\n\t ++n;\n\t }\n\t return output.join('');\n\t};\n\n\tvar stringPunycodeToAscii = function (input) {\n\t var encoded = [];\n\t var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n\t var i, label;\n\t for (i = 0; i < labels.length; i++) {\n\t label = labels[i];\n\t encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n\t }\n\t return encoded.join('.');\n\t};\n\n\tvar redefineAll = function (target, src, options) {\n\t for (var key in src) redefine(target, key, src[key], options);\n\t return target;\n\t};\n\n\tvar getIterator = function (it) {\n\t var iteratorMethod = getIteratorMethod(it);\n\t if (typeof iteratorMethod != 'function') {\n\t throw TypeError(String(it) + ' is not iterable');\n\t } return anObject(iteratorMethod.call(it));\n\t};\n\n\t// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tvar $fetch = getBuiltIn('fetch');\n\tvar Headers$1 = getBuiltIn('Headers');\n\tvar ITERATOR$7 = wellKnownSymbol('iterator');\n\tvar URL_SEARCH_PARAMS = 'URLSearchParams';\n\tvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\n\tvar setInternalState$4 = internalState.set;\n\tvar getInternalParamsState = internalState.getterFor(URL_SEARCH_PARAMS);\n\tvar getInternalIteratorState = internalState.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\n\tvar plus = /\\+/g;\n\tvar sequences = Array(4);\n\n\tvar percentSequence = function (bytes) {\n\t return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n\t};\n\n\tvar percentDecode = function (sequence) {\n\t try {\n\t return decodeURIComponent(sequence);\n\t } catch (error) {\n\t return sequence;\n\t }\n\t};\n\n\tvar deserialize = function (it) {\n\t var result = it.replace(plus, ' ');\n\t var bytes = 4;\n\t try {\n\t return decodeURIComponent(result);\n\t } catch (error) {\n\t while (bytes) {\n\t result = result.replace(percentSequence(bytes--), percentDecode);\n\t }\n\t return result;\n\t }\n\t};\n\n\tvar find = /[!'()~]|%20/g;\n\n\tvar replace = {\n\t '!': '%21',\n\t \"'\": '%27',\n\t '(': '%28',\n\t ')': '%29',\n\t '~': '%7E',\n\t '%20': '+'\n\t};\n\n\tvar replacer = function (match) {\n\t return replace[match];\n\t};\n\n\tvar serialize = function (it) {\n\t return encodeURIComponent(it).replace(find, replacer);\n\t};\n\n\tvar parseSearchParams = function (result, query) {\n\t if (query) {\n\t var attributes = query.split('&');\n\t var index = 0;\n\t var attribute, entry;\n\t while (index < attributes.length) {\n\t attribute = attributes[index++];\n\t if (attribute.length) {\n\t entry = attribute.split('=');\n\t result.push({\n\t key: deserialize(entry.shift()),\n\t value: deserialize(entry.join('='))\n\t });\n\t }\n\t }\n\t }\n\t};\n\n\tvar updateSearchParams = function (query) {\n\t this.entries.length = 0;\n\t parseSearchParams(this.entries, query);\n\t};\n\n\tvar validateArgumentsLength = function (passed, required) {\n\t if (passed < required) throw TypeError('Not enough arguments');\n\t};\n\n\tvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n\t setInternalState$4(this, {\n\t type: URL_SEARCH_PARAMS_ITERATOR,\n\t iterator: getIterator(getInternalParamsState(params).entries),\n\t kind: kind\n\t });\n\t}, 'Iterator', function next() {\n\t var state = getInternalIteratorState(this);\n\t var kind = state.kind;\n\t var step = state.iterator.next();\n\t var entry = step.value;\n\t if (!step.done) {\n\t step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n\t } return step;\n\t});\n\n\t// `URLSearchParams` constructor\n\t// https://url.spec.whatwg.org/#interface-urlsearchparams\n\tvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n\t anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\t var init = arguments.length > 0 ? arguments[0] : undefined;\n\t var that = this;\n\t var entries = [];\n\t var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n\t setInternalState$4(that, {\n\t type: URL_SEARCH_PARAMS,\n\t entries: entries,\n\t updateURL: function () { /* empty */ },\n\t updateSearchParams: updateSearchParams\n\t });\n\n\t if (init !== undefined) {\n\t if (isObject(init)) {\n\t iteratorMethod = getIteratorMethod(init);\n\t if (typeof iteratorMethod === 'function') {\n\t iterator = iteratorMethod.call(init);\n\t next = iterator.next;\n\t while (!(step = next.call(iterator)).done) {\n\t entryIterator = getIterator(anObject(step.value));\n\t entryNext = entryIterator.next;\n\t if (\n\t (first = entryNext.call(entryIterator)).done ||\n\t (second = entryNext.call(entryIterator)).done ||\n\t !entryNext.call(entryIterator).done\n\t ) throw TypeError('Expected sequence with length 2');\n\t entries.push({ key: first.value + '', value: second.value + '' });\n\t }\n\t } else for (key in init) if (has(init, key)) entries.push({ key: key, value: init[key] + '' });\n\t } else {\n\t parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n\t }\n\t }\n\t};\n\n\tvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\n\tredefineAll(URLSearchParamsPrototype, {\n\t // `URLSearchParams.prototype.appent` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n\t append: function append(name, value) {\n\t validateArgumentsLength(arguments.length, 2);\n\t var state = getInternalParamsState(this);\n\t state.entries.push({ key: name + '', value: value + '' });\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.delete` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n\t 'delete': function (name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var state = getInternalParamsState(this);\n\t var entries = state.entries;\n\t var key = name + '';\n\t var index = 0;\n\t while (index < entries.length) {\n\t if (entries[index].key === key) entries.splice(index, 1);\n\t else index++;\n\t }\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.get` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n\t get: function get(name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var entries = getInternalParamsState(this).entries;\n\t var key = name + '';\n\t var index = 0;\n\t for (; index < entries.length; index++) {\n\t if (entries[index].key === key) return entries[index].value;\n\t }\n\t return null;\n\t },\n\t // `URLSearchParams.prototype.getAll` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n\t getAll: function getAll(name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var entries = getInternalParamsState(this).entries;\n\t var key = name + '';\n\t var result = [];\n\t var index = 0;\n\t for (; index < entries.length; index++) {\n\t if (entries[index].key === key) result.push(entries[index].value);\n\t }\n\t return result;\n\t },\n\t // `URLSearchParams.prototype.has` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n\t has: function has(name) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var entries = getInternalParamsState(this).entries;\n\t var key = name + '';\n\t var index = 0;\n\t while (index < entries.length) {\n\t if (entries[index++].key === key) return true;\n\t }\n\t return false;\n\t },\n\t // `URLSearchParams.prototype.set` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n\t set: function set(name, value) {\n\t validateArgumentsLength(arguments.length, 1);\n\t var state = getInternalParamsState(this);\n\t var entries = state.entries;\n\t var found = false;\n\t var key = name + '';\n\t var val = value + '';\n\t var index = 0;\n\t var entry;\n\t for (; index < entries.length; index++) {\n\t entry = entries[index];\n\t if (entry.key === key) {\n\t if (found) entries.splice(index--, 1);\n\t else {\n\t found = true;\n\t entry.value = val;\n\t }\n\t }\n\t }\n\t if (!found) entries.push({ key: key, value: val });\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.sort` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n\t sort: function sort() {\n\t var state = getInternalParamsState(this);\n\t var entries = state.entries;\n\t // Array#sort is not stable in some engines\n\t var slice = entries.slice();\n\t var entry, entriesIndex, sliceIndex;\n\t entries.length = 0;\n\t for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n\t entry = slice[sliceIndex];\n\t for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n\t if (entries[entriesIndex].key > entry.key) {\n\t entries.splice(entriesIndex, 0, entry);\n\t break;\n\t }\n\t }\n\t if (entriesIndex === sliceIndex) entries.push(entry);\n\t }\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.forEach` method\n\t forEach: function forEach(callback /* , thisArg */) {\n\t var entries = getInternalParamsState(this).entries;\n\t var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n\t var index = 0;\n\t var entry;\n\t while (index < entries.length) {\n\t entry = entries[index++];\n\t boundFunction(entry.value, entry.key, this);\n\t }\n\t },\n\t // `URLSearchParams.prototype.keys` method\n\t keys: function keys() {\n\t return new URLSearchParamsIterator(this, 'keys');\n\t },\n\t // `URLSearchParams.prototype.values` method\n\t values: function values() {\n\t return new URLSearchParamsIterator(this, 'values');\n\t },\n\t // `URLSearchParams.prototype.entries` method\n\t entries: function entries() {\n\t return new URLSearchParamsIterator(this, 'entries');\n\t }\n\t}, { enumerable: true });\n\n\t// `URLSearchParams.prototype[@@iterator]` method\n\tredefine(URLSearchParamsPrototype, ITERATOR$7, URLSearchParamsPrototype.entries);\n\n\t// `URLSearchParams.prototype.toString` method\n\t// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\n\tredefine(URLSearchParamsPrototype, 'toString', function toString() {\n\t var entries = getInternalParamsState(this).entries;\n\t var result = [];\n\t var index = 0;\n\t var entry;\n\t while (index < entries.length) {\n\t entry = entries[index++];\n\t result.push(serialize(entry.key) + '=' + serialize(entry.value));\n\t } return result.join('&');\n\t}, { enumerable: true });\n\n\tsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n\t_export({ global: true, forced: !nativeUrl }, {\n\t URLSearchParams: URLSearchParamsConstructor\n\t});\n\n\t// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n\t// https://github.com/zloirock/core-js/issues/674\n\tif (!nativeUrl && typeof $fetch == 'function' && typeof Headers$1 == 'function') {\n\t _export({ global: true, enumerable: true, forced: true }, {\n\t fetch: function fetch(input /* , init */) {\n\t var args = [input];\n\t var init, body, headers;\n\t if (arguments.length > 1) {\n\t init = arguments[1];\n\t if (isObject(init)) {\n\t body = init.body;\n\t if (classof(body) === URL_SEARCH_PARAMS) {\n\t headers = init.headers ? new Headers$1(init.headers) : new Headers$1();\n\t if (!headers.has('content-type')) {\n\t headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n\t }\n\t init = objectCreate(init, {\n\t body: createPropertyDescriptor(0, String(body)),\n\t headers: createPropertyDescriptor(0, headers)\n\t });\n\t }\n\t }\n\t args.push(init);\n\t } return $fetch.apply(this, args);\n\t }\n\t });\n\t}\n\n\tvar web_urlSearchParams = {\n\t URLSearchParams: URLSearchParamsConstructor,\n\t getState: getInternalParamsState\n\t};\n\n\t// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n\n\n\n\n\n\n\n\n\n\n\n\tvar codeAt = stringMultibyte.codeAt;\n\n\n\n\n\n\tvar NativeURL = global_1.URL;\n\tvar URLSearchParams$1 = web_urlSearchParams.URLSearchParams;\n\tvar getInternalSearchParamsState = web_urlSearchParams.getState;\n\tvar setInternalState$5 = internalState.set;\n\tvar getInternalURLState = internalState.getterFor('URL');\n\tvar floor$3 = Math.floor;\n\tvar pow = Math.pow;\n\n\tvar INVALID_AUTHORITY = 'Invalid authority';\n\tvar INVALID_SCHEME = 'Invalid scheme';\n\tvar INVALID_HOST = 'Invalid host';\n\tvar INVALID_PORT = 'Invalid port';\n\n\tvar ALPHA = /[A-Za-z]/;\n\tvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\n\tvar DIGIT = /\\d/;\n\tvar HEX_START = /^(0x|0X)/;\n\tvar OCT = /^[0-7]+$/;\n\tvar DEC = /^\\d+$/;\n\tvar HEX = /^[\\dA-Fa-f]+$/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n\t// eslint-disable-next-line no-control-regex\n\tvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\n\tvar EOF;\n\n\tvar parseHost = function (url, input) {\n\t var result, codePoints, index;\n\t if (input.charAt(0) == '[') {\n\t if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n\t result = parseIPv6(input.slice(1, -1));\n\t if (!result) return INVALID_HOST;\n\t url.host = result;\n\t // opaque host\n\t } else if (!isSpecial(url)) {\n\t if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n\t result = '';\n\t codePoints = arrayFrom(input);\n\t for (index = 0; index < codePoints.length; index++) {\n\t result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n\t }\n\t url.host = result;\n\t } else {\n\t input = stringPunycodeToAscii(input);\n\t if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n\t result = parseIPv4(input);\n\t if (result === null) return INVALID_HOST;\n\t url.host = result;\n\t }\n\t};\n\n\tvar parseIPv4 = function (input) {\n\t var parts = input.split('.');\n\t var partsLength, numbers, index, part, radix, number, ipv4;\n\t if (parts.length && parts[parts.length - 1] == '') {\n\t parts.pop();\n\t }\n\t partsLength = parts.length;\n\t if (partsLength > 4) return input;\n\t numbers = [];\n\t for (index = 0; index < partsLength; index++) {\n\t part = parts[index];\n\t if (part == '') return input;\n\t radix = 10;\n\t if (part.length > 1 && part.charAt(0) == '0') {\n\t radix = HEX_START.test(part) ? 16 : 8;\n\t part = part.slice(radix == 8 ? 1 : 2);\n\t }\n\t if (part === '') {\n\t number = 0;\n\t } else {\n\t if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n\t number = parseInt(part, radix);\n\t }\n\t numbers.push(number);\n\t }\n\t for (index = 0; index < partsLength; index++) {\n\t number = numbers[index];\n\t if (index == partsLength - 1) {\n\t if (number >= pow(256, 5 - partsLength)) return null;\n\t } else if (number > 255) return null;\n\t }\n\t ipv4 = numbers.pop();\n\t for (index = 0; index < numbers.length; index++) {\n\t ipv4 += numbers[index] * pow(256, 3 - index);\n\t }\n\t return ipv4;\n\t};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseIPv6 = function (input) {\n\t var address = [0, 0, 0, 0, 0, 0, 0, 0];\n\t var pieceIndex = 0;\n\t var compress = null;\n\t var pointer = 0;\n\t var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n\t var char = function () {\n\t return input.charAt(pointer);\n\t };\n\n\t if (char() == ':') {\n\t if (input.charAt(1) != ':') return;\n\t pointer += 2;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t }\n\t while (char()) {\n\t if (pieceIndex == 8) return;\n\t if (char() == ':') {\n\t if (compress !== null) return;\n\t pointer++;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t continue;\n\t }\n\t value = length = 0;\n\t while (length < 4 && HEX.test(char())) {\n\t value = value * 16 + parseInt(char(), 16);\n\t pointer++;\n\t length++;\n\t }\n\t if (char() == '.') {\n\t if (length == 0) return;\n\t pointer -= length;\n\t if (pieceIndex > 6) return;\n\t numbersSeen = 0;\n\t while (char()) {\n\t ipv4Piece = null;\n\t if (numbersSeen > 0) {\n\t if (char() == '.' && numbersSeen < 4) pointer++;\n\t else return;\n\t }\n\t if (!DIGIT.test(char())) return;\n\t while (DIGIT.test(char())) {\n\t number = parseInt(char(), 10);\n\t if (ipv4Piece === null) ipv4Piece = number;\n\t else if (ipv4Piece == 0) return;\n\t else ipv4Piece = ipv4Piece * 10 + number;\n\t if (ipv4Piece > 255) return;\n\t pointer++;\n\t }\n\t address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n\t numbersSeen++;\n\t if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n\t }\n\t if (numbersSeen != 4) return;\n\t break;\n\t } else if (char() == ':') {\n\t pointer++;\n\t if (!char()) return;\n\t } else if (char()) return;\n\t address[pieceIndex++] = value;\n\t }\n\t if (compress !== null) {\n\t swaps = pieceIndex - compress;\n\t pieceIndex = 7;\n\t while (pieceIndex != 0 && swaps > 0) {\n\t swap = address[pieceIndex];\n\t address[pieceIndex--] = address[compress + swaps - 1];\n\t address[compress + --swaps] = swap;\n\t }\n\t } else if (pieceIndex != 8) return;\n\t return address;\n\t};\n\n\tvar findLongestZeroSequence = function (ipv6) {\n\t var maxIndex = null;\n\t var maxLength = 1;\n\t var currStart = null;\n\t var currLength = 0;\n\t var index = 0;\n\t for (; index < 8; index++) {\n\t if (ipv6[index] !== 0) {\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t currStart = null;\n\t currLength = 0;\n\t } else {\n\t if (currStart === null) currStart = index;\n\t ++currLength;\n\t }\n\t }\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t return maxIndex;\n\t};\n\n\tvar serializeHost = function (host) {\n\t var result, index, compress, ignore0;\n\t // ipv4\n\t if (typeof host == 'number') {\n\t result = [];\n\t for (index = 0; index < 4; index++) {\n\t result.unshift(host % 256);\n\t host = floor$3(host / 256);\n\t } return result.join('.');\n\t // ipv6\n\t } else if (typeof host == 'object') {\n\t result = '';\n\t compress = findLongestZeroSequence(host);\n\t for (index = 0; index < 8; index++) {\n\t if (ignore0 && host[index] === 0) continue;\n\t if (ignore0) ignore0 = false;\n\t if (compress === index) {\n\t result += index ? ':' : '::';\n\t ignore0 = true;\n\t } else {\n\t result += host[index].toString(16);\n\t if (index < 7) result += ':';\n\t }\n\t }\n\t return '[' + result + ']';\n\t } return host;\n\t};\n\n\tvar C0ControlPercentEncodeSet = {};\n\tvar fragmentPercentEncodeSet = objectAssign({}, C0ControlPercentEncodeSet, {\n\t ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n\t});\n\tvar pathPercentEncodeSet = objectAssign({}, fragmentPercentEncodeSet, {\n\t '#': 1, '?': 1, '{': 1, '}': 1\n\t});\n\tvar userinfoPercentEncodeSet = objectAssign({}, pathPercentEncodeSet, {\n\t '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n\t});\n\n\tvar percentEncode = function (char, set) {\n\t var code = codeAt(char, 0);\n\t return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n\t};\n\n\tvar specialSchemes = {\n\t ftp: 21,\n\t file: null,\n\t http: 80,\n\t https: 443,\n\t ws: 80,\n\t wss: 443\n\t};\n\n\tvar isSpecial = function (url) {\n\t return has(specialSchemes, url.scheme);\n\t};\n\n\tvar includesCredentials = function (url) {\n\t return url.username != '' || url.password != '';\n\t};\n\n\tvar cannotHaveUsernamePasswordPort = function (url) {\n\t return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n\t};\n\n\tvar isWindowsDriveLetter = function (string, normalized) {\n\t var second;\n\t return string.length == 2 && ALPHA.test(string.charAt(0))\n\t && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n\t};\n\n\tvar startsWithWindowsDriveLetter = function (string) {\n\t var third;\n\t return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n\t string.length == 2 ||\n\t ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n\t );\n\t};\n\n\tvar shortenURLsPath = function (url) {\n\t var path = url.path;\n\t var pathSize = path.length;\n\t if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n\t path.pop();\n\t }\n\t};\n\n\tvar isSingleDot = function (segment) {\n\t return segment === '.' || segment.toLowerCase() === '%2e';\n\t};\n\n\tvar isDoubleDot = function (segment) {\n\t segment = segment.toLowerCase();\n\t return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n\t};\n\n\t// States:\n\tvar SCHEME_START = {};\n\tvar SCHEME = {};\n\tvar NO_SCHEME = {};\n\tvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\n\tvar PATH_OR_AUTHORITY = {};\n\tvar RELATIVE = {};\n\tvar RELATIVE_SLASH = {};\n\tvar SPECIAL_AUTHORITY_SLASHES = {};\n\tvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\n\tvar AUTHORITY = {};\n\tvar HOST = {};\n\tvar HOSTNAME = {};\n\tvar PORT = {};\n\tvar FILE = {};\n\tvar FILE_SLASH = {};\n\tvar FILE_HOST = {};\n\tvar PATH_START = {};\n\tvar PATH = {};\n\tvar CANNOT_BE_A_BASE_URL_PATH = {};\n\tvar QUERY = {};\n\tvar FRAGMENT = {};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseURL = function (url, input, stateOverride, base) {\n\t var state = stateOverride || SCHEME_START;\n\t var pointer = 0;\n\t var buffer = '';\n\t var seenAt = false;\n\t var seenBracket = false;\n\t var seenPasswordToken = false;\n\t var codePoints, char, bufferCodePoints, failure;\n\n\t if (!stateOverride) {\n\t url.scheme = '';\n\t url.username = '';\n\t url.password = '';\n\t url.host = null;\n\t url.port = null;\n\t url.path = [];\n\t url.query = null;\n\t url.fragment = null;\n\t url.cannotBeABaseURL = false;\n\t input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n\t }\n\n\t input = input.replace(TAB_AND_NEW_LINE, '');\n\n\t codePoints = arrayFrom(input);\n\n\t while (pointer <= codePoints.length) {\n\t char = codePoints[pointer];\n\t switch (state) {\n\t case SCHEME_START:\n\t if (char && ALPHA.test(char)) {\n\t buffer += char.toLowerCase();\n\t state = SCHEME;\n\t } else if (!stateOverride) {\n\t state = NO_SCHEME;\n\t continue;\n\t } else return INVALID_SCHEME;\n\t break;\n\n\t case SCHEME:\n\t if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n\t buffer += char.toLowerCase();\n\t } else if (char == ':') {\n\t if (stateOverride && (\n\t (isSpecial(url) != has(specialSchemes, buffer)) ||\n\t (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n\t (url.scheme == 'file' && !url.host)\n\t )) return;\n\t url.scheme = buffer;\n\t if (stateOverride) {\n\t if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n\t return;\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file') {\n\t state = FILE;\n\t } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n\t state = SPECIAL_RELATIVE_OR_AUTHORITY;\n\t } else if (isSpecial(url)) {\n\t state = SPECIAL_AUTHORITY_SLASHES;\n\t } else if (codePoints[pointer + 1] == '/') {\n\t state = PATH_OR_AUTHORITY;\n\t pointer++;\n\t } else {\n\t url.cannotBeABaseURL = true;\n\t url.path.push('');\n\t state = CANNOT_BE_A_BASE_URL_PATH;\n\t }\n\t } else if (!stateOverride) {\n\t buffer = '';\n\t state = NO_SCHEME;\n\t pointer = 0;\n\t continue;\n\t } else return INVALID_SCHEME;\n\t break;\n\n\t case NO_SCHEME:\n\t if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n\t if (base.cannotBeABaseURL && char == '#') {\n\t url.scheme = base.scheme;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t url.cannotBeABaseURL = true;\n\t state = FRAGMENT;\n\t break;\n\t }\n\t state = base.scheme == 'file' ? FILE : RELATIVE;\n\t continue;\n\n\t case SPECIAL_RELATIVE_OR_AUTHORITY:\n\t if (char == '/' && codePoints[pointer + 1] == '/') {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n\t pointer++;\n\t } else {\n\t state = RELATIVE;\n\t continue;\n\t } break;\n\n\t case PATH_OR_AUTHORITY:\n\t if (char == '/') {\n\t state = AUTHORITY;\n\t break;\n\t } else {\n\t state = PATH;\n\t continue;\n\t }\n\n\t case RELATIVE:\n\t url.scheme = base.scheme;\n\t if (char == EOF) {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n\t state = RELATIVE_SLASH;\n\t } else if (char == '?') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.path.pop();\n\t state = PATH;\n\t continue;\n\t } break;\n\n\t case RELATIVE_SLASH:\n\t if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n\t } else if (char == '/') {\n\t state = AUTHORITY;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t state = PATH;\n\t continue;\n\t } break;\n\n\t case SPECIAL_AUTHORITY_SLASHES:\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n\t if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n\t pointer++;\n\t break;\n\n\t case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n\t if (char != '/' && char != '\\\\') {\n\t state = AUTHORITY;\n\t continue;\n\t } break;\n\n\t case AUTHORITY:\n\t if (char == '@') {\n\t if (seenAt) buffer = '%40' + buffer;\n\t seenAt = true;\n\t bufferCodePoints = arrayFrom(buffer);\n\t for (var i = 0; i < bufferCodePoints.length; i++) {\n\t var codePoint = bufferCodePoints[i];\n\t if (codePoint == ':' && !seenPasswordToken) {\n\t seenPasswordToken = true;\n\t continue;\n\t }\n\t var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n\t if (seenPasswordToken) url.password += encodedCodePoints;\n\t else url.username += encodedCodePoints;\n\t }\n\t buffer = '';\n\t } else if (\n\t char == EOF || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial(url))\n\t ) {\n\t if (seenAt && buffer == '') return INVALID_AUTHORITY;\n\t pointer -= arrayFrom(buffer).length + 1;\n\t buffer = '';\n\t state = HOST;\n\t } else buffer += char;\n\t break;\n\n\t case HOST:\n\t case HOSTNAME:\n\t if (stateOverride && url.scheme == 'file') {\n\t state = FILE_HOST;\n\t continue;\n\t } else if (char == ':' && !seenBracket) {\n\t if (buffer == '') return INVALID_HOST;\n\t failure = parseHost(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PORT;\n\t if (stateOverride == HOSTNAME) return;\n\t } else if (\n\t char == EOF || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial(url))\n\t ) {\n\t if (isSpecial(url) && buffer == '') return INVALID_HOST;\n\t if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n\t failure = parseHost(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PATH_START;\n\t if (stateOverride) return;\n\t continue;\n\t } else {\n\t if (char == '[') seenBracket = true;\n\t else if (char == ']') seenBracket = false;\n\t buffer += char;\n\t } break;\n\n\t case PORT:\n\t if (DIGIT.test(char)) {\n\t buffer += char;\n\t } else if (\n\t char == EOF || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial(url)) ||\n\t stateOverride\n\t ) {\n\t if (buffer != '') {\n\t var port = parseInt(buffer, 10);\n\t if (port > 0xFFFF) return INVALID_PORT;\n\t url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n\t buffer = '';\n\t }\n\t if (stateOverride) return;\n\t state = PATH_START;\n\t continue;\n\t } else return INVALID_PORT;\n\t break;\n\n\t case FILE:\n\t url.scheme = 'file';\n\t if (char == '/' || char == '\\\\') state = FILE_SLASH;\n\t else if (base && base.scheme == 'file') {\n\t if (char == EOF) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '?') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else {\n\t if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t shortenURLsPath(url);\n\t }\n\t state = PATH;\n\t continue;\n\t }\n\t } else {\n\t state = PATH;\n\t continue;\n\t } break;\n\n\t case FILE_SLASH:\n\t if (char == '/' || char == '\\\\') {\n\t state = FILE_HOST;\n\t break;\n\t }\n\t if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n\t if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n\t else url.host = base.host;\n\t }\n\t state = PATH;\n\t continue;\n\n\t case FILE_HOST:\n\t if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n\t if (!stateOverride && isWindowsDriveLetter(buffer)) {\n\t state = PATH;\n\t } else if (buffer == '') {\n\t url.host = '';\n\t if (stateOverride) return;\n\t state = PATH_START;\n\t } else {\n\t failure = parseHost(url, buffer);\n\t if (failure) return failure;\n\t if (url.host == 'localhost') url.host = '';\n\t if (stateOverride) return;\n\t buffer = '';\n\t state = PATH_START;\n\t } continue;\n\t } else buffer += char;\n\t break;\n\n\t case PATH_START:\n\t if (isSpecial(url)) {\n\t state = PATH;\n\t if (char != '/' && char != '\\\\') continue;\n\t } else if (!stateOverride && char == '?') {\n\t url.query = '';\n\t state = QUERY;\n\t } else if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else if (char != EOF) {\n\t state = PATH;\n\t if (char != '/') continue;\n\t } break;\n\n\t case PATH:\n\t if (\n\t char == EOF || char == '/' ||\n\t (char == '\\\\' && isSpecial(url)) ||\n\t (!stateOverride && (char == '?' || char == '#'))\n\t ) {\n\t if (isDoubleDot(buffer)) {\n\t shortenURLsPath(url);\n\t if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n\t url.path.push('');\n\t }\n\t } else if (isSingleDot(buffer)) {\n\t if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n\t url.path.push('');\n\t }\n\t } else {\n\t if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n\t if (url.host) url.host = '';\n\t buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n\t }\n\t url.path.push(buffer);\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n\t while (url.path.length > 1 && url.path[0] === '') {\n\t url.path.shift();\n\t }\n\t }\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t }\n\t } else {\n\t buffer += percentEncode(char, pathPercentEncodeSet);\n\t } break;\n\n\t case CANNOT_BE_A_BASE_URL_PATH:\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else if (char != EOF) {\n\t url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n\t } break;\n\n\t case QUERY:\n\t if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT;\n\t } else if (char != EOF) {\n\t if (char == \"'\" && isSpecial(url)) url.query += '%27';\n\t else if (char == '#') url.query += '%23';\n\t else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n\t } break;\n\n\t case FRAGMENT:\n\t if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n\t break;\n\t }\n\n\t pointer++;\n\t }\n\t};\n\n\t// `URL` constructor\n\t// https://url.spec.whatwg.org/#url-class\n\tvar URLConstructor = function URL(url /* , base */) {\n\t var that = anInstance(this, URLConstructor, 'URL');\n\t var base = arguments.length > 1 ? arguments[1] : undefined;\n\t var urlString = String(url);\n\t var state = setInternalState$5(that, { type: 'URL' });\n\t var baseState, failure;\n\t if (base !== undefined) {\n\t if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n\t else {\n\t failure = parseURL(baseState = {}, String(base));\n\t if (failure) throw TypeError(failure);\n\t }\n\t }\n\t failure = parseURL(state, urlString, null, baseState);\n\t if (failure) throw TypeError(failure);\n\t var searchParams = state.searchParams = new URLSearchParams$1();\n\t var searchParamsState = getInternalSearchParamsState(searchParams);\n\t searchParamsState.updateSearchParams(state.query);\n\t searchParamsState.updateURL = function () {\n\t state.query = String(searchParams) || null;\n\t };\n\t if (!descriptors) {\n\t that.href = serializeURL.call(that);\n\t that.origin = getOrigin.call(that);\n\t that.protocol = getProtocol.call(that);\n\t that.username = getUsername.call(that);\n\t that.password = getPassword.call(that);\n\t that.host = getHost.call(that);\n\t that.hostname = getHostname.call(that);\n\t that.port = getPort.call(that);\n\t that.pathname = getPathname.call(that);\n\t that.search = getSearch.call(that);\n\t that.searchParams = getSearchParams.call(that);\n\t that.hash = getHash.call(that);\n\t }\n\t};\n\n\tvar URLPrototype = URLConstructor.prototype;\n\n\tvar serializeURL = function () {\n\t var url = getInternalURLState(this);\n\t var scheme = url.scheme;\n\t var username = url.username;\n\t var password = url.password;\n\t var host = url.host;\n\t var port = url.port;\n\t var path = url.path;\n\t var query = url.query;\n\t var fragment = url.fragment;\n\t var output = scheme + ':';\n\t if (host !== null) {\n\t output += '//';\n\t if (includesCredentials(url)) {\n\t output += username + (password ? ':' + password : '') + '@';\n\t }\n\t output += serializeHost(host);\n\t if (port !== null) output += ':' + port;\n\t } else if (scheme == 'file') output += '//';\n\t output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t if (query !== null) output += '?' + query;\n\t if (fragment !== null) output += '#' + fragment;\n\t return output;\n\t};\n\n\tvar getOrigin = function () {\n\t var url = getInternalURLState(this);\n\t var scheme = url.scheme;\n\t var port = url.port;\n\t if (scheme == 'blob') try {\n\t return new URL(scheme.path[0]).origin;\n\t } catch (error) {\n\t return 'null';\n\t }\n\t if (scheme == 'file' || !isSpecial(url)) return 'null';\n\t return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n\t};\n\n\tvar getProtocol = function () {\n\t return getInternalURLState(this).scheme + ':';\n\t};\n\n\tvar getUsername = function () {\n\t return getInternalURLState(this).username;\n\t};\n\n\tvar getPassword = function () {\n\t return getInternalURLState(this).password;\n\t};\n\n\tvar getHost = function () {\n\t var url = getInternalURLState(this);\n\t var host = url.host;\n\t var port = url.port;\n\t return host === null ? ''\n\t : port === null ? serializeHost(host)\n\t : serializeHost(host) + ':' + port;\n\t};\n\n\tvar getHostname = function () {\n\t var host = getInternalURLState(this).host;\n\t return host === null ? '' : serializeHost(host);\n\t};\n\n\tvar getPort = function () {\n\t var port = getInternalURLState(this).port;\n\t return port === null ? '' : String(port);\n\t};\n\n\tvar getPathname = function () {\n\t var url = getInternalURLState(this);\n\t var path = url.path;\n\t return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t};\n\n\tvar getSearch = function () {\n\t var query = getInternalURLState(this).query;\n\t return query ? '?' + query : '';\n\t};\n\n\tvar getSearchParams = function () {\n\t return getInternalURLState(this).searchParams;\n\t};\n\n\tvar getHash = function () {\n\t var fragment = getInternalURLState(this).fragment;\n\t return fragment ? '#' + fragment : '';\n\t};\n\n\tvar accessorDescriptor = function (getter, setter) {\n\t return { get: getter, set: setter, configurable: true, enumerable: true };\n\t};\n\n\tif (descriptors) {\n\t objectDefineProperties(URLPrototype, {\n\t // `URL.prototype.href` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-href\n\t href: accessorDescriptor(serializeURL, function (href) {\n\t var url = getInternalURLState(this);\n\t var urlString = String(href);\n\t var failure = parseURL(url, urlString);\n\t if (failure) throw TypeError(failure);\n\t getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.origin` getter\n\t // https://url.spec.whatwg.org/#dom-url-origin\n\t origin: accessorDescriptor(getOrigin),\n\t // `URL.prototype.protocol` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-protocol\n\t protocol: accessorDescriptor(getProtocol, function (protocol) {\n\t var url = getInternalURLState(this);\n\t parseURL(url, String(protocol) + ':', SCHEME_START);\n\t }),\n\t // `URL.prototype.username` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-username\n\t username: accessorDescriptor(getUsername, function (username) {\n\t var url = getInternalURLState(this);\n\t var codePoints = arrayFrom(String(username));\n\t if (cannotHaveUsernamePasswordPort(url)) return;\n\t url.username = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n\t }\n\t }),\n\t // `URL.prototype.password` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-password\n\t password: accessorDescriptor(getPassword, function (password) {\n\t var url = getInternalURLState(this);\n\t var codePoints = arrayFrom(String(password));\n\t if (cannotHaveUsernamePasswordPort(url)) return;\n\t url.password = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n\t }\n\t }),\n\t // `URL.prototype.host` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-host\n\t host: accessorDescriptor(getHost, function (host) {\n\t var url = getInternalURLState(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL(url, String(host), HOST);\n\t }),\n\t // `URL.prototype.hostname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hostname\n\t hostname: accessorDescriptor(getHostname, function (hostname) {\n\t var url = getInternalURLState(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL(url, String(hostname), HOSTNAME);\n\t }),\n\t // `URL.prototype.port` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-port\n\t port: accessorDescriptor(getPort, function (port) {\n\t var url = getInternalURLState(this);\n\t if (cannotHaveUsernamePasswordPort(url)) return;\n\t port = String(port);\n\t if (port == '') url.port = null;\n\t else parseURL(url, port, PORT);\n\t }),\n\t // `URL.prototype.pathname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-pathname\n\t pathname: accessorDescriptor(getPathname, function (pathname) {\n\t var url = getInternalURLState(this);\n\t if (url.cannotBeABaseURL) return;\n\t url.path = [];\n\t parseURL(url, pathname + '', PATH_START);\n\t }),\n\t // `URL.prototype.search` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-search\n\t search: accessorDescriptor(getSearch, function (search) {\n\t var url = getInternalURLState(this);\n\t search = String(search);\n\t if (search == '') {\n\t url.query = null;\n\t } else {\n\t if ('?' == search.charAt(0)) search = search.slice(1);\n\t url.query = '';\n\t parseURL(url, search, QUERY);\n\t }\n\t getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.searchParams` getter\n\t // https://url.spec.whatwg.org/#dom-url-searchparams\n\t searchParams: accessorDescriptor(getSearchParams),\n\t // `URL.prototype.hash` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hash\n\t hash: accessorDescriptor(getHash, function (hash) {\n\t var url = getInternalURLState(this);\n\t hash = String(hash);\n\t if (hash == '') {\n\t url.fragment = null;\n\t return;\n\t }\n\t if ('#' == hash.charAt(0)) hash = hash.slice(1);\n\t url.fragment = '';\n\t parseURL(url, hash, FRAGMENT);\n\t })\n\t });\n\t}\n\n\t// `URL.prototype.toJSON` method\n\t// https://url.spec.whatwg.org/#dom-url-tojson\n\tredefine(URLPrototype, 'toJSON', function toJSON() {\n\t return serializeURL.call(this);\n\t}, { enumerable: true });\n\n\t// `URL.prototype.toString` method\n\t// https://url.spec.whatwg.org/#URL-stringification-behavior\n\tredefine(URLPrototype, 'toString', function toString() {\n\t return serializeURL.call(this);\n\t}, { enumerable: true });\n\n\tif (NativeURL) {\n\t var nativeCreateObjectURL = NativeURL.createObjectURL;\n\t var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n\t // `URL.createObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n\t return nativeCreateObjectURL.apply(NativeURL, arguments);\n\t });\n\t // `URL.revokeObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n\t return nativeRevokeObjectURL.apply(NativeURL, arguments);\n\t });\n\t}\n\n\tsetToStringTag(URLConstructor, 'URL');\n\n\t_export({ global: true, forced: !nativeUrl, sham: !descriptors }, {\n\t URL: URLConstructor\n\t});\n\n\tfunction _typeof(obj) {\n\t \"@babel/helpers - typeof\";\n\n\t if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n\t _typeof = function (obj) {\n\t return typeof obj;\n\t };\n\t } else {\n\t _typeof = function (obj) {\n\t return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t };\n\t }\n\n\t return _typeof(obj);\n\t}\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t}\n\n\tfunction _defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t}\n\n\tfunction _createClass(Constructor, protoProps, staticProps) {\n\t if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) _defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t}\n\n\tfunction ownKeys$1(object, enumerableOnly) {\n\t var keys = Object.keys(object);\n\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(object);\n\t if (enumerableOnly) symbols = symbols.filter(function (sym) {\n\t return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n\t });\n\t keys.push.apply(keys, symbols);\n\t }\n\n\t return keys;\n\t}\n\n\tfunction _objectSpread2(target) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t var source = arguments[i] != null ? arguments[i] : {};\n\n\t if (i % 2) {\n\t ownKeys$1(Object(source), true).forEach(function (key) {\n\t _defineProperty(target, key, source[key]);\n\t });\n\t } else if (Object.getOwnPropertyDescriptors) {\n\t Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\t } else {\n\t ownKeys$1(Object(source)).forEach(function (key) {\n\t Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n\t });\n\t }\n\t }\n\n\t return target;\n\t}\n\n\tfunction _objectWithoutPropertiesLoose(source, excluded) {\n\t if (source == null) return {};\n\t var target = {};\n\t var sourceKeys = Object.keys(source);\n\t var key, i;\n\n\t for (i = 0; i < sourceKeys.length; i++) {\n\t key = sourceKeys[i];\n\t if (excluded.indexOf(key) >= 0) continue;\n\t target[key] = source[key];\n\t }\n\n\t return target;\n\t}\n\n\tfunction _objectWithoutProperties(source, excluded) {\n\t if (source == null) return {};\n\n\t var target = _objectWithoutPropertiesLoose(source, excluded);\n\n\t var key, i;\n\n\t if (Object.getOwnPropertySymbols) {\n\t var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n\t for (i = 0; i < sourceSymbolKeys.length; i++) {\n\t key = sourceSymbolKeys[i];\n\t if (excluded.indexOf(key) >= 0) continue;\n\t if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n\t target[key] = source[key];\n\t }\n\t }\n\n\t return target;\n\t}\n\n\tfunction _slicedToArray(arr, i) {\n\t return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n\t}\n\n\tfunction _toConsumableArray(arr) {\n\t return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n\t}\n\n\tfunction _arrayWithoutHoles(arr) {\n\t if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n\t}\n\n\tfunction _arrayWithHoles(arr) {\n\t if (Array.isArray(arr)) return arr;\n\t}\n\n\tfunction _iterableToArray(iter) {\n\t if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n\t}\n\n\tfunction _iterableToArrayLimit(arr, i) {\n\t if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n\t var _arr = [];\n\t var _n = true;\n\t var _d = false;\n\t var _e = undefined;\n\n\t try {\n\t for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t _arr.push(_s.value);\n\n\t if (i && _arr.length === i) break;\n\t }\n\t } catch (err) {\n\t _d = true;\n\t _e = err;\n\t } finally {\n\t try {\n\t if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n\t } finally {\n\t if (_d) throw _e;\n\t }\n\t }\n\n\t return _arr;\n\t}\n\n\tfunction _unsupportedIterableToArray(o, minLen) {\n\t if (!o) return;\n\t if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\t var n = Object.prototype.toString.call(o).slice(8, -1);\n\t if (n === \"Object\" && o.constructor) n = o.constructor.name;\n\t if (n === \"Map\" || n === \"Set\") return Array.from(n);\n\t if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n\t}\n\n\tfunction _arrayLikeToArray(arr, len) {\n\t if (len == null || len > arr.length) len = arr.length;\n\n\t for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n\t return arr2;\n\t}\n\n\tfunction _nonIterableSpread() {\n\t throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t}\n\n\tfunction _nonIterableRest() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t}\n\n\t(function (global) {\n\t /**\r\n\t * Polyfill URLSearchParams\r\n\t *\r\n\t * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n\t */\n\t var checkIfIteratorIsSupported = function checkIfIteratorIsSupported() {\n\t try {\n\t return !!Symbol.iterator;\n\t } catch (error) {\n\t return false;\n\t }\n\t };\n\n\t var iteratorSupported = checkIfIteratorIsSupported();\n\n\t var createIterator = function createIterator(items) {\n\t var iterator = {\n\t next: function next() {\n\t var value = items.shift();\n\t return {\n\t done: value === void 0,\n\t value: value\n\t };\n\t }\n\t };\n\n\t if (iteratorSupported) {\n\t iterator[Symbol.iterator] = function () {\n\t return iterator;\n\t };\n\t }\n\n\t return iterator;\n\t };\n\t /**\r\n\t * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n\t * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n\t */\n\n\n\t var serializeParam = function serializeParam(value) {\n\t return encodeURIComponent(value).replace(/%20/g, '+');\n\t };\n\n\t var deserializeParam = function deserializeParam(value) {\n\t return decodeURIComponent(String(value).replace(/\\+/g, ' '));\n\t };\n\n\t var polyfillURLSearchParams = function polyfillURLSearchParams() {\n\t var URLSearchParams = function URLSearchParams(searchString) {\n\t Object.defineProperty(this, '_entries', {\n\t writable: true,\n\t value: {}\n\t });\n\n\t var typeofSearchString = _typeof(searchString);\n\n\t if (typeofSearchString === 'undefined') ; else if (typeofSearchString === 'string') {\n\t if (searchString !== '') {\n\t this._fromString(searchString);\n\t }\n\t } else if (searchString instanceof URLSearchParams) {\n\t var _this = this;\n\n\t searchString.forEach(function (value, name) {\n\t _this.append(name, value);\n\t });\n\t } else if (searchString !== null && typeofSearchString === 'object') {\n\t if (Object.prototype.toString.call(searchString) === '[object Array]') {\n\t for (var i = 0; i < searchString.length; i++) {\n\t var entry = searchString[i];\n\n\t if (Object.prototype.toString.call(entry) === '[object Array]' || entry.length !== 2) {\n\t this.append(entry[0], entry[1]);\n\t } else {\n\t throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\n\t }\n\t }\n\t } else {\n\t for (var key in searchString) {\n\t if (searchString.hasOwnProperty(key)) {\n\t this.append(key, searchString[key]);\n\t }\n\t }\n\t }\n\t } else {\n\t throw new TypeError('Unsupported input\\'s type for URLSearchParams');\n\t }\n\t };\n\n\t var proto = URLSearchParams.prototype;\n\n\t proto.append = function (name, value) {\n\t if (name in this._entries) {\n\t this._entries[name].push(String(value));\n\t } else {\n\t this._entries[name] = [String(value)];\n\t }\n\t };\n\n\t proto.delete = function (name) {\n\t delete this._entries[name];\n\t };\n\n\t proto.get = function (name) {\n\t return name in this._entries ? this._entries[name][0] : null;\n\t };\n\n\t proto.getAll = function (name) {\n\t return name in this._entries ? this._entries[name].slice(0) : [];\n\t };\n\n\t proto.has = function (name) {\n\t return name in this._entries;\n\t };\n\n\t proto.set = function (name, value) {\n\t this._entries[name] = [String(value)];\n\t };\n\n\t proto.forEach = function (callback, thisArg) {\n\t var entries;\n\n\t for (var name in this._entries) {\n\t if (this._entries.hasOwnProperty(name)) {\n\t entries = this._entries[name];\n\n\t for (var i = 0; i < entries.length; i++) {\n\t callback.call(thisArg, entries[i], name, this);\n\t }\n\t }\n\t }\n\t };\n\n\t proto.keys = function () {\n\t var items = [];\n\t this.forEach(function (value, name) {\n\t items.push(name);\n\t });\n\t return createIterator(items);\n\t };\n\n\t proto.values = function () {\n\t var items = [];\n\t this.forEach(function (value) {\n\t items.push(value);\n\t });\n\t return createIterator(items);\n\t };\n\n\t proto.entries = function () {\n\t var items = [];\n\t this.forEach(function (value, name) {\n\t items.push([name, value]);\n\t });\n\t return createIterator(items);\n\t };\n\n\t if (iteratorSupported) {\n\t proto[Symbol.iterator] = proto.entries;\n\t }\n\n\t proto.toString = function () {\n\t var searchArray = [];\n\t this.forEach(function (value, name) {\n\t searchArray.push(serializeParam(name) + '=' + serializeParam(value));\n\t });\n\t return searchArray.join('&');\n\t };\n\n\t global.URLSearchParams = URLSearchParams;\n\t };\n\n\t var checkIfURLSearchParamsSupported = function checkIfURLSearchParamsSupported() {\n\t try {\n\t var URLSearchParams = global.URLSearchParams;\n\t return new URLSearchParams('?a=1').toString() === 'a=1' && typeof URLSearchParams.prototype.set === 'function';\n\t } catch (e) {\n\t return false;\n\t }\n\t };\n\n\t if (!checkIfURLSearchParamsSupported()) {\n\t polyfillURLSearchParams();\n\t }\n\n\t var proto = global.URLSearchParams.prototype;\n\n\t if (typeof proto.sort !== 'function') {\n\t proto.sort = function () {\n\t var _this = this;\n\n\t var items = [];\n\t this.forEach(function (value, name) {\n\t items.push([name, value]);\n\n\t if (!_this._entries) {\n\t _this.delete(name);\n\t }\n\t });\n\t items.sort(function (a, b) {\n\t if (a[0] < b[0]) {\n\t return -1;\n\t } else if (a[0] > b[0]) {\n\t return +1;\n\t } else {\n\t return 0;\n\t }\n\t });\n\n\t if (_this._entries) {\n\t // force reset because IE keeps keys index\n\t _this._entries = {};\n\t }\n\n\t for (var i = 0; i < items.length; i++) {\n\t this.append(items[i][0], items[i][1]);\n\t }\n\t };\n\t }\n\n\t if (typeof proto._fromString !== 'function') {\n\t Object.defineProperty(proto, '_fromString', {\n\t enumerable: false,\n\t configurable: false,\n\t writable: false,\n\t value: function value(searchString) {\n\t if (this._entries) {\n\t this._entries = {};\n\t } else {\n\t var keys = [];\n\t this.forEach(function (value, name) {\n\t keys.push(name);\n\t });\n\n\t for (var i = 0; i < keys.length; i++) {\n\t this.delete(keys[i]);\n\t }\n\t }\n\n\t searchString = searchString.replace(/^\\?/, '');\n\t var attributes = searchString.split('&');\n\t var attribute;\n\n\t for (var i = 0; i < attributes.length; i++) {\n\t attribute = attributes[i].split('=');\n\t this.append(deserializeParam(attribute[0]), attribute.length > 1 ? deserializeParam(attribute[1]) : '');\n\t }\n\t }\n\t });\n\t } // HTMLAnchorElement\n\n\t})(typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : commonjsGlobal);\n\n\t(function (global) {\n\t /**\r\n\t * Polyfill URL\r\n\t *\r\n\t * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n\t */\n\t var checkIfURLIsSupported = function checkIfURLIsSupported() {\n\t try {\n\t var u = new global.URL('b', 'http://a');\n\t u.pathname = 'c d';\n\t return u.href === 'http://a/c%20d' && u.searchParams;\n\t } catch (e) {\n\t return false;\n\t }\n\t };\n\n\t var polyfillURL = function polyfillURL() {\n\t var _URL = global.URL;\n\n\t var URL = function URL(url, base) {\n\t if (typeof url !== 'string') url = String(url); // Only create another document if the base is different from current location.\n\n\t var doc = document,\n\t baseElement;\n\n\t if (base && (global.location === void 0 || base !== global.location.href)) {\n\t doc = document.implementation.createHTMLDocument('');\n\t baseElement = doc.createElement('base');\n\t baseElement.href = base;\n\t doc.head.appendChild(baseElement);\n\n\t try {\n\t if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\n\t } catch (err) {\n\t throw new Error('URL unable to set base ' + base + ' due to ' + err);\n\t }\n\t }\n\n\t var anchorElement = doc.createElement('a');\n\t anchorElement.href = url;\n\n\t if (baseElement) {\n\t doc.body.appendChild(anchorElement);\n\t anchorElement.href = anchorElement.href; // force href to refresh\n\t }\n\n\t if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\n\t throw new TypeError('Invalid URL');\n\t }\n\n\t Object.defineProperty(this, '_anchorElement', {\n\t value: anchorElement\n\t }); // create a linked searchParams which reflect its changes on URL\n\n\t var searchParams = new global.URLSearchParams(this.search);\n\t var enableSearchUpdate = true;\n\t var enableSearchParamsUpdate = true;\n\n\t var _this = this;\n\n\t ['append', 'delete', 'set'].forEach(function (methodName) {\n\t var method = searchParams[methodName];\n\n\t searchParams[methodName] = function () {\n\t method.apply(searchParams, arguments);\n\n\t if (enableSearchUpdate) {\n\t enableSearchParamsUpdate = false;\n\t _this.search = searchParams.toString();\n\t enableSearchParamsUpdate = true;\n\t }\n\t };\n\t });\n\t Object.defineProperty(this, 'searchParams', {\n\t value: searchParams,\n\t enumerable: true\n\t });\n\t var search = void 0;\n\t Object.defineProperty(this, '_updateSearchParams', {\n\t enumerable: false,\n\t configurable: false,\n\t writable: false,\n\t value: function value() {\n\t if (this.search !== search) {\n\t search = this.search;\n\n\t if (enableSearchParamsUpdate) {\n\t enableSearchUpdate = false;\n\n\t this.searchParams._fromString(this.search);\n\n\t enableSearchUpdate = true;\n\t }\n\t }\n\t }\n\t });\n\t };\n\n\t var proto = URL.prototype;\n\n\t var linkURLWithAnchorAttribute = function linkURLWithAnchorAttribute(attributeName) {\n\t Object.defineProperty(proto, attributeName, {\n\t get: function get() {\n\t return this._anchorElement[attributeName];\n\t },\n\t set: function set(value) {\n\t this._anchorElement[attributeName] = value;\n\t },\n\t enumerable: true\n\t });\n\t };\n\n\t ['hash', 'host', 'hostname', 'port', 'protocol'].forEach(function (attributeName) {\n\t linkURLWithAnchorAttribute(attributeName);\n\t });\n\t Object.defineProperty(proto, 'search', {\n\t get: function get() {\n\t return this._anchorElement['search'];\n\t },\n\t set: function set(value) {\n\t this._anchorElement['search'] = value;\n\n\t this._updateSearchParams();\n\t },\n\t enumerable: true\n\t });\n\t Object.defineProperties(proto, {\n\t 'toString': {\n\t get: function get() {\n\t var _this = this;\n\n\t return function () {\n\t return _this.href;\n\t };\n\t }\n\t },\n\t 'href': {\n\t get: function get() {\n\t return this._anchorElement.href.replace(/\\?$/, '');\n\t },\n\t set: function set(value) {\n\t this._anchorElement.href = value;\n\n\t this._updateSearchParams();\n\t },\n\t enumerable: true\n\t },\n\t 'pathname': {\n\t get: function get() {\n\t return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\n\t },\n\t set: function set(value) {\n\t this._anchorElement.pathname = value;\n\t },\n\t enumerable: true\n\t },\n\t 'origin': {\n\t get: function get() {\n\t // get expected port from protocol\n\t var expectedPort = {\n\t 'http:': 80,\n\t 'https:': 443,\n\t 'ftp:': 21\n\t }[this._anchorElement.protocol]; // add port to origin if, expected port is different than actual port\n\t // and it is not empty f.e http://foo:8080\n\t // 8080 != 80 && 8080 != ''\n\n\t var addPortToOrigin = this._anchorElement.port != expectedPort && this._anchorElement.port !== '';\n\t return this._anchorElement.protocol + '//' + this._anchorElement.hostname + (addPortToOrigin ? ':' + this._anchorElement.port : '');\n\t },\n\t enumerable: true\n\t },\n\t 'password': {\n\t // TODO\n\t get: function get() {\n\t return '';\n\t },\n\t set: function set(value) {},\n\t enumerable: true\n\t },\n\t 'username': {\n\t // TODO\n\t get: function get() {\n\t return '';\n\t },\n\t set: function set(value) {},\n\t enumerable: true\n\t }\n\t });\n\n\t URL.createObjectURL = function (blob) {\n\t return _URL.createObjectURL.apply(_URL, arguments);\n\t };\n\n\t URL.revokeObjectURL = function (url) {\n\t return _URL.revokeObjectURL.apply(_URL, arguments);\n\t };\n\n\t global.URL = URL;\n\t };\n\n\t if (!checkIfURLIsSupported()) {\n\t polyfillURL();\n\t }\n\n\t if (global.location !== void 0 && !('origin' in global.location)) {\n\t var getOrigin = function getOrigin() {\n\t return global.location.protocol + '//' + global.location.hostname + (global.location.port ? ':' + global.location.port : '');\n\t };\n\n\t try {\n\t Object.defineProperty(global.location, 'origin', {\n\t get: getOrigin,\n\t enumerable: true\n\t });\n\t } catch (e) {\n\t setInterval(function () {\n\t global.location.origin = getOrigin();\n\t }, 100);\n\t }\n\t }\n\t})(typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : commonjsGlobal);\n\n\t// `Symbol.asyncIterator` well-known symbol\n\t// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\n\tdefineWellKnownSymbol('asyncIterator');\n\n\tvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\tvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n\t// We can't use this feature detection in V8 since it causes\n\t// deoptimization and serious performance degradation\n\t// https://github.com/zloirock/core-js/issues/679\n\tvar IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () {\n\t var array = [];\n\t array[IS_CONCAT_SPREADABLE] = false;\n\t return array.concat()[0] !== array;\n\t});\n\n\tvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\n\tvar isConcatSpreadable = function (O) {\n\t if (!isObject(O)) return false;\n\t var spreadable = O[IS_CONCAT_SPREADABLE];\n\t return spreadable !== undefined ? !!spreadable : isArray(O);\n\t};\n\n\tvar FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n\t// `Array.prototype.concat` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n\t// with adding support of @@isConcatSpreadable and @@species\n\t_export({ target: 'Array', proto: true, forced: FORCED$1 }, {\n\t concat: function concat(arg) { // eslint-disable-line no-unused-vars\n\t var O = toObject(this);\n\t var A = arraySpeciesCreate(O, 0);\n\t var n = 0;\n\t var i, k, length, len, E;\n\t for (i = -1, length = arguments.length; i < length; i++) {\n\t E = i === -1 ? O : arguments[i];\n\t if (isConcatSpreadable(E)) {\n\t len = toLength(E.length);\n\t if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n\t for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n\t } else {\n\t if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n\t createProperty(A, n++, E);\n\t }\n\t }\n\t A.length = n;\n\t return A;\n\t }\n\t});\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\t_export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, {\n\t assign: objectAssign\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\n\n\n\tvar FAILS_ON_PRIMITIVES$1 = fails(function () { nativeGetOwnPropertyDescriptor$2(1); });\n\tvar FORCED$2 = !descriptors || FAILS_ON_PRIMITIVES$1;\n\n\t// `Object.getOwnPropertyDescriptor` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\t_export({ target: 'Object', stat: true, forced: FORCED$2, sham: !descriptors }, {\n\t getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n\t return nativeGetOwnPropertyDescriptor$2(toIndexedObject(it), key);\n\t }\n\t});\n\n\tvar nativePromiseConstructor = global_1.Promise;\n\n\tvar iterate_1 = createCommonjsModule(function (module) {\n\tvar Result = function (stopped, result) {\n\t this.stopped = stopped;\n\t this.result = result;\n\t};\n\n\tvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n\t var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1);\n\t var iterator, iterFn, index, length, result, next, step;\n\n\t if (IS_ITERATOR) {\n\t iterator = iterable;\n\t } else {\n\t iterFn = getIteratorMethod(iterable);\n\t if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n\t // optimisation for array iterators\n\t if (isArrayIteratorMethod(iterFn)) {\n\t for (index = 0, length = toLength(iterable.length); length > index; index++) {\n\t result = AS_ENTRIES\n\t ? boundFunction(anObject(step = iterable[index])[0], step[1])\n\t : boundFunction(iterable[index]);\n\t if (result && result instanceof Result) return result;\n\t } return new Result(false);\n\t }\n\t iterator = iterFn.call(iterable);\n\t }\n\n\t next = iterator.next;\n\t while (!(step = next.call(iterator)).done) {\n\t result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n\t if (typeof result == 'object' && result && result instanceof Result) return result;\n\t } return new Result(false);\n\t};\n\n\titerate.stop = function (result) {\n\t return new Result(true, result);\n\t};\n\t});\n\n\tvar engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent);\n\n\tvar location = global_1.location;\n\tvar set$1 = global_1.setImmediate;\n\tvar clear = global_1.clearImmediate;\n\tvar process$2 = global_1.process;\n\tvar MessageChannel = global_1.MessageChannel;\n\tvar Dispatch = global_1.Dispatch;\n\tvar counter = 0;\n\tvar queue = {};\n\tvar ONREADYSTATECHANGE = 'onreadystatechange';\n\tvar defer, channel, port;\n\n\tvar run = function (id) {\n\t // eslint-disable-next-line no-prototype-builtins\n\t if (queue.hasOwnProperty(id)) {\n\t var fn = queue[id];\n\t delete queue[id];\n\t fn();\n\t }\n\t};\n\n\tvar runner = function (id) {\n\t return function () {\n\t run(id);\n\t };\n\t};\n\n\tvar listener = function (event) {\n\t run(event.data);\n\t};\n\n\tvar post = function (id) {\n\t // old engines have not location.origin\n\t global_1.postMessage(id + '', location.protocol + '//' + location.host);\n\t};\n\n\t// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\n\tif (!set$1 || !clear) {\n\t set$1 = function setImmediate(fn) {\n\t var args = [];\n\t var i = 1;\n\t while (arguments.length > i) args.push(arguments[i++]);\n\t queue[++counter] = function () {\n\t // eslint-disable-next-line no-new-func\n\t (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n\t };\n\t defer(counter);\n\t return counter;\n\t };\n\t clear = function clearImmediate(id) {\n\t delete queue[id];\n\t };\n\t // Node.js 0.8-\n\t if (classofRaw(process$2) == 'process') {\n\t defer = function (id) {\n\t process$2.nextTick(runner(id));\n\t };\n\t // Sphere (JS game engine) Dispatch API\n\t } else if (Dispatch && Dispatch.now) {\n\t defer = function (id) {\n\t Dispatch.now(runner(id));\n\t };\n\t // Browsers with MessageChannel, includes WebWorkers\n\t // except iOS - https://github.com/zloirock/core-js/issues/624\n\t } else if (MessageChannel && !engineIsIos) {\n\t channel = new MessageChannel();\n\t port = channel.port2;\n\t channel.port1.onmessage = listener;\n\t defer = functionBindContext(port.postMessage, port, 1);\n\t // Browsers with postMessage, skip WebWorkers\n\t // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n\t } else if (\n\t global_1.addEventListener &&\n\t typeof postMessage == 'function' &&\n\t !global_1.importScripts &&\n\t !fails(post) &&\n\t location.protocol !== 'file:'\n\t ) {\n\t defer = post;\n\t global_1.addEventListener('message', listener, false);\n\t // IE8-\n\t } else if (ONREADYSTATECHANGE in documentCreateElement('script')) {\n\t defer = function (id) {\n\t html.appendChild(documentCreateElement('script'))[ONREADYSTATECHANGE] = function () {\n\t html.removeChild(this);\n\t run(id);\n\t };\n\t };\n\t // Rest old browsers\n\t } else {\n\t defer = function (id) {\n\t setTimeout(runner(id), 0);\n\t };\n\t }\n\t}\n\n\tvar task = {\n\t set: set$1,\n\t clear: clear\n\t};\n\n\tvar getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\n\n\tvar macrotask = task.set;\n\n\n\tvar MutationObserver$1 = global_1.MutationObserver || global_1.WebKitMutationObserver;\n\tvar process$3 = global_1.process;\n\tvar Promise$1 = global_1.Promise;\n\tvar IS_NODE = classofRaw(process$3) == 'process';\n\t// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\n\tvar queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(global_1, 'queueMicrotask');\n\tvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\n\tvar flush, head, last, notify, toggle, node, promise, then;\n\n\t// modern engines have queueMicrotask method\n\tif (!queueMicrotask) {\n\t flush = function () {\n\t var parent, fn;\n\t if (IS_NODE && (parent = process$3.domain)) parent.exit();\n\t while (head) {\n\t fn = head.fn;\n\t head = head.next;\n\t try {\n\t fn();\n\t } catch (error) {\n\t if (head) notify();\n\t else last = undefined;\n\t throw error;\n\t }\n\t } last = undefined;\n\t if (parent) parent.enter();\n\t };\n\n\t // Node.js\n\t if (IS_NODE) {\n\t notify = function () {\n\t process$3.nextTick(flush);\n\t };\n\t // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n\t } else if (MutationObserver$1 && !engineIsIos) {\n\t toggle = true;\n\t node = document.createTextNode('');\n\t new MutationObserver$1(flush).observe(node, { characterData: true });\n\t notify = function () {\n\t node.data = toggle = !toggle;\n\t };\n\t // environments with maybe non-completely correct, but existent Promise\n\t } else if (Promise$1 && Promise$1.resolve) {\n\t // Promise.resolve without an argument throws an error in LG WebOS 2\n\t promise = Promise$1.resolve(undefined);\n\t then = promise.then;\n\t notify = function () {\n\t then.call(promise, flush);\n\t };\n\t // for other environments - macrotask based on:\n\t // - setImmediate\n\t // - MessageChannel\n\t // - window.postMessag\n\t // - onreadystatechange\n\t // - setTimeout\n\t } else {\n\t notify = function () {\n\t // strange IE + webpack dev server bug - use .call(global)\n\t macrotask.call(global_1, flush);\n\t };\n\t }\n\t}\n\n\tvar microtask = queueMicrotask || function (fn) {\n\t var task = { fn: fn, next: undefined };\n\t if (last) last.next = task;\n\t if (!head) {\n\t head = task;\n\t notify();\n\t } last = task;\n\t};\n\n\tvar PromiseCapability = function (C) {\n\t var resolve, reject;\n\t this.promise = new C(function ($$resolve, $$reject) {\n\t if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n\t resolve = $$resolve;\n\t reject = $$reject;\n\t });\n\t this.resolve = aFunction$1(resolve);\n\t this.reject = aFunction$1(reject);\n\t};\n\n\t// 25.4.1.5 NewPromiseCapability(C)\n\tvar f$7 = function (C) {\n\t return new PromiseCapability(C);\n\t};\n\n\tvar newPromiseCapability = {\n\t\tf: f$7\n\t};\n\n\tvar promiseResolve = function (C, x) {\n\t anObject(C);\n\t if (isObject(x) && x.constructor === C) return x;\n\t var promiseCapability = newPromiseCapability.f(C);\n\t var resolve = promiseCapability.resolve;\n\t resolve(x);\n\t return promiseCapability.promise;\n\t};\n\n\tvar hostReportErrors = function (a, b) {\n\t var console = global_1.console;\n\t if (console && console.error) {\n\t arguments.length === 1 ? console.error(a) : console.error(a, b);\n\t }\n\t};\n\n\tvar perform = function (exec) {\n\t try {\n\t return { error: false, value: exec() };\n\t } catch (error) {\n\t return { error: true, value: error };\n\t }\n\t};\n\n\tvar task$1 = task.set;\n\n\n\n\n\n\n\n\n\n\n\tvar SPECIES$6 = wellKnownSymbol('species');\n\tvar PROMISE = 'Promise';\n\tvar getInternalState$3 = internalState.get;\n\tvar setInternalState$6 = internalState.set;\n\tvar getInternalPromiseState = internalState.getterFor(PROMISE);\n\tvar PromiseConstructor = nativePromiseConstructor;\n\tvar TypeError$1 = global_1.TypeError;\n\tvar document$2 = global_1.document;\n\tvar process$4 = global_1.process;\n\tvar $fetch$1 = getBuiltIn('fetch');\n\tvar newPromiseCapability$1 = newPromiseCapability.f;\n\tvar newGenericPromiseCapability = newPromiseCapability$1;\n\tvar IS_NODE$1 = classofRaw(process$4) == 'process';\n\tvar DISPATCH_EVENT = !!(document$2 && document$2.createEvent && global_1.dispatchEvent);\n\tvar UNHANDLED_REJECTION = 'unhandledrejection';\n\tvar REJECTION_HANDLED = 'rejectionhandled';\n\tvar PENDING = 0;\n\tvar FULFILLED = 1;\n\tvar REJECTED = 2;\n\tvar HANDLED = 1;\n\tvar UNHANDLED = 2;\n\tvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n\tvar FORCED$3 = isForced_1(PROMISE, function () {\n\t var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n\t if (!GLOBAL_CORE_JS_PROMISE) {\n\t // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n\t // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n\t // We can't detect it synchronously, so just check versions\n\t if (engineV8Version === 66) return true;\n\t // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n\t if (!IS_NODE$1 && typeof PromiseRejectionEvent != 'function') return true;\n\t }\n\t // We can't use @@species feature detection in V8 since it causes\n\t // deoptimization and performance degradation\n\t // https://github.com/zloirock/core-js/issues/679\n\t if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) return false;\n\t // Detect correctness of subclassing with @@species support\n\t var promise = PromiseConstructor.resolve(1);\n\t var FakePromise = function (exec) {\n\t exec(function () { /* empty */ }, function () { /* empty */ });\n\t };\n\t var constructor = promise.constructor = {};\n\t constructor[SPECIES$6] = FakePromise;\n\t return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n\t});\n\n\tvar INCORRECT_ITERATION$1 = FORCED$3 || !checkCorrectnessOfIteration(function (iterable) {\n\t PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n\t});\n\n\t// helpers\n\tvar isThenable = function (it) {\n\t var then;\n\t return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n\t};\n\n\tvar notify$1 = function (promise, state, isReject) {\n\t if (state.notified) return;\n\t state.notified = true;\n\t var chain = state.reactions;\n\t microtask(function () {\n\t var value = state.value;\n\t var ok = state.state == FULFILLED;\n\t var index = 0;\n\t // variable length - can't use forEach\n\t while (chain.length > index) {\n\t var reaction = chain[index++];\n\t var handler = ok ? reaction.ok : reaction.fail;\n\t var resolve = reaction.resolve;\n\t var reject = reaction.reject;\n\t var domain = reaction.domain;\n\t var result, then, exited;\n\t try {\n\t if (handler) {\n\t if (!ok) {\n\t if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n\t state.rejection = HANDLED;\n\t }\n\t if (handler === true) result = value;\n\t else {\n\t if (domain) domain.enter();\n\t result = handler(value); // can throw\n\t if (domain) {\n\t domain.exit();\n\t exited = true;\n\t }\n\t }\n\t if (result === reaction.promise) {\n\t reject(TypeError$1('Promise-chain cycle'));\n\t } else if (then = isThenable(result)) {\n\t then.call(result, resolve, reject);\n\t } else resolve(result);\n\t } else reject(value);\n\t } catch (error) {\n\t if (domain && !exited) domain.exit();\n\t reject(error);\n\t }\n\t }\n\t state.reactions = [];\n\t state.notified = false;\n\t if (isReject && !state.rejection) onUnhandled(promise, state);\n\t });\n\t};\n\n\tvar dispatchEvent = function (name, promise, reason) {\n\t var event, handler;\n\t if (DISPATCH_EVENT) {\n\t event = document$2.createEvent('Event');\n\t event.promise = promise;\n\t event.reason = reason;\n\t event.initEvent(name, false, true);\n\t global_1.dispatchEvent(event);\n\t } else event = { promise: promise, reason: reason };\n\t if (handler = global_1['on' + name]) handler(event);\n\t else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n\t};\n\n\tvar onUnhandled = function (promise, state) {\n\t task$1.call(global_1, function () {\n\t var value = state.value;\n\t var IS_UNHANDLED = isUnhandled(state);\n\t var result;\n\t if (IS_UNHANDLED) {\n\t result = perform(function () {\n\t if (IS_NODE$1) {\n\t process$4.emit('unhandledRejection', value, promise);\n\t } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n\t });\n\t // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n\t state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED;\n\t if (result.error) throw result.value;\n\t }\n\t });\n\t};\n\n\tvar isUnhandled = function (state) {\n\t return state.rejection !== HANDLED && !state.parent;\n\t};\n\n\tvar onHandleUnhandled = function (promise, state) {\n\t task$1.call(global_1, function () {\n\t if (IS_NODE$1) {\n\t process$4.emit('rejectionHandled', promise);\n\t } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n\t });\n\t};\n\n\tvar bind = function (fn, promise, state, unwrap) {\n\t return function (value) {\n\t fn(promise, state, value, unwrap);\n\t };\n\t};\n\n\tvar internalReject = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t state.value = value;\n\t state.state = REJECTED;\n\t notify$1(promise, state, true);\n\t};\n\n\tvar internalResolve = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t try {\n\t if (promise === value) throw TypeError$1(\"Promise can't be resolved itself\");\n\t var then = isThenable(value);\n\t if (then) {\n\t microtask(function () {\n\t var wrapper = { done: false };\n\t try {\n\t then.call(value,\n\t bind(internalResolve, promise, wrapper, state),\n\t bind(internalReject, promise, wrapper, state)\n\t );\n\t } catch (error) {\n\t internalReject(promise, wrapper, error, state);\n\t }\n\t });\n\t } else {\n\t state.value = value;\n\t state.state = FULFILLED;\n\t notify$1(promise, state, false);\n\t }\n\t } catch (error) {\n\t internalReject(promise, { done: false }, error, state);\n\t }\n\t};\n\n\t// constructor polyfill\n\tif (FORCED$3) {\n\t // 25.4.3.1 Promise(executor)\n\t PromiseConstructor = function Promise(executor) {\n\t anInstance(this, PromiseConstructor, PROMISE);\n\t aFunction$1(executor);\n\t Internal.call(this);\n\t var state = getInternalState$3(this);\n\t try {\n\t executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n\t } catch (error) {\n\t internalReject(this, state, error);\n\t }\n\t };\n\t // eslint-disable-next-line no-unused-vars\n\t Internal = function Promise(executor) {\n\t setInternalState$6(this, {\n\t type: PROMISE,\n\t done: false,\n\t notified: false,\n\t parent: false,\n\t reactions: [],\n\t rejection: false,\n\t state: PENDING,\n\t value: undefined\n\t });\n\t };\n\t Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n\t // `Promise.prototype.then` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n\t then: function then(onFulfilled, onRejected) {\n\t var state = getInternalPromiseState(this);\n\t var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor));\n\t reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n\t reaction.fail = typeof onRejected == 'function' && onRejected;\n\t reaction.domain = IS_NODE$1 ? process$4.domain : undefined;\n\t state.parent = true;\n\t state.reactions.push(reaction);\n\t if (state.state != PENDING) notify$1(this, state, false);\n\t return reaction.promise;\n\t },\n\t // `Promise.prototype.catch` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n\t 'catch': function (onRejected) {\n\t return this.then(undefined, onRejected);\n\t }\n\t });\n\t OwnPromiseCapability = function () {\n\t var promise = new Internal();\n\t var state = getInternalState$3(promise);\n\t this.promise = promise;\n\t this.resolve = bind(internalResolve, promise, state);\n\t this.reject = bind(internalReject, promise, state);\n\t };\n\t newPromiseCapability.f = newPromiseCapability$1 = function (C) {\n\t return C === PromiseConstructor || C === PromiseWrapper\n\t ? new OwnPromiseCapability(C)\n\t : newGenericPromiseCapability(C);\n\t };\n\n\t if ( typeof nativePromiseConstructor == 'function') {\n\t nativeThen = nativePromiseConstructor.prototype.then;\n\n\t // wrap native Promise#then for native async functions\n\t redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) {\n\t var that = this;\n\t return new PromiseConstructor(function (resolve, reject) {\n\t nativeThen.call(that, resolve, reject);\n\t }).then(onFulfilled, onRejected);\n\t // https://github.com/zloirock/core-js/issues/640\n\t }, { unsafe: true });\n\n\t // wrap fetch result\n\t if (typeof $fetch$1 == 'function') _export({ global: true, enumerable: true, forced: true }, {\n\t // eslint-disable-next-line no-unused-vars\n\t fetch: function fetch(input /* , init */) {\n\t return promiseResolve(PromiseConstructor, $fetch$1.apply(global_1, arguments));\n\t }\n\t });\n\t }\n\t}\n\n\t_export({ global: true, wrap: true, forced: FORCED$3 }, {\n\t Promise: PromiseConstructor\n\t});\n\n\tsetToStringTag(PromiseConstructor, PROMISE, false);\n\tsetSpecies(PROMISE);\n\n\tPromiseWrapper = getBuiltIn(PROMISE);\n\n\t// statics\n\t_export({ target: PROMISE, stat: true, forced: FORCED$3 }, {\n\t // `Promise.reject` method\n\t // https://tc39.github.io/ecma262/#sec-promise.reject\n\t reject: function reject(r) {\n\t var capability = newPromiseCapability$1(this);\n\t capability.reject.call(undefined, r);\n\t return capability.promise;\n\t }\n\t});\n\n\t_export({ target: PROMISE, stat: true, forced: FORCED$3 }, {\n\t // `Promise.resolve` method\n\t // https://tc39.github.io/ecma262/#sec-promise.resolve\n\t resolve: function resolve(x) {\n\t return promiseResolve( this, x);\n\t }\n\t});\n\n\t_export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION$1 }, {\n\t // `Promise.all` method\n\t // https://tc39.github.io/ecma262/#sec-promise.all\n\t all: function all(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$1(C);\n\t var resolve = capability.resolve;\n\t var reject = capability.reject;\n\t var result = perform(function () {\n\t var $promiseResolve = aFunction$1(C.resolve);\n\t var values = [];\n\t var counter = 0;\n\t var remaining = 1;\n\t iterate_1(iterable, function (promise) {\n\t var index = counter++;\n\t var alreadyCalled = false;\n\t values.push(undefined);\n\t remaining++;\n\t $promiseResolve.call(C, promise).then(function (value) {\n\t if (alreadyCalled) return;\n\t alreadyCalled = true;\n\t values[index] = value;\n\t --remaining || resolve(values);\n\t }, reject);\n\t });\n\t --remaining || resolve(values);\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t },\n\t // `Promise.race` method\n\t // https://tc39.github.io/ecma262/#sec-promise.race\n\t race: function race(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$1(C);\n\t var reject = capability.reject;\n\t var result = perform(function () {\n\t var $promiseResolve = aFunction$1(C.resolve);\n\t iterate_1(iterable, function (promise) {\n\t $promiseResolve.call(C, promise).then(capability.resolve, reject);\n\t });\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t }\n\t});\n\n\t/*! *****************************************************************************\r\n\tCopyright (c) Microsoft Corporation. All rights reserved.\r\n\tLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n\tthis file except in compliance with the License. You may obtain a copy of the\r\n\tLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n\tTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n\tKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n\tWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n\tMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n\tSee the Apache Version 2.0 License for specific language governing permissions\r\n\tand limitations under the License.\r\n\t***************************************************************************** */\n\n\t/* global Reflect, Promise */\n\tvar _extendStatics = function extendStatics(d, b) {\n\t _extendStatics = Object.setPrototypeOf || {\n\t __proto__: []\n\t } instanceof Array && function (d, b) {\n\t d.__proto__ = b;\n\t } || function (d, b) {\n\t for (var p in b) {\n\t if (b.hasOwnProperty(p)) d[p] = b[p];\n\t }\n\t };\n\n\t return _extendStatics(d, b);\n\t};\n\n\tfunction __extends(d, b) {\n\t _extendStatics(d, b);\n\n\t function __() {\n\t this.constructor = d;\n\t }\n\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t}\n\n\tvar _assign = function __assign() {\n\t _assign = Object.assign || function __assign(t) {\n\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t s = arguments[i];\n\n\t for (var p in s) {\n\t if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n\t }\n\t }\n\n\t return t;\n\t };\n\n\t return _assign.apply(this, arguments);\n\t};\n\tfunction __values(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator,\n\t m = s && o[s],\n\t i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function next() {\n\t if (o && i >= o.length) o = void 0;\n\t return {\n\t value: o && o[i++],\n\t done: !o\n\t };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t}\n\tfunction __read(o, n) {\n\t var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n\t if (!m) return o;\n\t var i = m.call(o),\n\t r,\n\t ar = [],\n\t e;\n\n\t try {\n\t while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n\t ar.push(r.value);\n\t }\n\t } catch (error) {\n\t e = {\n\t error: error\n\t };\n\t } finally {\n\t try {\n\t if (r && !r.done && (m = i[\"return\"])) m.call(i);\n\t } finally {\n\t if (e) throw e.error;\n\t }\n\t }\n\n\t return ar;\n\t}\n\tfunction __spread() {\n\t for (var ar = [], i = 0; i < arguments.length; i++) {\n\t ar = ar.concat(__read(arguments[i]));\n\t }\n\n\t return ar;\n\t}\n\n\t/** JSDoc */\n\tvar Severity;\n\n\t(function (Severity) {\n\t /** JSDoc */\n\t Severity[\"Fatal\"] = \"fatal\";\n\t /** JSDoc */\n\n\t Severity[\"Error\"] = \"error\";\n\t /** JSDoc */\n\n\t Severity[\"Warning\"] = \"warning\";\n\t /** JSDoc */\n\n\t Severity[\"Log\"] = \"log\";\n\t /** JSDoc */\n\n\t Severity[\"Info\"] = \"info\";\n\t /** JSDoc */\n\n\t Severity[\"Debug\"] = \"debug\";\n\t /** JSDoc */\n\n\t Severity[\"Critical\"] = \"critical\";\n\t})(Severity || (Severity = {})); // tslint:disable:completed-docs\n\t// tslint:disable:no-unnecessary-qualifier no-namespace\n\n\n\t(function (Severity) {\n\t /**\n\t * Converts a string-based level into a {@link Severity}.\n\t *\n\t * @param level string representation of Severity\n\t * @returns Severity\n\t */\n\t function fromString(level) {\n\t switch (level) {\n\t case 'debug':\n\t return Severity.Debug;\n\n\t case 'info':\n\t return Severity.Info;\n\n\t case 'warn':\n\t case 'warning':\n\t return Severity.Warning;\n\n\t case 'error':\n\t return Severity.Error;\n\n\t case 'fatal':\n\t return Severity.Fatal;\n\n\t case 'critical':\n\t return Severity.Critical;\n\n\t case 'log':\n\t default:\n\t return Severity.Log;\n\t }\n\t }\n\n\t Severity.fromString = fromString;\n\t})(Severity || (Severity = {}));\n\n\t/** The status of an event. */\n\tvar Status;\n\n\t(function (Status) {\n\t /** The status could not be determined. */\n\t Status[\"Unknown\"] = \"unknown\";\n\t /** The event was skipped due to configuration or callbacks. */\n\n\t Status[\"Skipped\"] = \"skipped\";\n\t /** The event was sent to Sentry successfully. */\n\n\t Status[\"Success\"] = \"success\";\n\t /** The client is currently rate limited and will try again later. */\n\n\t Status[\"RateLimit\"] = \"rate_limit\";\n\t /** The event could not be processed. */\n\n\t Status[\"Invalid\"] = \"invalid\";\n\t /** A server-side error ocurred during submission. */\n\n\t Status[\"Failed\"] = \"failed\";\n\t})(Status || (Status = {})); // tslint:disable:completed-docs\n\t// tslint:disable:no-unnecessary-qualifier no-namespace\n\n\n\t(function (Status) {\n\t /**\n\t * Converts a HTTP status code into a {@link Status}.\n\t *\n\t * @param code The HTTP response status code.\n\t * @returns The send status or {@link Status.Unknown}.\n\t */\n\t function fromHttpCode(code) {\n\t if (code >= 200 && code < 300) {\n\t return Status.Success;\n\t }\n\n\t if (code === 429) {\n\t return Status.RateLimit;\n\t }\n\n\t if (code >= 400 && code < 500) {\n\t return Status.Invalid;\n\t }\n\n\t if (code >= 500) {\n\t return Status.Failed;\n\t }\n\n\t return Status.Unknown;\n\t }\n\n\t Status.fromHttpCode = fromHttpCode;\n\t})(Status || (Status = {}));\n\n\tvar defineProperty$6 = objectDefineProperty.f;\n\n\tvar FunctionPrototype = Function.prototype;\n\tvar FunctionPrototypeToString = FunctionPrototype.toString;\n\tvar nameRE = /^\\s*function ([^ (]*)/;\n\tvar NAME = 'name';\n\n\t// Function instances `.name` property\n\t// https://tc39.github.io/ecma262/#sec-function-instances-name\n\tif (descriptors && !(NAME in FunctionPrototype)) {\n\t defineProperty$6(FunctionPrototype, NAME, {\n\t configurable: true,\n\t get: function () {\n\t try {\n\t return FunctionPrototypeToString.call(this).match(nameRE)[1];\n\t } catch (error) {\n\t return '';\n\t }\n\t }\n\t });\n\t}\n\n\tvar setPrototypeOf = Object.setPrototypeOf || ({\n\t __proto__: []\n\t} instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n\n\t/**\n\t * setPrototypeOf polyfill using __proto__\n\t */\n\n\tfunction setProtoOf(obj, proto) {\n\t // @ts-ignore\n\t obj.__proto__ = proto;\n\t return obj;\n\t}\n\t/**\n\t * setPrototypeOf polyfill using mixin\n\t */\n\n\n\tfunction mixinProperties(obj, proto) {\n\t for (var prop in proto) {\n\t if (!obj.hasOwnProperty(prop)) {\n\t // @ts-ignore\n\t obj[prop] = proto[prop];\n\t }\n\t }\n\n\t return obj;\n\t}\n\n\t/** An error emitted by Sentry SDKs and related utilities. */\n\n\tvar SentryError =\n\t/** @class */\n\tfunction (_super) {\n\t __extends(SentryError, _super);\n\n\t function SentryError(message) {\n\t var _newTarget = this.constructor;\n\n\t var _this = _super.call(this, message) || this;\n\n\t _this.message = message; // tslint:disable:no-unsafe-any\n\n\t _this.name = _newTarget.prototype.constructor.name;\n\t setPrototypeOf(_this, _newTarget.prototype);\n\t return _this;\n\t }\n\n\t return SentryError;\n\t}(Error);\n\n\t/**\n\t * Checks whether given value's type is one of a few Error or Error-like\n\t * {@link isError}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\tfunction isError(wat) {\n\t switch (Object.prototype.toString.call(wat)) {\n\t case '[object Error]':\n\t return true;\n\n\t case '[object Exception]':\n\t return true;\n\n\t case '[object DOMException]':\n\t return true;\n\n\t default:\n\t return isInstanceOf(wat, Error);\n\t }\n\t}\n\t/**\n\t * Checks whether given value's type is ErrorEvent\n\t * {@link isErrorEvent}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isErrorEvent(wat) {\n\t return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n\t}\n\t/**\n\t * Checks whether given value's type is DOMError\n\t * {@link isDOMError}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isDOMError(wat) {\n\t return Object.prototype.toString.call(wat) === '[object DOMError]';\n\t}\n\t/**\n\t * Checks whether given value's type is DOMException\n\t * {@link isDOMException}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isDOMException(wat) {\n\t return Object.prototype.toString.call(wat) === '[object DOMException]';\n\t}\n\t/**\n\t * Checks whether given value's type is a string\n\t * {@link isString}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isString(wat) {\n\t return Object.prototype.toString.call(wat) === '[object String]';\n\t}\n\t/**\n\t * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n\t * {@link isPrimitive}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isPrimitive(wat) {\n\t return wat === null || _typeof(wat) !== 'object' && typeof wat !== 'function';\n\t}\n\t/**\n\t * Checks whether given value's type is an object literal\n\t * {@link isPlainObject}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isPlainObject(wat) {\n\t return Object.prototype.toString.call(wat) === '[object Object]';\n\t}\n\t/**\n\t * Checks whether given value's type is an Event instance\n\t * {@link isEvent}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isEvent(wat) {\n\t // tslint:disable-next-line:strict-type-predicates\n\t return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n\t}\n\t/**\n\t * Checks whether given value's type is an Element instance\n\t * {@link isElement}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isElement(wat) {\n\t // tslint:disable-next-line:strict-type-predicates\n\t return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n\t}\n\t/**\n\t * Checks whether given value's type is an regexp\n\t * {@link isRegExp}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isRegExp(wat) {\n\t return Object.prototype.toString.call(wat) === '[object RegExp]';\n\t}\n\t/**\n\t * Checks whether given value has a then function.\n\t * @param wat A value to be checked.\n\t */\n\n\tfunction isThenable$1(wat) {\n\t // tslint:disable:no-unsafe-any\n\t return Boolean(wat && wat.then && typeof wat.then === 'function'); // tslint:enable:no-unsafe-any\n\t}\n\t/**\n\t * Checks whether given value's type is a SyntheticEvent\n\t * {@link isSyntheticEvent}.\n\t *\n\t * @param wat A value to be checked.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isSyntheticEvent(wat) {\n\t // tslint:disable-next-line:no-unsafe-any\n\t return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n\t}\n\t/**\n\t * Checks whether given value's type is an instance of provided constructor.\n\t * {@link isInstanceOf}.\n\t *\n\t * @param wat A value to be checked.\n\t * @param base A constructor to be used in a check.\n\t * @returns A boolean representing the result.\n\t */\n\n\tfunction isInstanceOf(wat, base) {\n\t try {\n\t // tslint:disable-next-line:no-unsafe-any\n\t return wat instanceof base;\n\t } catch (_e) {\n\t return false;\n\t }\n\t}\n\n\t// @@match logic\n\tfixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n\t return [\n\t // `String.prototype.match` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.match\n\t function match(regexp) {\n\t var O = requireObjectCoercible(this);\n\t var matcher = regexp == undefined ? undefined : regexp[MATCH];\n\t return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n\t },\n\t // `RegExp.prototype[@@match]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n\t function (regexp) {\n\t var res = maybeCallNative(nativeMatch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject(regexp);\n\t var S = String(this);\n\n\t if (!rx.global) return regexpExecAbstract(rx, S);\n\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t var A = [];\n\t var n = 0;\n\t var result;\n\t while ((result = regexpExecAbstract(rx, S)) !== null) {\n\t var matchStr = String(result[0]);\n\t A[n] = matchStr;\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n\t n++;\n\t }\n\t return n === 0 ? null : A;\n\t }\n\t ];\n\t});\n\n\tvar arrayBufferNative = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\tvar defineProperty$7 = objectDefineProperty.f;\n\n\n\n\n\n\tvar Int8Array$1 = global_1.Int8Array;\n\tvar Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype;\n\tvar Uint8ClampedArray = global_1.Uint8ClampedArray;\n\tvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\n\tvar TypedArray = Int8Array$1 && objectGetPrototypeOf(Int8Array$1);\n\tvar TypedArrayPrototype = Int8ArrayPrototype && objectGetPrototypeOf(Int8ArrayPrototype);\n\tvar ObjectPrototype$2 = Object.prototype;\n\tvar isPrototypeOf = ObjectPrototype$2.isPrototypeOf;\n\n\tvar TO_STRING_TAG$4 = wellKnownSymbol('toStringTag');\n\tvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n\t// Fixing native typed arrays in Opera Presto crashes the browser, see #595\n\tvar NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferNative && !!objectSetPrototypeOf && classof(global_1.opera) !== 'Opera';\n\tvar TYPED_ARRAY_TAG_REQIRED = false;\n\tvar NAME$1;\n\n\tvar TypedArrayConstructorsList = {\n\t Int8Array: 1,\n\t Uint8Array: 1,\n\t Uint8ClampedArray: 1,\n\t Int16Array: 2,\n\t Uint16Array: 2,\n\t Int32Array: 4,\n\t Uint32Array: 4,\n\t Float32Array: 4,\n\t Float64Array: 8\n\t};\n\n\tvar isView = function isView(it) {\n\t var klass = classof(it);\n\t return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n\t};\n\n\tvar isTypedArray = function (it) {\n\t return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n\t};\n\n\tvar aTypedArray = function (it) {\n\t if (isTypedArray(it)) return it;\n\t throw TypeError('Target is not a typed array');\n\t};\n\n\tvar aTypedArrayConstructor = function (C) {\n\t if (objectSetPrototypeOf) {\n\t if (isPrototypeOf.call(TypedArray, C)) return C;\n\t } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME$1)) {\n\t var TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n\t return C;\n\t }\n\t } throw TypeError('Target is not a typed array constructor');\n\t};\n\n\tvar exportTypedArrayMethod = function (KEY, property, forced) {\n\t if (!descriptors) return;\n\t if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n\t var TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n\t delete TypedArrayConstructor.prototype[KEY];\n\t }\n\t }\n\t if (!TypedArrayPrototype[KEY] || forced) {\n\t redefine(TypedArrayPrototype, KEY, forced ? property\n\t : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n\t }\n\t};\n\n\tvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n\t var ARRAY, TypedArrayConstructor;\n\t if (!descriptors) return;\n\t if (objectSetPrototypeOf) {\n\t if (forced) for (ARRAY in TypedArrayConstructorsList) {\n\t TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n\t delete TypedArrayConstructor[KEY];\n\t }\n\t }\n\t if (!TypedArray[KEY] || forced) {\n\t // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n\t try {\n\t return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array$1[KEY] || property);\n\t } catch (error) { /* empty */ }\n\t } else return;\n\t }\n\t for (ARRAY in TypedArrayConstructorsList) {\n\t TypedArrayConstructor = global_1[ARRAY];\n\t if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n\t redefine(TypedArrayConstructor, KEY, property);\n\t }\n\t }\n\t};\n\n\tfor (NAME$1 in TypedArrayConstructorsList) {\n\t if (!global_1[NAME$1]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n\t}\n\n\t// WebKit bug - typed arrays constructors prototype is Object.prototype\n\tif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n\t // eslint-disable-next-line no-shadow\n\t TypedArray = function TypedArray() {\n\t throw TypeError('Incorrect invocation');\n\t };\n\t if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) {\n\t if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1], TypedArray);\n\t }\n\t}\n\n\tif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype$2) {\n\t TypedArrayPrototype = TypedArray.prototype;\n\t if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) {\n\t if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1].prototype, TypedArrayPrototype);\n\t }\n\t}\n\n\t// WebKit bug - one more object in Uint8ClampedArray prototype chain\n\tif (NATIVE_ARRAY_BUFFER_VIEWS && objectGetPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n\t objectSetPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n\t}\n\n\tif (descriptors && !has(TypedArrayPrototype, TO_STRING_TAG$4)) {\n\t TYPED_ARRAY_TAG_REQIRED = true;\n\t defineProperty$7(TypedArrayPrototype, TO_STRING_TAG$4, { get: function () {\n\t return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n\t } });\n\t for (NAME$1 in TypedArrayConstructorsList) if (global_1[NAME$1]) {\n\t createNonEnumerableProperty(global_1[NAME$1], TYPED_ARRAY_TAG, NAME$1);\n\t }\n\t}\n\n\tvar arrayBufferViewCore = {\n\t NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n\t TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n\t aTypedArray: aTypedArray,\n\t aTypedArrayConstructor: aTypedArrayConstructor,\n\t exportTypedArrayMethod: exportTypedArrayMethod,\n\t exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n\t isView: isView,\n\t isTypedArray: isTypedArray,\n\t TypedArray: TypedArray,\n\t TypedArrayPrototype: TypedArrayPrototype\n\t};\n\n\t/* eslint-disable no-new */\n\n\n\n\tvar NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n\tvar ArrayBuffer$1 = global_1.ArrayBuffer;\n\tvar Int8Array$2 = global_1.Int8Array;\n\n\tvar typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails(function () {\n\t Int8Array$2(1);\n\t}) || !fails(function () {\n\t new Int8Array$2(-1);\n\t}) || !checkCorrectnessOfIteration(function (iterable) {\n\t new Int8Array$2();\n\t new Int8Array$2(null);\n\t new Int8Array$2(1.5);\n\t new Int8Array$2(iterable);\n\t}, true) || fails(function () {\n\t // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n\t return new Int8Array$2(new ArrayBuffer$1(2), 1, undefined).length !== 1;\n\t});\n\n\t// `ToIndex` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toindex\n\tvar toIndex = function (it) {\n\t if (it === undefined) return 0;\n\t var number = toInteger(it);\n\t var length = toLength(number);\n\t if (number !== length) throw RangeError('Wrong length or index');\n\t return length;\n\t};\n\n\t// IEEE754 conversions based on https://github.com/feross/ieee754\n\t// eslint-disable-next-line no-shadow-restricted-names\n\tvar Infinity$1 = 1 / 0;\n\tvar abs = Math.abs;\n\tvar pow$1 = Math.pow;\n\tvar floor$4 = Math.floor;\n\tvar log = Math.log;\n\tvar LN2 = Math.LN2;\n\n\tvar pack = function (number, mantissaLength, bytes) {\n\t var buffer = new Array(bytes);\n\t var exponentLength = bytes * 8 - mantissaLength - 1;\n\t var eMax = (1 << exponentLength) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = mantissaLength === 23 ? pow$1(2, -24) - pow$1(2, -77) : 0;\n\t var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n\t var index = 0;\n\t var exponent, mantissa, c;\n\t number = abs(number);\n\t // eslint-disable-next-line no-self-compare\n\t if (number != number || number === Infinity$1) {\n\t // eslint-disable-next-line no-self-compare\n\t mantissa = number != number ? 1 : 0;\n\t exponent = eMax;\n\t } else {\n\t exponent = floor$4(log(number) / LN2);\n\t if (number * (c = pow$1(2, -exponent)) < 1) {\n\t exponent--;\n\t c *= 2;\n\t }\n\t if (exponent + eBias >= 1) {\n\t number += rt / c;\n\t } else {\n\t number += rt * pow$1(2, 1 - eBias);\n\t }\n\t if (number * c >= 2) {\n\t exponent++;\n\t c /= 2;\n\t }\n\t if (exponent + eBias >= eMax) {\n\t mantissa = 0;\n\t exponent = eMax;\n\t } else if (exponent + eBias >= 1) {\n\t mantissa = (number * c - 1) * pow$1(2, mantissaLength);\n\t exponent = exponent + eBias;\n\t } else {\n\t mantissa = number * pow$1(2, eBias - 1) * pow$1(2, mantissaLength);\n\t exponent = 0;\n\t }\n\t }\n\t for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n\t exponent = exponent << mantissaLength | mantissa;\n\t exponentLength += mantissaLength;\n\t for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n\t buffer[--index] |= sign * 128;\n\t return buffer;\n\t};\n\n\tvar unpack = function (buffer, mantissaLength) {\n\t var bytes = buffer.length;\n\t var exponentLength = bytes * 8 - mantissaLength - 1;\n\t var eMax = (1 << exponentLength) - 1;\n\t var eBias = eMax >> 1;\n\t var nBits = exponentLength - 7;\n\t var index = bytes - 1;\n\t var sign = buffer[index--];\n\t var exponent = sign & 127;\n\t var mantissa;\n\t sign >>= 7;\n\t for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n\t mantissa = exponent & (1 << -nBits) - 1;\n\t exponent >>= -nBits;\n\t nBits += mantissaLength;\n\t for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n\t if (exponent === 0) {\n\t exponent = 1 - eBias;\n\t } else if (exponent === eMax) {\n\t return mantissa ? NaN : sign ? -Infinity$1 : Infinity$1;\n\t } else {\n\t mantissa = mantissa + pow$1(2, mantissaLength);\n\t exponent = exponent - eBias;\n\t } return (sign ? -1 : 1) * mantissa * pow$1(2, exponent - mantissaLength);\n\t};\n\n\tvar ieee754 = {\n\t pack: pack,\n\t unpack: unpack\n\t};\n\n\t// `Array.prototype.fill` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n\tvar arrayFill = function fill(value /* , start = 0, end = @length */) {\n\t var O = toObject(this);\n\t var length = toLength(O.length);\n\t var argumentsLength = arguments.length;\n\t var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n\t var end = argumentsLength > 2 ? arguments[2] : undefined;\n\t var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n\t while (endPos > index) O[index++] = value;\n\t return O;\n\t};\n\n\tvar getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;\n\tvar defineProperty$8 = objectDefineProperty.f;\n\n\n\n\n\tvar getInternalState$4 = internalState.get;\n\tvar setInternalState$7 = internalState.set;\n\tvar ARRAY_BUFFER = 'ArrayBuffer';\n\tvar DATA_VIEW = 'DataView';\n\tvar PROTOTYPE$2 = 'prototype';\n\tvar WRONG_LENGTH = 'Wrong length';\n\tvar WRONG_INDEX = 'Wrong index';\n\tvar NativeArrayBuffer = global_1[ARRAY_BUFFER];\n\tvar $ArrayBuffer = NativeArrayBuffer;\n\tvar $DataView = global_1[DATA_VIEW];\n\tvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE$2];\n\tvar ObjectPrototype$3 = Object.prototype;\n\tvar RangeError$1 = global_1.RangeError;\n\n\tvar packIEEE754 = ieee754.pack;\n\tvar unpackIEEE754 = ieee754.unpack;\n\n\tvar packInt8 = function (number) {\n\t return [number & 0xFF];\n\t};\n\n\tvar packInt16 = function (number) {\n\t return [number & 0xFF, number >> 8 & 0xFF];\n\t};\n\n\tvar packInt32 = function (number) {\n\t return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n\t};\n\n\tvar unpackInt32 = function (buffer) {\n\t return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n\t};\n\n\tvar packFloat32 = function (number) {\n\t return packIEEE754(number, 23, 4);\n\t};\n\n\tvar packFloat64 = function (number) {\n\t return packIEEE754(number, 52, 8);\n\t};\n\n\tvar addGetter = function (Constructor, key) {\n\t defineProperty$8(Constructor[PROTOTYPE$2], key, { get: function () { return getInternalState$4(this)[key]; } });\n\t};\n\n\tvar get$1 = function (view, count, index, isLittleEndian) {\n\t var intIndex = toIndex(index);\n\t var store = getInternalState$4(view);\n\t if (intIndex + count > store.byteLength) throw RangeError$1(WRONG_INDEX);\n\t var bytes = getInternalState$4(store.buffer).bytes;\n\t var start = intIndex + store.byteOffset;\n\t var pack = bytes.slice(start, start + count);\n\t return isLittleEndian ? pack : pack.reverse();\n\t};\n\n\tvar set$2 = function (view, count, index, conversion, value, isLittleEndian) {\n\t var intIndex = toIndex(index);\n\t var store = getInternalState$4(view);\n\t if (intIndex + count > store.byteLength) throw RangeError$1(WRONG_INDEX);\n\t var bytes = getInternalState$4(store.buffer).bytes;\n\t var start = intIndex + store.byteOffset;\n\t var pack = conversion(+value);\n\t for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n\t};\n\n\tif (!arrayBufferNative) {\n\t $ArrayBuffer = function ArrayBuffer(length) {\n\t anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n\t var byteLength = toIndex(length);\n\t setInternalState$7(this, {\n\t bytes: arrayFill.call(new Array(byteLength), 0),\n\t byteLength: byteLength\n\t });\n\t if (!descriptors) this.byteLength = byteLength;\n\t };\n\n\t $DataView = function DataView(buffer, byteOffset, byteLength) {\n\t anInstance(this, $DataView, DATA_VIEW);\n\t anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n\t var bufferLength = getInternalState$4(buffer).byteLength;\n\t var offset = toInteger(byteOffset);\n\t if (offset < 0 || offset > bufferLength) throw RangeError$1('Wrong offset');\n\t byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n\t if (offset + byteLength > bufferLength) throw RangeError$1(WRONG_LENGTH);\n\t setInternalState$7(this, {\n\t buffer: buffer,\n\t byteLength: byteLength,\n\t byteOffset: offset\n\t });\n\t if (!descriptors) {\n\t this.buffer = buffer;\n\t this.byteLength = byteLength;\n\t this.byteOffset = offset;\n\t }\n\t };\n\n\t if (descriptors) {\n\t addGetter($ArrayBuffer, 'byteLength');\n\t addGetter($DataView, 'buffer');\n\t addGetter($DataView, 'byteLength');\n\t addGetter($DataView, 'byteOffset');\n\t }\n\n\t redefineAll($DataView[PROTOTYPE$2], {\n\t getInt8: function getInt8(byteOffset) {\n\t return get$1(this, 1, byteOffset)[0] << 24 >> 24;\n\t },\n\t getUint8: function getUint8(byteOffset) {\n\t return get$1(this, 1, byteOffset)[0];\n\t },\n\t getInt16: function getInt16(byteOffset /* , littleEndian */) {\n\t var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n\t return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n\t },\n\t getUint16: function getUint16(byteOffset /* , littleEndian */) {\n\t var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n\t return bytes[1] << 8 | bytes[0];\n\t },\n\t getInt32: function getInt32(byteOffset /* , littleEndian */) {\n\t return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n\t },\n\t getUint32: function getUint32(byteOffset /* , littleEndian */) {\n\t return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n\t },\n\t getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n\t return unpackIEEE754(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n\t },\n\t getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n\t return unpackIEEE754(get$1(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n\t },\n\t setInt8: function setInt8(byteOffset, value) {\n\t set$2(this, 1, byteOffset, packInt8, value);\n\t },\n\t setUint8: function setUint8(byteOffset, value) {\n\t set$2(this, 1, byteOffset, packInt8, value);\n\t },\n\t setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n\t set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n\t },\n\t setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n\t set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n\t },\n\t setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n\t set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n\t },\n\t setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n\t set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n\t },\n\t setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n\t set$2(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n\t },\n\t setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n\t set$2(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n\t }\n\t });\n\t} else {\n\t if (!fails(function () {\n\t NativeArrayBuffer(1);\n\t }) || !fails(function () {\n\t new NativeArrayBuffer(-1); // eslint-disable-line no-new\n\t }) || fails(function () {\n\t new NativeArrayBuffer(); // eslint-disable-line no-new\n\t new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n\t new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n\t return NativeArrayBuffer.name != ARRAY_BUFFER;\n\t })) {\n\t $ArrayBuffer = function ArrayBuffer(length) {\n\t anInstance(this, $ArrayBuffer);\n\t return new NativeArrayBuffer(toIndex(length));\n\t };\n\t var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE$2] = NativeArrayBuffer[PROTOTYPE$2];\n\t for (var keys$2 = getOwnPropertyNames$1(NativeArrayBuffer), j = 0, key; keys$2.length > j;) {\n\t if (!((key = keys$2[j++]) in $ArrayBuffer)) {\n\t createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n\t }\n\t }\n\t ArrayBufferPrototype.constructor = $ArrayBuffer;\n\t }\n\n\t // WebKit bug - the same parent prototype for typed arrays and data view\n\t if (objectSetPrototypeOf && objectGetPrototypeOf($DataViewPrototype) !== ObjectPrototype$3) {\n\t objectSetPrototypeOf($DataViewPrototype, ObjectPrototype$3);\n\t }\n\n\t // iOS Safari 7.x bug\n\t var testView = new $DataView(new $ArrayBuffer(2));\n\t var nativeSetInt8 = $DataViewPrototype.setInt8;\n\t testView.setInt8(0, 2147483648);\n\t testView.setInt8(1, 2147483649);\n\t if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n\t setInt8: function setInt8(byteOffset, value) {\n\t nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n\t },\n\t setUint8: function setUint8(byteOffset, value) {\n\t nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n\t }\n\t }, { unsafe: true });\n\t}\n\n\tsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\n\tsetToStringTag($DataView, DATA_VIEW);\n\n\tvar arrayBuffer = {\n\t ArrayBuffer: $ArrayBuffer,\n\t DataView: $DataView\n\t};\n\n\tvar toPositiveInteger = function (it) {\n\t var result = toInteger(it);\n\t if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n\t return result;\n\t};\n\n\tvar toOffset = function (it, BYTES) {\n\t var offset = toPositiveInteger(it);\n\t if (offset % BYTES) throw RangeError('Wrong offset');\n\t return offset;\n\t};\n\n\tvar aTypedArrayConstructor$1 = arrayBufferViewCore.aTypedArrayConstructor;\n\n\tvar typedArrayFrom = function from(source /* , mapfn, thisArg */) {\n\t var O = toObject(source);\n\t var argumentsLength = arguments.length;\n\t var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n\t var mapping = mapfn !== undefined;\n\t var iteratorMethod = getIteratorMethod(O);\n\t var i, length, result, step, iterator, next;\n\t if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n\t iterator = iteratorMethod.call(O);\n\t next = iterator.next;\n\t O = [];\n\t while (!(step = next.call(iterator)).done) {\n\t O.push(step.value);\n\t }\n\t }\n\t if (mapping && argumentsLength > 2) {\n\t mapfn = functionBindContext(mapfn, arguments[2], 2);\n\t }\n\t length = toLength(O.length);\n\t result = new (aTypedArrayConstructor$1(this))(length);\n\t for (i = 0; length > i; i++) {\n\t result[i] = mapping ? mapfn(O[i], i) : O[i];\n\t }\n\t return result;\n\t};\n\n\tvar typedArrayConstructor = createCommonjsModule(function (module) {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tvar getOwnPropertyNames = objectGetOwnPropertyNames.f;\n\n\tvar forEach = arrayIteration.forEach;\n\n\n\n\n\n\n\tvar getInternalState = internalState.get;\n\tvar setInternalState = internalState.set;\n\tvar nativeDefineProperty = objectDefineProperty.f;\n\tvar nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n\tvar round = Math.round;\n\tvar RangeError = global_1.RangeError;\n\tvar ArrayBuffer = arrayBuffer.ArrayBuffer;\n\tvar DataView = arrayBuffer.DataView;\n\tvar NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\tvar TYPED_ARRAY_TAG = arrayBufferViewCore.TYPED_ARRAY_TAG;\n\tvar TypedArray = arrayBufferViewCore.TypedArray;\n\tvar TypedArrayPrototype = arrayBufferViewCore.TypedArrayPrototype;\n\tvar aTypedArrayConstructor = arrayBufferViewCore.aTypedArrayConstructor;\n\tvar isTypedArray = arrayBufferViewCore.isTypedArray;\n\tvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n\tvar WRONG_LENGTH = 'Wrong length';\n\n\tvar fromList = function (C, list) {\n\t var index = 0;\n\t var length = list.length;\n\t var result = new (aTypedArrayConstructor(C))(length);\n\t while (length > index) result[index] = list[index++];\n\t return result;\n\t};\n\n\tvar addGetter = function (it, key) {\n\t nativeDefineProperty(it, key, { get: function () {\n\t return getInternalState(this)[key];\n\t } });\n\t};\n\n\tvar isArrayBuffer = function (it) {\n\t var klass;\n\t return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n\t};\n\n\tvar isTypedArrayIndex = function (target, key) {\n\t return isTypedArray(target)\n\t && typeof key != 'symbol'\n\t && key in target\n\t && String(+key) == String(key);\n\t};\n\n\tvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n\t return isTypedArrayIndex(target, key = toPrimitive(key, true))\n\t ? createPropertyDescriptor(2, target[key])\n\t : nativeGetOwnPropertyDescriptor(target, key);\n\t};\n\n\tvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n\t if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n\t && isObject(descriptor)\n\t && has(descriptor, 'value')\n\t && !has(descriptor, 'get')\n\t && !has(descriptor, 'set')\n\t // TODO: add validation descriptor w/o calling accessors\n\t && !descriptor.configurable\n\t && (!has(descriptor, 'writable') || descriptor.writable)\n\t && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n\t ) {\n\t target[key] = descriptor.value;\n\t return target;\n\t } return nativeDefineProperty(target, key, descriptor);\n\t};\n\n\tif (descriptors) {\n\t if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n\t objectGetOwnPropertyDescriptor.f = wrappedGetOwnPropertyDescriptor;\n\t objectDefineProperty.f = wrappedDefineProperty;\n\t addGetter(TypedArrayPrototype, 'buffer');\n\t addGetter(TypedArrayPrototype, 'byteOffset');\n\t addGetter(TypedArrayPrototype, 'byteLength');\n\t addGetter(TypedArrayPrototype, 'length');\n\t }\n\n\t _export({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n\t getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n\t defineProperty: wrappedDefineProperty\n\t });\n\n\t module.exports = function (TYPE, wrapper, CLAMPED) {\n\t var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n\t var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n\t var GETTER = 'get' + TYPE;\n\t var SETTER = 'set' + TYPE;\n\t var NativeTypedArrayConstructor = global_1[CONSTRUCTOR_NAME];\n\t var TypedArrayConstructor = NativeTypedArrayConstructor;\n\t var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n\t var exported = {};\n\n\t var getter = function (that, index) {\n\t var data = getInternalState(that);\n\t return data.view[GETTER](index * BYTES + data.byteOffset, true);\n\t };\n\n\t var setter = function (that, index, value) {\n\t var data = getInternalState(that);\n\t if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n\t data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n\t };\n\n\t var addElement = function (that, index) {\n\t nativeDefineProperty(that, index, {\n\t get: function () {\n\t return getter(this, index);\n\t },\n\t set: function (value) {\n\t return setter(this, index, value);\n\t },\n\t enumerable: true\n\t });\n\t };\n\n\t if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n\t TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n\t anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n\t var index = 0;\n\t var byteOffset = 0;\n\t var buffer, byteLength, length;\n\t if (!isObject(data)) {\n\t length = toIndex(data);\n\t byteLength = length * BYTES;\n\t buffer = new ArrayBuffer(byteLength);\n\t } else if (isArrayBuffer(data)) {\n\t buffer = data;\n\t byteOffset = toOffset(offset, BYTES);\n\t var $len = data.byteLength;\n\t if ($length === undefined) {\n\t if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n\t byteLength = $len - byteOffset;\n\t if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n\t } else {\n\t byteLength = toLength($length) * BYTES;\n\t if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n\t }\n\t length = byteLength / BYTES;\n\t } else if (isTypedArray(data)) {\n\t return fromList(TypedArrayConstructor, data);\n\t } else {\n\t return typedArrayFrom.call(TypedArrayConstructor, data);\n\t }\n\t setInternalState(that, {\n\t buffer: buffer,\n\t byteOffset: byteOffset,\n\t byteLength: byteLength,\n\t length: length,\n\t view: new DataView(buffer)\n\t });\n\t while (index < length) addElement(that, index++);\n\t });\n\n\t if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray);\n\t TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = objectCreate(TypedArrayPrototype);\n\t } else if (typedArrayConstructorsRequireWrappers) {\n\t TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n\t anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n\t return inheritIfRequired(function () {\n\t if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n\t if (isArrayBuffer(data)) return $length !== undefined\n\t ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n\t : typedArrayOffset !== undefined\n\t ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n\t : new NativeTypedArrayConstructor(data);\n\t if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n\t return typedArrayFrom.call(TypedArrayConstructor, data);\n\t }(), dummy, TypedArrayConstructor);\n\t });\n\n\t if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray);\n\t forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n\t if (!(key in TypedArrayConstructor)) {\n\t createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n\t }\n\t });\n\t TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n\t }\n\n\t if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n\t createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n\t }\n\n\t if (TYPED_ARRAY_TAG) {\n\t createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n\t }\n\n\t exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n\t _export({\n\t global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n\t }, exported);\n\n\t if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n\t createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n\t }\n\n\t if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n\t createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n\t }\n\n\t setSpecies(CONSTRUCTOR_NAME);\n\t };\n\t} else module.exports = function () { /* empty */ };\n\t});\n\n\t// `Uint16Array` constructor\n\t// https://tc39.github.io/ecma262/#sec-typedarray-objects\n\ttypedArrayConstructor('Uint16', function (init) {\n\t return function Uint16Array(data, byteOffset, length) {\n\t return init(this, data, byteOffset, length);\n\t };\n\t});\n\n\tvar min$4 = Math.min;\n\n\t// `Array.prototype.copyWithin` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\n\tvar arrayCopyWithin = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n\t var O = toObject(this);\n\t var len = toLength(O.length);\n\t var to = toAbsoluteIndex(target, len);\n\t var from = toAbsoluteIndex(start, len);\n\t var end = arguments.length > 2 ? arguments[2] : undefined;\n\t var count = min$4((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n\t var inc = 1;\n\t if (from < to && to < from + count) {\n\t inc = -1;\n\t from += count - 1;\n\t to += count - 1;\n\t }\n\t while (count-- > 0) {\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t to += inc;\n\t from += inc;\n\t } return O;\n\t};\n\n\tvar aTypedArray$1 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$1 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.copyWithin` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\n\texportTypedArrayMethod$1('copyWithin', function copyWithin(target, start /* , end */) {\n\t return arrayCopyWithin.call(aTypedArray$1(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n\t});\n\n\tvar $every = arrayIteration.every;\n\n\tvar aTypedArray$2 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$2 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.every` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\n\texportTypedArrayMethod$2('every', function every(callbackfn /* , thisArg */) {\n\t return $every(aTypedArray$2(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$3 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$3 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.fill` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n\t// eslint-disable-next-line no-unused-vars\n\texportTypedArrayMethod$3('fill', function fill(value /* , start, end */) {\n\t return arrayFill.apply(aTypedArray$3(this), arguments);\n\t});\n\n\tvar $filter = arrayIteration.filter;\n\n\n\tvar aTypedArray$4 = arrayBufferViewCore.aTypedArray;\n\tvar aTypedArrayConstructor$2 = arrayBufferViewCore.aTypedArrayConstructor;\n\tvar exportTypedArrayMethod$4 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.filter` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\n\texportTypedArrayMethod$4('filter', function filter(callbackfn /* , thisArg */) {\n\t var list = $filter(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t var C = speciesConstructor(this, this.constructor);\n\t var index = 0;\n\t var length = list.length;\n\t var result = new (aTypedArrayConstructor$2(C))(length);\n\t while (length > index) result[index] = list[index++];\n\t return result;\n\t});\n\n\tvar $find = arrayIteration.find;\n\n\tvar aTypedArray$5 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$5 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.find` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\n\texportTypedArrayMethod$5('find', function find(predicate /* , thisArg */) {\n\t return $find(aTypedArray$5(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar $findIndex = arrayIteration.findIndex;\n\n\tvar aTypedArray$6 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.findIndex` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\n\texportTypedArrayMethod$6('findIndex', function findIndex(predicate /* , thisArg */) {\n\t return $findIndex(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar $forEach$2 = arrayIteration.forEach;\n\n\tvar aTypedArray$7 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$7 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.forEach` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\n\texportTypedArrayMethod$7('forEach', function forEach(callbackfn /* , thisArg */) {\n\t $forEach$2(aTypedArray$7(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar $includes$1 = arrayIncludes.includes;\n\n\tvar aTypedArray$8 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$8 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\n\texportTypedArrayMethod$8('includes', function includes(searchElement /* , fromIndex */) {\n\t return $includes$1(aTypedArray$8(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar $indexOf$1 = arrayIncludes.indexOf;\n\n\tvar aTypedArray$9 = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$9 = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.indexOf` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\n\texportTypedArrayMethod$9('indexOf', function indexOf(searchElement /* , fromIndex */) {\n\t return $indexOf$1(aTypedArray$9(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar ITERATOR$8 = wellKnownSymbol('iterator');\n\tvar Uint8Array = global_1.Uint8Array;\n\tvar arrayValues = es_array_iterator.values;\n\tvar arrayKeys = es_array_iterator.keys;\n\tvar arrayEntries = es_array_iterator.entries;\n\tvar aTypedArray$a = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$a = arrayBufferViewCore.exportTypedArrayMethod;\n\tvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR$8];\n\n\tvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n\t && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\n\tvar typedArrayValues = function values() {\n\t return arrayValues.call(aTypedArray$a(this));\n\t};\n\n\t// `%TypedArray%.prototype.entries` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\n\texportTypedArrayMethod$a('entries', function entries() {\n\t return arrayEntries.call(aTypedArray$a(this));\n\t});\n\t// `%TypedArray%.prototype.keys` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\n\texportTypedArrayMethod$a('keys', function keys() {\n\t return arrayKeys.call(aTypedArray$a(this));\n\t});\n\t// `%TypedArray%.prototype.values` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\n\texportTypedArrayMethod$a('values', typedArrayValues, !CORRECT_ITER_NAME);\n\t// `%TypedArray%.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\n\texportTypedArrayMethod$a(ITERATOR$8, typedArrayValues, !CORRECT_ITER_NAME);\n\n\tvar aTypedArray$b = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$b = arrayBufferViewCore.exportTypedArrayMethod;\n\tvar $join = [].join;\n\n\t// `%TypedArray%.prototype.join` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n\t// eslint-disable-next-line no-unused-vars\n\texportTypedArrayMethod$b('join', function join(separator) {\n\t return $join.apply(aTypedArray$b(this), arguments);\n\t});\n\n\tvar min$5 = Math.min;\n\tvar nativeLastIndexOf = [].lastIndexOf;\n\tvar NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\n\tvar STRICT_METHOD$3 = arrayMethodIsStrict('lastIndexOf');\n\t// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\n\tvar USES_TO_LENGTH$5 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\tvar FORCED$4 = NEGATIVE_ZERO$1 || !STRICT_METHOD$3 || !USES_TO_LENGTH$5;\n\n\t// `Array.prototype.lastIndexOf` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\tvar arrayLastIndexOf = FORCED$4 ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n\t // convert -0 to +0\n\t if (NEGATIVE_ZERO$1) return nativeLastIndexOf.apply(this, arguments) || 0;\n\t var O = toIndexedObject(this);\n\t var length = toLength(O.length);\n\t var index = length - 1;\n\t if (arguments.length > 1) index = min$5(index, toInteger(arguments[1]));\n\t if (index < 0) index = length + index;\n\t for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n\t return -1;\n\t} : nativeLastIndexOf;\n\n\tvar aTypedArray$c = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$c = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.lastIndexOf` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n\t// eslint-disable-next-line no-unused-vars\n\texportTypedArrayMethod$c('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n\t return arrayLastIndexOf.apply(aTypedArray$c(this), arguments);\n\t});\n\n\tvar $map$1 = arrayIteration.map;\n\n\n\tvar aTypedArray$d = arrayBufferViewCore.aTypedArray;\n\tvar aTypedArrayConstructor$3 = arrayBufferViewCore.aTypedArrayConstructor;\n\tvar exportTypedArrayMethod$d = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.map` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\n\texportTypedArrayMethod$d('map', function map(mapfn /* , thisArg */) {\n\t return $map$1(aTypedArray$d(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n\t return new (aTypedArrayConstructor$3(speciesConstructor(O, O.constructor)))(length);\n\t });\n\t});\n\n\t// `Array.prototype.{ reduce, reduceRight }` methods implementation\n\tvar createMethod$3 = function (IS_RIGHT) {\n\t return function (that, callbackfn, argumentsLength, memo) {\n\t aFunction$1(callbackfn);\n\t var O = toObject(that);\n\t var self = indexedObject(O);\n\t var length = toLength(O.length);\n\t var index = IS_RIGHT ? length - 1 : 0;\n\t var i = IS_RIGHT ? -1 : 1;\n\t if (argumentsLength < 2) while (true) {\n\t if (index in self) {\n\t memo = self[index];\n\t index += i;\n\t break;\n\t }\n\t index += i;\n\t if (IS_RIGHT ? index < 0 : length <= index) {\n\t throw TypeError('Reduce of empty array with no initial value');\n\t }\n\t }\n\t for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n\t memo = callbackfn(memo, self[index], index, O);\n\t }\n\t return memo;\n\t };\n\t};\n\n\tvar arrayReduce = {\n\t // `Array.prototype.reduce` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t left: createMethod$3(false),\n\t // `Array.prototype.reduceRight` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n\t right: createMethod$3(true)\n\t};\n\n\tvar $reduce = arrayReduce.left;\n\n\tvar aTypedArray$e = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$e = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.reduce` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\n\texportTypedArrayMethod$e('reduce', function reduce(callbackfn /* , initialValue */) {\n\t return $reduce(aTypedArray$e(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar $reduceRight = arrayReduce.right;\n\n\tvar aTypedArray$f = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$f = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.reduceRicht` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\n\texportTypedArrayMethod$f('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n\t return $reduceRight(aTypedArray$f(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$g = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$g = arrayBufferViewCore.exportTypedArrayMethod;\n\tvar floor$5 = Math.floor;\n\n\t// `%TypedArray%.prototype.reverse` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\n\texportTypedArrayMethod$g('reverse', function reverse() {\n\t var that = this;\n\t var length = aTypedArray$g(that).length;\n\t var middle = floor$5(length / 2);\n\t var index = 0;\n\t var value;\n\t while (index < middle) {\n\t value = that[index];\n\t that[index++] = that[--length];\n\t that[length] = value;\n\t } return that;\n\t});\n\n\tvar aTypedArray$h = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$h = arrayBufferViewCore.exportTypedArrayMethod;\n\n\tvar FORCED$5 = fails(function () {\n\t // eslint-disable-next-line no-undef\n\t new Int8Array(1).set({});\n\t});\n\n\t// `%TypedArray%.prototype.set` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\n\texportTypedArrayMethod$h('set', function set(arrayLike /* , offset */) {\n\t aTypedArray$h(this);\n\t var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n\t var length = this.length;\n\t var src = toObject(arrayLike);\n\t var len = toLength(src.length);\n\t var index = 0;\n\t if (len + offset > length) throw RangeError('Wrong length');\n\t while (index < len) this[offset + index] = src[index++];\n\t}, FORCED$5);\n\n\tvar aTypedArray$i = arrayBufferViewCore.aTypedArray;\n\tvar aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor;\n\tvar exportTypedArrayMethod$i = arrayBufferViewCore.exportTypedArrayMethod;\n\tvar $slice = [].slice;\n\n\tvar FORCED$6 = fails(function () {\n\t // eslint-disable-next-line no-undef\n\t new Int8Array(1).slice();\n\t});\n\n\t// `%TypedArray%.prototype.slice` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\n\texportTypedArrayMethod$i('slice', function slice(start, end) {\n\t var list = $slice.call(aTypedArray$i(this), start, end);\n\t var C = speciesConstructor(this, this.constructor);\n\t var index = 0;\n\t var length = list.length;\n\t var result = new (aTypedArrayConstructor$4(C))(length);\n\t while (length > index) result[index] = list[index++];\n\t return result;\n\t}, FORCED$6);\n\n\tvar $some = arrayIteration.some;\n\n\tvar aTypedArray$j = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$j = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.some` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\n\texportTypedArrayMethod$j('some', function some(callbackfn /* , thisArg */) {\n\t return $some(aTypedArray$j(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t});\n\n\tvar aTypedArray$k = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$k = arrayBufferViewCore.exportTypedArrayMethod;\n\tvar $sort = [].sort;\n\n\t// `%TypedArray%.prototype.sort` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\n\texportTypedArrayMethod$k('sort', function sort(comparefn) {\n\t return $sort.call(aTypedArray$k(this), comparefn);\n\t});\n\n\tvar aTypedArray$l = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$l = arrayBufferViewCore.exportTypedArrayMethod;\n\n\t// `%TypedArray%.prototype.subarray` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\n\texportTypedArrayMethod$l('subarray', function subarray(begin, end) {\n\t var O = aTypedArray$l(this);\n\t var length = O.length;\n\t var beginIndex = toAbsoluteIndex(begin, length);\n\t return new (speciesConstructor(O, O.constructor))(\n\t O.buffer,\n\t O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n\t toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n\t );\n\t});\n\n\tvar Int8Array$3 = global_1.Int8Array;\n\tvar aTypedArray$m = arrayBufferViewCore.aTypedArray;\n\tvar exportTypedArrayMethod$m = arrayBufferViewCore.exportTypedArrayMethod;\n\tvar $toLocaleString = [].toLocaleString;\n\tvar $slice$1 = [].slice;\n\n\t// iOS Safari 6.x fails here\n\tvar TO_LOCALE_STRING_BUG = !!Int8Array$3 && fails(function () {\n\t $toLocaleString.call(new Int8Array$3(1));\n\t});\n\n\tvar FORCED$7 = fails(function () {\n\t return [1, 2].toLocaleString() != new Int8Array$3([1, 2]).toLocaleString();\n\t}) || !fails(function () {\n\t Int8Array$3.prototype.toLocaleString.call([1, 2]);\n\t});\n\n\t// `%TypedArray%.prototype.toLocaleString` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\n\texportTypedArrayMethod$m('toLocaleString', function toLocaleString() {\n\t return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice$1.call(aTypedArray$m(this)) : aTypedArray$m(this), arguments);\n\t}, FORCED$7);\n\n\tvar exportTypedArrayMethod$n = arrayBufferViewCore.exportTypedArrayMethod;\n\n\n\n\tvar Uint8Array$1 = global_1.Uint8Array;\n\tvar Uint8ArrayPrototype = Uint8Array$1 && Uint8Array$1.prototype || {};\n\tvar arrayToString = [].toString;\n\tvar arrayJoin = [].join;\n\n\tif (fails(function () { arrayToString.call({}); })) {\n\t arrayToString = function toString() {\n\t return arrayJoin.call(this);\n\t };\n\t}\n\n\tvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n\t// `%TypedArray%.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\n\texportTypedArrayMethod$n('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\t/**\n\t * Truncates given string to the maximum characters count\n\t *\n\t * @param str An object that contains serializable values\n\t * @param max Maximum number of characters in truncated string\n\t * @returns string Encoded\n\t */\n\n\tfunction truncate(str, max) {\n\t if (max === void 0) {\n\t max = 0;\n\t } // tslint:disable-next-line:strict-type-predicates\n\n\n\t if (typeof str !== 'string' || max === 0) {\n\t return str;\n\t }\n\n\t return str.length <= max ? str : str.substr(0, max) + \"...\";\n\t}\n\t/**\n\t * Join values in array\n\t * @param input array of values to be joined together\n\t * @param delimiter string to be placed in-between values\n\t * @returns Joined values\n\t */\n\n\tfunction safeJoin(input, delimiter) {\n\t if (!Array.isArray(input)) {\n\t return '';\n\t }\n\n\t var output = []; // tslint:disable-next-line:prefer-for-of\n\n\t for (var i = 0; i < input.length; i++) {\n\t var value = input[i];\n\n\t try {\n\t output.push(String(value));\n\t } catch (e) {\n\t output.push('[value cannot be serialized]');\n\t }\n\t }\n\n\t return output.join(delimiter);\n\t}\n\t/**\n\t * Checks if the value matches a regex or includes the string\n\t * @param value The string value to be checked against\n\t * @param pattern Either a regex or a string that must be contained in value\n\t */\n\n\tfunction isMatchingPattern(value, pattern) {\n\t if (!isString(value)) {\n\t return false;\n\t }\n\n\t if (isRegExp(pattern)) {\n\t return pattern.test(value);\n\t }\n\n\t if (typeof pattern === 'string') {\n\t return value.indexOf(pattern) !== -1;\n\t }\n\n\t return false;\n\t}\n\n\t/**\n\t * Requires a module which is protected against bundler minification.\n\t *\n\t * @param request The module path to resolve\n\t */\n\n\tfunction dynamicRequire(mod, request) {\n\t // tslint:disable-next-line: no-unsafe-any\n\t return mod.require(request);\n\t}\n\t/**\n\t * Checks whether we're in the Node.js or Browser environment\n\t *\n\t * @returns Answer to given question\n\t */\n\n\tfunction isNodeEnv() {\n\t // tslint:disable:strict-type-predicates\n\t return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\t}\n\tvar fallbackGlobalObject = {};\n\t/**\n\t * Safely get global scope object\n\t *\n\t * @returns Global scope object\n\t */\n\n\tfunction getGlobalObject() {\n\t return isNodeEnv() ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : fallbackGlobalObject;\n\t}\n\t/**\n\t * UUID4 generator\n\t *\n\t * @returns string Generated UUID4.\n\t */\n\n\tfunction uuid4() {\n\t var global = getGlobalObject();\n\t var crypto = global.crypto || global.msCrypto;\n\n\t if (!(crypto === void 0) && crypto.getRandomValues) {\n\t // Use window.crypto API if available\n\t var arr = new Uint16Array(8);\n\t crypto.getRandomValues(arr); // set 4 in byte 7\n\t // tslint:disable-next-line:no-bitwise\n\n\t arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10'\n\t // tslint:disable-next-line:no-bitwise\n\n\t arr[4] = arr[4] & 0x3fff | 0x8000;\n\n\t var pad = function pad(num) {\n\t var v = num.toString(16);\n\n\t while (v.length < 4) {\n\t v = \"0\" + v;\n\t }\n\n\t return v;\n\t };\n\n\t return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]);\n\t } // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n\n\n\t return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t // tslint:disable-next-line:no-bitwise\n\t var r = Math.random() * 16 | 0; // tslint:disable-next-line:no-bitwise\n\n\t var v = c === 'x' ? r : r & 0x3 | 0x8;\n\t return v.toString(16);\n\t });\n\t}\n\t/**\n\t * Parses string form of URL into an object\n\t * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n\t * // intentionally using regex and not <a/> href parsing trick because React Native and other\n\t * // environments where DOM might not be available\n\t * @returns parsed URL object\n\t */\n\n\tfunction parseUrl(url) {\n\t if (!url) {\n\t return {};\n\t }\n\n\t var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n\t if (!match) {\n\t return {};\n\t } // coerce to undefined values to empty string so we don't get 'undefined'\n\n\n\t var query = match[6] || '';\n\t var fragment = match[8] || '';\n\t return {\n\t host: match[4],\n\t path: match[5],\n\t protocol: match[2],\n\t relative: match[5] + query + fragment\n\t };\n\t}\n\t/**\n\t * Extracts either message or type+value from an event that can be used for user-facing logs\n\t * @returns event's description\n\t */\n\n\tfunction getEventDescription(event) {\n\t if (event.message) {\n\t return event.message;\n\t }\n\n\t if (event.exception && event.exception.values && event.exception.values[0]) {\n\t var exception = event.exception.values[0];\n\n\t if (exception.type && exception.value) {\n\t return exception.type + \": \" + exception.value;\n\t }\n\n\t return exception.type || exception.value || event.event_id || '<unknown>';\n\t }\n\n\t return event.event_id || '<unknown>';\n\t}\n\t/** JSDoc */\n\n\tfunction consoleSandbox(callback) {\n\t var global = getGlobalObject();\n\t var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n\t if (!('console' in global)) {\n\t return callback();\n\t }\n\n\t var originalConsole = global.console;\n\t var wrappedLevels = {}; // Restore all wrapped console methods\n\n\t levels.forEach(function (level) {\n\t if (level in global.console && originalConsole[level].__sentry_original__) {\n\t wrappedLevels[level] = originalConsole[level];\n\t originalConsole[level] = originalConsole[level].__sentry_original__;\n\t }\n\t }); // Perform callback manipulations\n\n\t var result = callback(); // Revert restoration to wrapped state\n\n\t Object.keys(wrappedLevels).forEach(function (level) {\n\t originalConsole[level] = wrappedLevels[level];\n\t });\n\t return result;\n\t}\n\t/**\n\t * Adds exception values, type and value to an synthetic Exception.\n\t * @param event The event to modify.\n\t * @param value Value of the exception.\n\t * @param type Type of the exception.\n\t * @hidden\n\t */\n\n\tfunction addExceptionTypeValue(event, value, type) {\n\t event.exception = event.exception || {};\n\t event.exception.values = event.exception.values || [];\n\t event.exception.values[0] = event.exception.values[0] || {};\n\t event.exception.values[0].value = event.exception.values[0].value || value || '';\n\t event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n\t}\n\t/**\n\t * Adds exception mechanism to a given event.\n\t * @param event The event to modify.\n\t * @param mechanism Mechanism of the mechanism.\n\t * @hidden\n\t */\n\n\tfunction addExceptionMechanism(event, mechanism) {\n\t if (mechanism === void 0) {\n\t mechanism = {};\n\t } // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n\n\n\t try {\n\t // @ts-ignore\n\t // tslint:disable:no-non-null-assertion\n\t event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};\n\t Object.keys(mechanism).forEach(function (key) {\n\t // @ts-ignore\n\t event.exception.values[0].mechanism[key] = mechanism[key];\n\t });\n\t } catch (_oO) {// no-empty\n\t }\n\t}\n\t/**\n\t * A safe form of location.href\n\t */\n\n\tfunction getLocationHref() {\n\t try {\n\t return document.location.href;\n\t } catch (oO) {\n\t return '';\n\t }\n\t}\n\t/**\n\t * Given a child DOM element, returns a query-selector statement describing that\n\t * and its ancestors\n\t * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n\t * @returns generated DOM path\n\t */\n\n\tfunction htmlTreeAsString(elem) {\n\t // try/catch both:\n\t // - accessing event.target (see getsentry/raven-js#838, #768)\n\t // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n\t // - can throw an exception in some circumstances.\n\t try {\n\t var currentElem = elem;\n\t var MAX_TRAVERSE_HEIGHT = 5;\n\t var MAX_OUTPUT_LEN = 80;\n\t var out = [];\n\t var height = 0;\n\t var len = 0;\n\t var separator = ' > ';\n\t var sepLength = separator.length;\n\t var nextStr = void 0;\n\n\t while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n\t nextStr = _htmlElementAsString(currentElem); // bail out if\n\t // - nextStr is the 'html' element\n\t // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n\t // (ignore this limit if we are on the first iteration)\n\n\t if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) {\n\t break;\n\t }\n\n\t out.push(nextStr);\n\t len += nextStr.length;\n\t currentElem = currentElem.parentNode;\n\t }\n\n\t return out.reverse().join(separator);\n\t } catch (_oO) {\n\t return '<unknown>';\n\t }\n\t}\n\t/**\n\t * Returns a simple, query-selector representation of a DOM element\n\t * e.g. [HTMLElement] => input#foo.btn[name=baz]\n\t * @returns generated DOM path\n\t */\n\n\tfunction _htmlElementAsString(el) {\n\t var elem = el;\n\t var out = [];\n\t var className;\n\t var classes;\n\t var key;\n\t var attr;\n\t var i;\n\n\t if (!elem || !elem.tagName) {\n\t return '';\n\t }\n\n\t out.push(elem.tagName.toLowerCase());\n\n\t if (elem.id) {\n\t out.push(\"#\" + elem.id);\n\t }\n\n\t className = elem.className;\n\n\t if (className && isString(className)) {\n\t classes = className.split(/\\s+/);\n\n\t for (i = 0; i < classes.length; i++) {\n\t out.push(\".\" + classes[i]);\n\t }\n\t }\n\n\t var attrWhitelist = ['type', 'name', 'title', 'alt'];\n\n\t for (i = 0; i < attrWhitelist.length; i++) {\n\t key = attrWhitelist[i];\n\t attr = elem.getAttribute(key);\n\n\t if (attr) {\n\t out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n\t }\n\t }\n\n\t return out.join('');\n\t}\n\n\tvar INITIAL_TIME = Date.now();\n\tvar prevNow = 0;\n\tvar performanceFallback = {\n\t now: function now() {\n\t var now = Date.now() - INITIAL_TIME;\n\n\t if (now < prevNow) {\n\t now = prevNow;\n\t }\n\n\t prevNow = now;\n\t return now;\n\t },\n\t timeOrigin: INITIAL_TIME\n\t};\n\tvar crossPlatformPerformance = function () {\n\t if (isNodeEnv()) {\n\t try {\n\t var perfHooks = dynamicRequire(module, 'perf_hooks');\n\t return perfHooks.performance;\n\t } catch (_) {\n\t return performanceFallback;\n\t }\n\t }\n\n\t if (getGlobalObject().performance) {\n\t // Polyfill for performance.timeOrigin.\n\t //\n\t // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n\t // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n\t // tslint:disable-next-line:strict-type-predicates\n\t if (performance.timeOrigin === undefined) {\n\t // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n\t // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n\t // @ts-ignore\n\t // tslint:disable-next-line:deprecation\n\t performance.timeOrigin = performance.timing && performance.timing.navigationStart || INITIAL_TIME;\n\t }\n\t }\n\n\t return getGlobalObject().performance || performanceFallback;\n\t}();\n\t/**\n\t * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n\t */\n\n\tfunction timestampWithMs() {\n\t return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n\t} // https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\n\tvar defaultRetryAfter = 60 * 1000; // 60 seconds\n\n\t/**\n\t * Extracts Retry-After value from the request header or returns default value\n\t * @param now current unix timestamp\n\t * @param header string representation of 'Retry-After' header\n\t */\n\n\tfunction parseRetryAfterHeader(now, header) {\n\t if (!header) {\n\t return defaultRetryAfter;\n\t }\n\n\t var headerDelay = parseInt(\"\" + header, 10);\n\n\t if (!isNaN(headerDelay)) {\n\t return headerDelay * 1000;\n\t }\n\n\t var headerDate = Date.parse(\"\" + header);\n\n\t if (!isNaN(headerDate)) {\n\t return headerDate - now;\n\t }\n\n\t return defaultRetryAfter;\n\t}\n\tvar defaultFunctionName = '<anonymous>';\n\t/**\n\t * Safely extract function name from itself\n\t */\n\n\tfunction getFunctionName(fn) {\n\t try {\n\t if (!fn || typeof fn !== 'function') {\n\t return defaultFunctionName;\n\t }\n\n\t return fn.name || defaultFunctionName;\n\t } catch (e) {\n\t // Just accessing custom props in some Selenium environments\n\t // can cause a \"Permission denied\" exception (see raven-js#495).\n\t return defaultFunctionName;\n\t }\n\t}\n\n\tvar global$1 = getGlobalObject();\n\t/** Prefix for logging strings */\n\n\tvar PREFIX = 'Sentry Logger ';\n\t/** JSDoc */\n\n\tvar Logger =\n\t/** @class */\n\tfunction () {\n\t /** JSDoc */\n\t function Logger() {\n\t this._enabled = false;\n\t }\n\t /** JSDoc */\n\n\n\t Logger.prototype.disable = function () {\n\t this._enabled = false;\n\t };\n\t /** JSDoc */\n\n\n\t Logger.prototype.enable = function () {\n\t this._enabled = true;\n\t };\n\t /** JSDoc */\n\n\n\t Logger.prototype.log = function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t if (!this._enabled) {\n\t return;\n\t }\n\n\t consoleSandbox(function () {\n\t global$1.console.log(PREFIX + \"[Log]: \" + args.join(' ')); // tslint:disable-line:no-console\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t Logger.prototype.warn = function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t if (!this._enabled) {\n\t return;\n\t }\n\n\t consoleSandbox(function () {\n\t global$1.console.warn(PREFIX + \"[Warn]: \" + args.join(' ')); // tslint:disable-line:no-console\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t Logger.prototype.error = function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t if (!this._enabled) {\n\t return;\n\t }\n\n\t consoleSandbox(function () {\n\t global$1.console.error(PREFIX + \"[Error]: \" + args.join(' ')); // tslint:disable-line:no-console\n\t });\n\t };\n\n\t return Logger;\n\t}(); // Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\n\n\n\tglobal$1.__SENTRY__ = global$1.__SENTRY__ || {};\n\tvar logger = global$1.__SENTRY__.logger || (global$1.__SENTRY__.logger = new Logger());\n\n\tvar HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('splice');\n\tvar USES_TO_LENGTH$6 = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\n\tvar max$3 = Math.max;\n\tvar min$6 = Math.min;\n\tvar MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n\t// `Array.prototype.splice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n\t// with adding support of @@species\n\t_export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$6 }, {\n\t splice: function splice(start, deleteCount /* , ...items */) {\n\t var O = toObject(this);\n\t var len = toLength(O.length);\n\t var actualStart = toAbsoluteIndex(start, len);\n\t var argumentsLength = arguments.length;\n\t var insertCount, actualDeleteCount, A, k, from, to;\n\t if (argumentsLength === 0) {\n\t insertCount = actualDeleteCount = 0;\n\t } else if (argumentsLength === 1) {\n\t insertCount = 0;\n\t actualDeleteCount = len - actualStart;\n\t } else {\n\t insertCount = argumentsLength - 2;\n\t actualDeleteCount = min$6(max$3(toInteger(deleteCount), 0), len - actualStart);\n\t }\n\t if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) {\n\t throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n\t }\n\t A = arraySpeciesCreate(O, actualDeleteCount);\n\t for (k = 0; k < actualDeleteCount; k++) {\n\t from = actualStart + k;\n\t if (from in O) createProperty(A, k, O[from]);\n\t }\n\t A.length = actualDeleteCount;\n\t if (insertCount < actualDeleteCount) {\n\t for (k = actualStart; k < len - actualDeleteCount; k++) {\n\t from = k + actualDeleteCount;\n\t to = k + insertCount;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n\t } else if (insertCount > actualDeleteCount) {\n\t for (k = len - actualDeleteCount; k > actualStart; k--) {\n\t from = k + actualDeleteCount - 1;\n\t to = k + insertCount - 1;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t }\n\t for (k = 0; k < insertCount; k++) {\n\t O[k + actualStart] = arguments[k + 2];\n\t }\n\t O.length = len - actualDeleteCount + insertCount;\n\t return A;\n\t }\n\t});\n\n\tvar freezing = !fails(function () {\n\t return Object.isExtensible(Object.preventExtensions({}));\n\t});\n\n\tvar internalMetadata = createCommonjsModule(function (module) {\n\tvar defineProperty = objectDefineProperty.f;\n\n\n\n\tvar METADATA = uid('meta');\n\tvar id = 0;\n\n\tvar isExtensible = Object.isExtensible || function () {\n\t return true;\n\t};\n\n\tvar setMetadata = function (it) {\n\t defineProperty(it, METADATA, { value: {\n\t objectID: 'O' + ++id, // object ID\n\t weakData: {} // weak collections IDs\n\t } });\n\t};\n\n\tvar fastKey = function (it, create) {\n\t // return a primitive with prefix\n\t if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\t if (!has(it, METADATA)) {\n\t // can't set metadata to uncaught frozen object\n\t if (!isExtensible(it)) return 'F';\n\t // not necessary to add metadata\n\t if (!create) return 'E';\n\t // add missing metadata\n\t setMetadata(it);\n\t // return object ID\n\t } return it[METADATA].objectID;\n\t};\n\n\tvar getWeakData = function (it, create) {\n\t if (!has(it, METADATA)) {\n\t // can't set metadata to uncaught frozen object\n\t if (!isExtensible(it)) return true;\n\t // not necessary to add metadata\n\t if (!create) return false;\n\t // add missing metadata\n\t setMetadata(it);\n\t // return the store of weak collections IDs\n\t } return it[METADATA].weakData;\n\t};\n\n\t// add metadata on freeze-family methods calling\n\tvar onFreeze = function (it) {\n\t if (freezing && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n\t return it;\n\t};\n\n\tvar meta = module.exports = {\n\t REQUIRED: false,\n\t fastKey: fastKey,\n\t getWeakData: getWeakData,\n\t onFreeze: onFreeze\n\t};\n\n\thiddenKeys[METADATA] = true;\n\t});\n\tvar internalMetadata_1 = internalMetadata.REQUIRED;\n\tvar internalMetadata_2 = internalMetadata.fastKey;\n\tvar internalMetadata_3 = internalMetadata.getWeakData;\n\tvar internalMetadata_4 = internalMetadata.onFreeze;\n\n\tvar collection = function (CONSTRUCTOR_NAME, wrapper, common) {\n\t var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n\t var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n\t var ADDER = IS_MAP ? 'set' : 'add';\n\t var NativeConstructor = global_1[CONSTRUCTOR_NAME];\n\t var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n\t var Constructor = NativeConstructor;\n\t var exported = {};\n\n\t var fixMethod = function (KEY) {\n\t var nativeMethod = NativePrototype[KEY];\n\t redefine(NativePrototype, KEY,\n\t KEY == 'add' ? function add(value) {\n\t nativeMethod.call(this, value === 0 ? 0 : value);\n\t return this;\n\t } : KEY == 'delete' ? function (key) {\n\t return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : KEY == 'get' ? function get(key) {\n\t return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : KEY == 'has' ? function has(key) {\n\t return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : function set(key, value) {\n\t nativeMethod.call(this, key === 0 ? 0 : key, value);\n\t return this;\n\t }\n\t );\n\t };\n\n\t // eslint-disable-next-line max-len\n\t if (isForced_1(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n\t new NativeConstructor().entries().next();\n\t })))) {\n\t // create collection constructor\n\t Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n\t internalMetadata.REQUIRED = true;\n\t } else if (isForced_1(CONSTRUCTOR_NAME, true)) {\n\t var instance = new Constructor();\n\t // early implementations not supports chaining\n\t var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n\t // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n\t var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n\t // most early implementations doesn't supports iterables, most modern - not close it correctly\n\t // eslint-disable-next-line no-new\n\t var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n\t // for early implementations -0 and +0 not the same\n\t var BUGGY_ZERO = !IS_WEAK && fails(function () {\n\t // V8 ~ Chromium 42- fails only with 5+ elements\n\t var $instance = new NativeConstructor();\n\t var index = 5;\n\t while (index--) $instance[ADDER](index, index);\n\t return !$instance.has(-0);\n\t });\n\n\t if (!ACCEPT_ITERABLES) {\n\t Constructor = wrapper(function (dummy, iterable) {\n\t anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n\t var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n\t if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP);\n\t return that;\n\t });\n\t Constructor.prototype = NativePrototype;\n\t NativePrototype.constructor = Constructor;\n\t }\n\n\t if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n\t fixMethod('delete');\n\t fixMethod('has');\n\t IS_MAP && fixMethod('get');\n\t }\n\n\t if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n\t // weak collections should not contains .clear method\n\t if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n\t }\n\n\t exported[CONSTRUCTOR_NAME] = Constructor;\n\t _export({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n\t setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n\t if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n\t return Constructor;\n\t};\n\n\tvar getWeakData = internalMetadata.getWeakData;\n\n\n\n\n\n\n\n\n\tvar setInternalState$8 = internalState.set;\n\tvar internalStateGetterFor = internalState.getterFor;\n\tvar find$1 = arrayIteration.find;\n\tvar findIndex = arrayIteration.findIndex;\n\tvar id$1 = 0;\n\n\t// fallback for uncaught frozen keys\n\tvar uncaughtFrozenStore = function (store) {\n\t return store.frozen || (store.frozen = new UncaughtFrozenStore());\n\t};\n\n\tvar UncaughtFrozenStore = function () {\n\t this.entries = [];\n\t};\n\n\tvar findUncaughtFrozen = function (store, key) {\n\t return find$1(store.entries, function (it) {\n\t return it[0] === key;\n\t });\n\t};\n\n\tUncaughtFrozenStore.prototype = {\n\t get: function (key) {\n\t var entry = findUncaughtFrozen(this, key);\n\t if (entry) return entry[1];\n\t },\n\t has: function (key) {\n\t return !!findUncaughtFrozen(this, key);\n\t },\n\t set: function (key, value) {\n\t var entry = findUncaughtFrozen(this, key);\n\t if (entry) entry[1] = value;\n\t else this.entries.push([key, value]);\n\t },\n\t 'delete': function (key) {\n\t var index = findIndex(this.entries, function (it) {\n\t return it[0] === key;\n\t });\n\t if (~index) this.entries.splice(index, 1);\n\t return !!~index;\n\t }\n\t};\n\n\tvar collectionWeak = {\n\t getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n\t var C = wrapper(function (that, iterable) {\n\t anInstance(that, C, CONSTRUCTOR_NAME);\n\t setInternalState$8(that, {\n\t type: CONSTRUCTOR_NAME,\n\t id: id$1++,\n\t frozen: undefined\n\t });\n\t if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP);\n\t });\n\n\t var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n\t var define = function (that, key, value) {\n\t var state = getInternalState(that);\n\t var data = getWeakData(anObject(key), true);\n\t if (data === true) uncaughtFrozenStore(state).set(key, value);\n\t else data[state.id] = value;\n\t return that;\n\t };\n\n\t redefineAll(C.prototype, {\n\t // 23.3.3.2 WeakMap.prototype.delete(key)\n\t // 23.4.3.3 WeakSet.prototype.delete(value)\n\t 'delete': function (key) {\n\t var state = getInternalState(this);\n\t if (!isObject(key)) return false;\n\t var data = getWeakData(key);\n\t if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n\t return data && has(data, state.id) && delete data[state.id];\n\t },\n\t // 23.3.3.4 WeakMap.prototype.has(key)\n\t // 23.4.3.4 WeakSet.prototype.has(value)\n\t has: function has$1(key) {\n\t var state = getInternalState(this);\n\t if (!isObject(key)) return false;\n\t var data = getWeakData(key);\n\t if (data === true) return uncaughtFrozenStore(state).has(key);\n\t return data && has(data, state.id);\n\t }\n\t });\n\n\t redefineAll(C.prototype, IS_MAP ? {\n\t // 23.3.3.3 WeakMap.prototype.get(key)\n\t get: function get(key) {\n\t var state = getInternalState(this);\n\t if (isObject(key)) {\n\t var data = getWeakData(key);\n\t if (data === true) return uncaughtFrozenStore(state).get(key);\n\t return data ? data[state.id] : undefined;\n\t }\n\t },\n\t // 23.3.3.5 WeakMap.prototype.set(key, value)\n\t set: function set(key, value) {\n\t return define(this, key, value);\n\t }\n\t } : {\n\t // 23.4.3.1 WeakSet.prototype.add(value)\n\t add: function add(value) {\n\t return define(this, value, true);\n\t }\n\t });\n\n\t return C;\n\t }\n\t};\n\n\t// `WeakSet` constructor\n\t// https://tc39.github.io/ecma262/#sec-weakset-constructor\n\tcollection('WeakSet', function (init) {\n\t return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n\t}, collectionWeak);\n\n\t// tslint:disable:no-unsafe-any\n\n\t/**\n\t * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n\t */\n\tvar Memo =\n\t/** @class */\n\tfunction () {\n\t function Memo() {\n\t // tslint:disable-next-line\n\t this._hasWeakSet = typeof WeakSet === 'function';\n\t this._inner = this._hasWeakSet ? new WeakSet() : [];\n\t }\n\t /**\n\t * Sets obj to remember.\n\t * @param obj Object to remember\n\t */\n\n\n\t Memo.prototype.memoize = function (obj) {\n\t if (this._hasWeakSet) {\n\t if (this._inner.has(obj)) {\n\t return true;\n\t }\n\n\t this._inner.add(obj);\n\n\t return false;\n\t } // tslint:disable-next-line:prefer-for-of\n\n\n\t for (var i = 0; i < this._inner.length; i++) {\n\t var value = this._inner[i];\n\n\t if (value === obj) {\n\t return true;\n\t }\n\t }\n\n\t this._inner.push(obj);\n\n\t return false;\n\t };\n\t /**\n\t * Removes object from internal storage.\n\t * @param obj Object to forget\n\t */\n\n\n\t Memo.prototype.unmemoize = function (obj) {\n\t if (this._hasWeakSet) {\n\t this._inner.delete(obj);\n\t } else {\n\t for (var i = 0; i < this._inner.length; i++) {\n\t if (this._inner[i] === obj) {\n\t this._inner.splice(i, 1);\n\n\t break;\n\t }\n\t }\n\t }\n\t };\n\n\t return Memo;\n\t}();\n\n\t// `URL.prototype.toJSON` method\n\t// https://url.spec.whatwg.org/#dom-url-tojson\n\t_export({ target: 'URL', proto: true, enumerable: true }, {\n\t toJSON: function toJSON() {\n\t return URL.prototype.toString.call(this);\n\t }\n\t});\n\n\t/**\n\t * Wrap a given object method with a higher-order function\n\t *\n\t * @param source An object that contains a method to be wrapped.\n\t * @param name A name of method to be wrapped.\n\t * @param replacement A function that should be used to wrap a given method.\n\t * @returns void\n\t */\n\n\tfunction fill(source, name, replacement) {\n\t if (!(name in source)) {\n\t return;\n\t }\n\n\t var original = source[name];\n\t var wrapped = replacement(original); // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n\t // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n\t // tslint:disable-next-line:strict-type-predicates\n\n\t if (typeof wrapped === 'function') {\n\t try {\n\t wrapped.prototype = wrapped.prototype || {};\n\t Object.defineProperties(wrapped, {\n\t __sentry_original__: {\n\t enumerable: false,\n\t value: original\n\t }\n\t });\n\t } catch (_Oo) {// This can throw if multiple fill happens on a global object like XMLHttpRequest\n\t // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n\t }\n\t }\n\n\t source[name] = wrapped;\n\t}\n\t/**\n\t * Encodes given object into url-friendly format\n\t *\n\t * @param object An object that contains serializable values\n\t * @returns string Encoded\n\t */\n\n\tfunction urlEncode(object) {\n\t return Object.keys(object).map( // tslint:disable-next-line:no-unsafe-any\n\t function (key) {\n\t return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]);\n\t }).join('&');\n\t}\n\t/**\n\t * Transforms any object into an object literal with all it's attributes\n\t * attached to it.\n\t *\n\t * @param value Initial source that we have to transform in order to be usable by the serializer\n\t */\n\n\tfunction getWalkSource(value) {\n\t if (isError(value)) {\n\t var error = value;\n\t var err = {\n\t message: error.message,\n\t name: error.name,\n\t stack: error.stack\n\t };\n\n\t for (var i in error) {\n\t if (Object.prototype.hasOwnProperty.call(error, i)) {\n\t err[i] = error[i];\n\t }\n\t }\n\n\t return err;\n\t }\n\n\t if (isEvent(value)) {\n\t var event_1 = value;\n\t var source = {};\n\t source.type = event_1.type; // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n\n\t try {\n\t source.target = isElement(event_1.target) ? htmlTreeAsString(event_1.target) : Object.prototype.toString.call(event_1.target);\n\t } catch (_oO) {\n\t source.target = '<unknown>';\n\t }\n\n\t try {\n\t source.currentTarget = isElement(event_1.currentTarget) ? htmlTreeAsString(event_1.currentTarget) : Object.prototype.toString.call(event_1.currentTarget);\n\t } catch (_oO) {\n\t source.currentTarget = '<unknown>';\n\t } // tslint:disable-next-line:strict-type-predicates\n\n\n\t if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n\t source.detail = event_1.detail;\n\t }\n\n\t for (var i in event_1) {\n\t if (Object.prototype.hasOwnProperty.call(event_1, i)) {\n\t source[i] = event_1;\n\t }\n\t }\n\n\t return source;\n\t }\n\n\t return value;\n\t}\n\t/** Calculates bytes size of input string */\n\n\n\tfunction utf8Length(value) {\n\t // tslint:disable-next-line:no-bitwise\n\t return ~-encodeURI(value).split(/%..|./).length;\n\t}\n\t/** Calculates bytes size of input object */\n\n\n\tfunction jsonSize(value) {\n\t return utf8Length(JSON.stringify(value));\n\t}\n\t/** JSDoc */\n\n\n\tfunction normalizeToSize(object, // Default Node.js REPL depth\n\tdepth, // 100kB, as 200kB is max payload size, so half sounds reasonable\n\tmaxSize) {\n\t if (depth === void 0) {\n\t depth = 3;\n\t }\n\n\t if (maxSize === void 0) {\n\t maxSize = 100 * 1024;\n\t }\n\n\t var serialized = normalize$1(object, depth);\n\n\t if (jsonSize(serialized) > maxSize) {\n\t return normalizeToSize(object, depth - 1, maxSize);\n\t }\n\n\t return serialized;\n\t}\n\t/** Transforms any input value into a string form, either primitive value or a type of the input */\n\n\tfunction serializeValue(value) {\n\t var type = Object.prototype.toString.call(value); // Node.js REPL notation\n\n\t if (typeof value === 'string') {\n\t return value;\n\t }\n\n\t if (type === '[object Object]') {\n\t return '[Object]';\n\t }\n\n\t if (type === '[object Array]') {\n\t return '[Array]';\n\t }\n\n\t var normalized = normalizeValue(value);\n\t return isPrimitive(normalized) ? normalized : type;\n\t}\n\t/**\n\t * normalizeValue()\n\t *\n\t * Takes unserializable input and make it serializable friendly\n\t *\n\t * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n\t * - serializes Error objects\n\t * - filter global objects\n\t */\n\t// tslint:disable-next-line:cyclomatic-complexity\n\n\n\tfunction normalizeValue(value, key) {\n\t if (key === 'domain' && value && _typeof(value) === 'object' && value._events) {\n\t return '[Domain]';\n\t }\n\n\t if (key === 'domainEmitter') {\n\t return '[DomainEmitter]';\n\t }\n\n\t if (typeof global !== 'undefined' && value === global) {\n\t return '[Global]';\n\t }\n\n\t if (typeof window !== 'undefined' && value === window) {\n\t return '[Window]';\n\t }\n\n\t if (typeof document !== 'undefined' && value === document) {\n\t return '[Document]';\n\t } // React's SyntheticEvent thingy\n\n\n\t if (isSyntheticEvent(value)) {\n\t return '[SyntheticEvent]';\n\t } // tslint:disable-next-line:no-tautology-expression\n\n\n\t if (typeof value === 'number' && value !== value) {\n\t return '[NaN]';\n\t }\n\n\t if (value === void 0) {\n\t return '[undefined]';\n\t }\n\n\t if (typeof value === 'function') {\n\t return \"[Function: \" + getFunctionName(value) + \"]\";\n\t }\n\n\t return value;\n\t}\n\t/**\n\t * Walks an object to perform a normalization on it\n\t *\n\t * @param key of object that's walked in current iteration\n\t * @param value object to be walked\n\t * @param depth Optional number indicating how deep should walking be performed\n\t * @param memo Optional Memo class handling decycling\n\t */\n\n\n\tfunction walk(key, value, depth, memo) {\n\t if (depth === void 0) {\n\t depth = +Infinity;\n\t }\n\n\t if (memo === void 0) {\n\t memo = new Memo();\n\t } // If we reach the maximum depth, serialize whatever has left\n\n\n\t if (depth === 0) {\n\t return serializeValue(value);\n\t } // If value implements `toJSON` method, call it and return early\n\t // tslint:disable:no-unsafe-any\n\n\n\t if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n\t return value.toJSON();\n\t } // tslint:enable:no-unsafe-any\n\t // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n\n\n\t var normalized = normalizeValue(value, key);\n\n\t if (isPrimitive(normalized)) {\n\t return normalized;\n\t } // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n\n\n\t var source = getWalkSource(value); // Create an accumulator that will act as a parent for all future itterations of that branch\n\n\t var acc = Array.isArray(value) ? [] : {}; // If we already walked that branch, bail out, as it's circular reference\n\n\t if (memo.memoize(value)) {\n\t return '[Circular ~]';\n\t } // Walk all keys of the source\n\n\n\t for (var innerKey in source) {\n\t // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n\t if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n\t continue;\n\t } // Recursively walk through all the child nodes\n\n\n\t acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n\t } // Once walked through all the branches, remove the parent from memo storage\n\n\n\t memo.unmemoize(value); // Return accumulated values\n\n\t return acc;\n\t}\n\t/**\n\t * normalize()\n\t *\n\t * - Creates a copy to prevent original input mutation\n\t * - Skip non-enumerablers\n\t * - Calls `toJSON` if implemented\n\t * - Removes circular references\n\t * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n\t * - Translates known global objects/Classes to a string representations\n\t * - Takes care of Error objects serialization\n\t * - Optionally limit depth of final output\n\t */\n\n\tfunction normalize$1(input, depth) {\n\t try {\n\t // tslint:disable-next-line:no-unsafe-any\n\t return JSON.parse(JSON.stringify(input, function (key, value) {\n\t return walk(key, value, depth);\n\t }));\n\t } catch (_oO) {\n\t return '**non-serializable**';\n\t }\n\t}\n\t/**\n\t * Given any captured exception, extract its keys and create a sorted\n\t * and truncated list that will be used inside the event message.\n\t * eg. `Non-error exception captured with keys: foo, bar, baz`\n\t */\n\n\tfunction extractExceptionKeysForMessage(exception, maxLength) {\n\t if (maxLength === void 0) {\n\t maxLength = 40;\n\t } // tslint:disable:strict-type-predicates\n\n\n\t var keys = Object.keys(getWalkSource(exception));\n\t keys.sort();\n\n\t if (!keys.length) {\n\t return '[object has no keys]';\n\t }\n\n\t if (keys[0].length >= maxLength) {\n\t return truncate(keys[0], maxLength);\n\t }\n\n\t for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n\t var serialized = keys.slice(0, includedKeys).join(', ');\n\n\t if (serialized.length > maxLength) {\n\t continue;\n\t }\n\n\t if (includedKeys === keys.length) {\n\t return serialized;\n\t }\n\n\t return truncate(serialized, maxLength);\n\t }\n\n\t return '';\n\t}\n\n\tvar $filter$1 = arrayIteration.filter;\n\n\n\n\tvar HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport('filter');\n\t// Edge 14- issue\n\tvar USES_TO_LENGTH$7 = arrayMethodUsesToLength('filter');\n\n\t// `Array.prototype.filter` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t// with adding support of @@species\n\t_export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$7 }, {\n\t filter: function filter(callbackfn /* , thisArg */) {\n\t return $filter$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\n\tvar NON_GENERIC = !!nativePromiseConstructor && fails(function () {\n\t nativePromiseConstructor.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n\t});\n\n\t// `Promise.prototype.finally` method\n\t// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n\t_export({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n\t 'finally': function (onFinally) {\n\t var C = speciesConstructor(this, getBuiltIn('Promise'));\n\t var isFunction = typeof onFinally == 'function';\n\t return this.then(\n\t isFunction ? function (x) {\n\t return promiseResolve(C, onFinally()).then(function () { return x; });\n\t } : onFinally,\n\t isFunction ? function (e) {\n\t return promiseResolve(C, onFinally()).then(function () { throw e; });\n\t } : onFinally\n\t );\n\t }\n\t});\n\n\t// patch native Promise.prototype for native async functions\n\tif ( typeof nativePromiseConstructor == 'function' && !nativePromiseConstructor.prototype['finally']) {\n\t redefine(nativePromiseConstructor.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n\t}\n\n\t/** SyncPromise internal states */\n\n\tvar States;\n\n\t(function (States) {\n\t /** Pending */\n\t States[\"PENDING\"] = \"PENDING\";\n\t /** Resolved / OK */\n\n\t States[\"RESOLVED\"] = \"RESOLVED\";\n\t /** Rejected / Error */\n\n\t States[\"REJECTED\"] = \"REJECTED\";\n\t})(States || (States = {}));\n\t/**\n\t * Thenable class that behaves like a Promise and follows it's interface\n\t * but is not async internally\n\t */\n\n\n\tvar SyncPromise =\n\t/** @class */\n\tfunction () {\n\t function SyncPromise(executor) {\n\t var _this = this;\n\n\t this._state = States.PENDING;\n\t this._handlers = [];\n\t /** JSDoc */\n\n\t this._resolve = function (value) {\n\t _this._setResult(States.RESOLVED, value);\n\t };\n\t /** JSDoc */\n\n\n\t this._reject = function (reason) {\n\t _this._setResult(States.REJECTED, reason);\n\t };\n\t /** JSDoc */\n\n\n\t this._setResult = function (state, value) {\n\t if (_this._state !== States.PENDING) {\n\t return;\n\t }\n\n\t if (isThenable$1(value)) {\n\t value.then(_this._resolve, _this._reject);\n\t return;\n\t }\n\n\t _this._state = state;\n\t _this._value = value;\n\n\t _this._executeHandlers();\n\t }; // TODO: FIXME\n\n\t /** JSDoc */\n\n\n\t this._attachHandler = function (handler) {\n\t _this._handlers = _this._handlers.concat(handler);\n\n\t _this._executeHandlers();\n\t };\n\t /** JSDoc */\n\n\n\t this._executeHandlers = function () {\n\t if (_this._state === States.PENDING) {\n\t return;\n\t }\n\n\t var cachedHandlers = _this._handlers.slice();\n\n\t _this._handlers = [];\n\t cachedHandlers.forEach(function (handler) {\n\t if (handler.done) {\n\t return;\n\t }\n\n\t if (_this._state === States.RESOLVED) {\n\t if (handler.onfulfilled) {\n\t handler.onfulfilled(_this._value);\n\t }\n\t }\n\n\t if (_this._state === States.REJECTED) {\n\t if (handler.onrejected) {\n\t handler.onrejected(_this._value);\n\t }\n\t }\n\n\t handler.done = true;\n\t });\n\t };\n\n\t try {\n\t executor(this._resolve, this._reject);\n\t } catch (e) {\n\t this._reject(e);\n\t }\n\t }\n\t /** JSDoc */\n\n\n\t SyncPromise.prototype.toString = function () {\n\t return '[object SyncPromise]';\n\t };\n\t /** JSDoc */\n\n\n\t SyncPromise.resolve = function (value) {\n\t return new SyncPromise(function (resolve) {\n\t resolve(value);\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t SyncPromise.reject = function (reason) {\n\t return new SyncPromise(function (_, reject) {\n\t reject(reason);\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t SyncPromise.all = function (collection) {\n\t return new SyncPromise(function (resolve, reject) {\n\t if (!Array.isArray(collection)) {\n\t reject(new TypeError(\"Promise.all requires an array as input.\"));\n\t return;\n\t }\n\n\t if (collection.length === 0) {\n\t resolve([]);\n\t return;\n\t }\n\n\t var counter = collection.length;\n\t var resolvedCollection = [];\n\t collection.forEach(function (item, index) {\n\t SyncPromise.resolve(item).then(function (value) {\n\t resolvedCollection[index] = value;\n\t counter -= 1;\n\n\t if (counter !== 0) {\n\t return;\n\t }\n\n\t resolve(resolvedCollection);\n\t }).then(null, reject);\n\t });\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t SyncPromise.prototype.then = function (_onfulfilled, _onrejected) {\n\t var _this = this;\n\n\t return new SyncPromise(function (resolve, reject) {\n\t _this._attachHandler({\n\t done: false,\n\t onfulfilled: function onfulfilled(result) {\n\t if (!_onfulfilled) {\n\t // TODO: ¯\\_(ツ)_/¯\n\t // TODO: FIXME\n\t resolve(result);\n\t return;\n\t }\n\n\t try {\n\t resolve(_onfulfilled(result));\n\t return;\n\t } catch (e) {\n\t reject(e);\n\t return;\n\t }\n\t },\n\t onrejected: function onrejected(reason) {\n\t if (!_onrejected) {\n\t reject(reason);\n\t return;\n\t }\n\n\t try {\n\t resolve(_onrejected(reason));\n\t return;\n\t } catch (e) {\n\t reject(e);\n\t return;\n\t }\n\t }\n\t });\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t SyncPromise.prototype.catch = function (onrejected) {\n\t return this.then(function (val) {\n\t return val;\n\t }, onrejected);\n\t };\n\t /** JSDoc */\n\n\n\t SyncPromise.prototype.finally = function (onfinally) {\n\t var _this = this;\n\n\t return new SyncPromise(function (resolve, reject) {\n\t var val;\n\t var isRejected;\n\t return _this.then(function (value) {\n\t isRejected = false;\n\t val = value;\n\n\t if (onfinally) {\n\t onfinally();\n\t }\n\t }, function (reason) {\n\t isRejected = true;\n\t val = reason;\n\n\t if (onfinally) {\n\t onfinally();\n\t }\n\t }).then(function () {\n\t if (isRejected) {\n\t reject(val);\n\t return;\n\t }\n\n\t resolve(val);\n\t });\n\t });\n\t };\n\n\t return SyncPromise;\n\t}();\n\n\t/** A simple queue that holds promises. */\n\n\tvar PromiseBuffer =\n\t/** @class */\n\tfunction () {\n\t function PromiseBuffer(_limit) {\n\t this._limit = _limit;\n\t /** Internal set of queued Promises */\n\n\t this._buffer = [];\n\t }\n\t /**\n\t * Says if the buffer is ready to take more requests\n\t */\n\n\n\t PromiseBuffer.prototype.isReady = function () {\n\t return this._limit === undefined || this.length() < this._limit;\n\t };\n\t /**\n\t * Add a promise to the queue.\n\t *\n\t * @param task Can be any PromiseLike<T>\n\t * @returns The original promise.\n\t */\n\n\n\t PromiseBuffer.prototype.add = function (task) {\n\t var _this = this;\n\n\t if (!this.isReady()) {\n\t return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n\t }\n\n\t if (this._buffer.indexOf(task) === -1) {\n\t this._buffer.push(task);\n\t }\n\n\t task.then(function () {\n\t return _this.remove(task);\n\t }).then(null, function () {\n\t return _this.remove(task).then(null, function () {// We have to add this catch here otherwise we have an unhandledPromiseRejection\n\t // because it's a new Promise chain.\n\t });\n\t });\n\t return task;\n\t };\n\t /**\n\t * Remove a promise to the queue.\n\t *\n\t * @param task Can be any PromiseLike<T>\n\t * @returns Removed promise.\n\t */\n\n\n\t PromiseBuffer.prototype.remove = function (task) {\n\t var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n\n\t return removedTask;\n\t };\n\t /**\n\t * This function returns the number of unresolved promises in the queue.\n\t */\n\n\n\t PromiseBuffer.prototype.length = function () {\n\t return this._buffer.length;\n\t };\n\t /**\n\t * This will drain the whole queue, returns true if queue is empty or drained.\n\t * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n\t *\n\t * @param timeout Number in ms to wait until it resolves with false.\n\t */\n\n\n\t PromiseBuffer.prototype.drain = function (timeout) {\n\t var _this = this;\n\n\t return new SyncPromise(function (resolve) {\n\t var capturedSetTimeout = setTimeout(function () {\n\t if (timeout && timeout > 0) {\n\t resolve(false);\n\t }\n\t }, timeout);\n\t SyncPromise.all(_this._buffer).then(function () {\n\t clearTimeout(capturedSetTimeout);\n\t resolve(true);\n\t }).then(null, function () {\n\t resolve(true);\n\t });\n\t });\n\t };\n\n\t return PromiseBuffer;\n\t}();\n\n\t/**\n\t * Tells whether current environment supports Fetch API\n\t * {@link supportsFetch}.\n\t *\n\t * @returns Answer to the given question.\n\t */\n\n\tfunction supportsFetch() {\n\t if (!('fetch' in getGlobalObject())) {\n\t return false;\n\t }\n\n\t try {\n\t // tslint:disable-next-line:no-unused-expression\n\t new Headers(); // tslint:disable-next-line:no-unused-expression\n\n\t new Request(''); // tslint:disable-next-line:no-unused-expression\n\n\t new Response();\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\t/**\n\t * isNativeFetch checks if the given function is a native implementation of fetch()\n\t */\n\n\tfunction isNativeFetch(func) {\n\t return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n\t}\n\t/**\n\t * Tells whether current environment supports Fetch API natively\n\t * {@link supportsNativeFetch}.\n\t *\n\t * @returns true if `window.fetch` is natively implemented, false otherwise\n\t */\n\n\n\tfunction supportsNativeFetch() {\n\t if (!supportsFetch()) {\n\t return false;\n\t }\n\n\t var global = getGlobalObject(); // Fast path to avoid DOM I/O\n\t // tslint:disable-next-line:no-unbound-method\n\n\t if (isNativeFetch(global.fetch)) {\n\t return true;\n\t } // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n\t // so create a \"pure\" iframe to see if that has native fetch\n\n\n\t var result = false;\n\t var doc = global.document; // tslint:disable-next-line:no-unbound-method deprecation\n\n\t if (doc && typeof doc.createElement === \"function\") {\n\t try {\n\t var sandbox = doc.createElement('iframe');\n\t sandbox.hidden = true;\n\t doc.head.appendChild(sandbox);\n\n\t if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n\t // tslint:disable-next-line:no-unbound-method\n\t result = isNativeFetch(sandbox.contentWindow.fetch);\n\t }\n\n\t doc.head.removeChild(sandbox);\n\t } catch (err) {\n\t logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n\t }\n\t }\n\n\t return result;\n\t}\n\t/**\n\t * Tells whether current environment supports Referrer Policy API\n\t * {@link supportsReferrerPolicy}.\n\t *\n\t * @returns Answer to the given question.\n\t */\n\n\tfunction supportsReferrerPolicy() {\n\t // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t // https://caniuse.com/#feat=referrer-policy\n\t // It doesn't. And it throw exception instead of ignoring this parameter...\n\t // REF: https://github.com/getsentry/raven-js/issues/1233\n\t if (!supportsFetch()) {\n\t return false;\n\t }\n\n\t try {\n\t // tslint:disable:no-unused-expression\n\t new Request('_', {\n\t referrerPolicy: 'origin'\n\t });\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\t/**\n\t * Tells whether current environment supports History API\n\t * {@link supportsHistory}.\n\t *\n\t * @returns Answer to the given question.\n\t */\n\n\tfunction supportsHistory() {\n\t // NOTE: in Chrome App environment, touching history.pushState, *even inside\n\t // a try/catch block*, will cause Chrome to output an error to console.error\n\t // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n\t var global = getGlobalObject();\n\t var chrome = global.chrome; // tslint:disable-next-line:no-unsafe-any\n\n\t var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n\t var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\t return !isChromePackagedApp && hasHistoryApi;\n\t}\n\n\tvar global$2 = getGlobalObject();\n\t/**\n\t * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n\t * - Console API\n\t * - Fetch API\n\t * - XHR API\n\t * - History API\n\t * - DOM API (click/typing)\n\t * - Error API\n\t * - UnhandledRejection API\n\t */\n\n\tvar handlers = {};\n\tvar instrumented = {};\n\t/** Instruments given API */\n\n\tfunction instrument(type) {\n\t if (instrumented[type]) {\n\t return;\n\t }\n\n\t instrumented[type] = true;\n\n\t switch (type) {\n\t case 'console':\n\t instrumentConsole();\n\t break;\n\n\t case 'dom':\n\t instrumentDOM();\n\t break;\n\n\t case 'xhr':\n\t instrumentXHR();\n\t break;\n\n\t case 'fetch':\n\t instrumentFetch();\n\t break;\n\n\t case 'history':\n\t instrumentHistory();\n\t break;\n\n\t case 'error':\n\t instrumentError();\n\t break;\n\n\t case 'unhandledrejection':\n\t instrumentUnhandledRejection();\n\t break;\n\n\t default:\n\t logger.warn('unknown instrumentation type:', type);\n\t }\n\t}\n\t/**\n\t * Add handler that will be called when given type of instrumentation triggers.\n\t * Use at your own risk, this might break without changelog notice, only used internally.\n\t * @hidden\n\t */\n\n\n\tfunction addInstrumentationHandler(handler) {\n\t // tslint:disable-next-line:strict-type-predicates\n\t if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n\t return;\n\t }\n\n\t handlers[handler.type] = handlers[handler.type] || [];\n\t handlers[handler.type].push(handler.callback);\n\t instrument(handler.type);\n\t}\n\t/** JSDoc */\n\n\tfunction triggerHandlers(type, data) {\n\t var e_1, _a;\n\n\t if (!type || !handlers[type]) {\n\t return;\n\t }\n\n\t try {\n\t for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var handler = _c.value;\n\n\t try {\n\t handler(data);\n\t } catch (e) {\n\t logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n\t }\n\t }\n\t } catch (e_1_1) {\n\t e_1 = {\n\t error: e_1_1\n\t };\n\t } finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t } finally {\n\t if (e_1) throw e_1.error;\n\t }\n\t }\n\t}\n\t/** JSDoc */\n\n\n\tfunction instrumentConsole() {\n\t if (!('console' in global$2)) {\n\t return;\n\t }\n\n\t ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n\t if (!(level in global$2.console)) {\n\t return;\n\t }\n\n\t fill(global$2.console, level, function (originalConsoleLevel) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t triggerHandlers('console', {\n\t args: args,\n\t level: level\n\t }); // this fails for some browsers. :(\n\n\t if (originalConsoleLevel) {\n\t Function.prototype.apply.call(originalConsoleLevel, global$2.console, args);\n\t }\n\t };\n\t });\n\t });\n\t}\n\t/** JSDoc */\n\n\n\tfunction instrumentFetch() {\n\t if (!supportsNativeFetch()) {\n\t return;\n\t }\n\n\t fill(global$2, 'fetch', function (originalFetch) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var commonHandlerData = {\n\t args: args,\n\t fetchData: {\n\t method: getFetchMethod(args),\n\t url: getFetchUrl(args)\n\t },\n\t startTimestamp: Date.now()\n\t };\n\t triggerHandlers('fetch', _assign({}, commonHandlerData));\n\t return originalFetch.apply(global$2, args).then(function (response) {\n\t triggerHandlers('fetch', _assign({}, commonHandlerData, {\n\t endTimestamp: Date.now(),\n\t response: response\n\t }));\n\t return response;\n\t }, function (error) {\n\t triggerHandlers('fetch', _assign({}, commonHandlerData, {\n\t endTimestamp: Date.now(),\n\t error: error\n\t }));\n\t throw error;\n\t });\n\t };\n\t });\n\t}\n\t/** Extract `method` from fetch call arguments */\n\n\n\tfunction getFetchMethod(fetchArgs) {\n\t if (fetchArgs === void 0) {\n\t fetchArgs = [];\n\t }\n\n\t if ('Request' in global$2 && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n\t return String(fetchArgs[0].method).toUpperCase();\n\t }\n\n\t if (fetchArgs[1] && fetchArgs[1].method) {\n\t return String(fetchArgs[1].method).toUpperCase();\n\t }\n\n\t return 'GET';\n\t}\n\t/** Extract `url` from fetch call arguments */\n\n\n\tfunction getFetchUrl(fetchArgs) {\n\t if (fetchArgs === void 0) {\n\t fetchArgs = [];\n\t }\n\n\t if (typeof fetchArgs[0] === 'string') {\n\t return fetchArgs[0];\n\t }\n\n\t if ('Request' in global$2 && isInstanceOf(fetchArgs[0], Request)) {\n\t return fetchArgs[0].url;\n\t }\n\n\t return String(fetchArgs[0]);\n\t}\n\t/** JSDoc */\n\n\n\tfunction instrumentXHR() {\n\t if (!('XMLHttpRequest' in global$2)) {\n\t return;\n\t }\n\n\t var xhrproto = XMLHttpRequest.prototype;\n\t fill(xhrproto, 'open', function (originalOpen) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var url = args[1];\n\t this.__sentry_xhr__ = {\n\t method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n\t url: args[1]\n\t }; // if Sentry key appears in URL, don't capture it as a request\n\n\t if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n\t this.__sentry_own_request__ = true;\n\t }\n\n\t return originalOpen.apply(this, args);\n\t };\n\t });\n\t fill(xhrproto, 'send', function (originalSend) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var xhr = this; // tslint:disable-line:no-this-assignment\n\n\t var commonHandlerData = {\n\t args: args,\n\t startTimestamp: Date.now(),\n\t xhr: xhr\n\t };\n\t triggerHandlers('xhr', _assign({}, commonHandlerData));\n\t xhr.addEventListener('readystatechange', function () {\n\t if (xhr.readyState === 4) {\n\t try {\n\t // touching statusCode in some platforms throws\n\t // an exception\n\t if (xhr.__sentry_xhr__) {\n\t xhr.__sentry_xhr__.status_code = xhr.status;\n\t }\n\t } catch (e) {\n\t /* do nothing */\n\t }\n\n\t triggerHandlers('xhr', _assign({}, commonHandlerData, {\n\t endTimestamp: Date.now()\n\t }));\n\t }\n\t });\n\t return originalSend.apply(this, args);\n\t };\n\t });\n\t}\n\n\tvar lastHref;\n\t/** JSDoc */\n\n\tfunction instrumentHistory() {\n\t if (!supportsHistory()) {\n\t return;\n\t }\n\n\t var oldOnPopState = global$2.onpopstate;\n\n\t global$2.onpopstate = function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var to = global$2.location.href; // keep track of the current URL state, as we always receive only the updated state\n\n\t var from = lastHref;\n\t lastHref = to;\n\t triggerHandlers('history', {\n\t from: from,\n\t to: to\n\t });\n\n\t if (oldOnPopState) {\n\t return oldOnPopState.apply(this, args);\n\t }\n\t };\n\t /** @hidden */\n\n\n\t function historyReplacementFunction(originalHistoryFunction) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var url = args.length > 2 ? args[2] : undefined;\n\n\t if (url) {\n\t // coerce to string (this is what pushState does)\n\t var from = lastHref;\n\t var to = String(url); // keep track of the current URL state, as we always receive only the updated state\n\n\t lastHref = to;\n\t triggerHandlers('history', {\n\t from: from,\n\t to: to\n\t });\n\t }\n\n\t return originalHistoryFunction.apply(this, args);\n\t };\n\t }\n\n\t fill(global$2.history, 'pushState', historyReplacementFunction);\n\t fill(global$2.history, 'replaceState', historyReplacementFunction);\n\t}\n\t/** JSDoc */\n\n\n\tfunction instrumentDOM() {\n\t if (!('document' in global$2)) {\n\t return;\n\t } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n\t // to the document. Do this before we instrument addEventListener.\n\n\n\t global$2.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n\t global$2.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false); // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n\n\t ['EventTarget', 'Node'].forEach(function (target) {\n\t var proto = global$2[target] && global$2[target].prototype;\n\n\t if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n\t return;\n\t }\n\n\t fill(proto, 'addEventListener', function (original) {\n\t return function (eventName, fn, options) {\n\t if (fn && fn.handleEvent) {\n\t if (eventName === 'click') {\n\t fill(fn, 'handleEvent', function (innerOriginal) {\n\t return function (event) {\n\t domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n\t return innerOriginal.call(this, event);\n\t };\n\t });\n\t }\n\n\t if (eventName === 'keypress') {\n\t fill(fn, 'handleEvent', function (innerOriginal) {\n\t return function (event) {\n\t keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n\t return innerOriginal.call(this, event);\n\t };\n\t });\n\t }\n\t } else {\n\t if (eventName === 'click') {\n\t domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n\t }\n\n\t if (eventName === 'keypress') {\n\t keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n\t }\n\t }\n\n\t return original.call(this, eventName, fn, options);\n\t };\n\t });\n\t fill(proto, 'removeEventListener', function (original) {\n\t return function (eventName, fn, options) {\n\t var callback = fn;\n\n\t try {\n\t callback = callback && (callback.__sentry_wrapped__ || callback);\n\t } catch (e) {// ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n\t }\n\n\t return original.call(this, eventName, callback, options);\n\t };\n\t });\n\t });\n\t}\n\n\tvar debounceDuration = 1000;\n\tvar debounceTimer = 0;\n\tvar keypressTimeout;\n\tvar lastCapturedEvent;\n\t/**\n\t * Wraps addEventListener to capture UI breadcrumbs\n\t * @param name the event name (e.g. \"click\")\n\t * @param handler function that will be triggered\n\t * @param debounce decides whether it should wait till another event loop\n\t * @returns wrapped breadcrumb events handler\n\t * @hidden\n\t */\n\n\tfunction domEventHandler(name, handler, debounce) {\n\t if (debounce === void 0) {\n\t debounce = false;\n\t }\n\n\t return function (event) {\n\t // reset keypress timeout; e.g. triggering a 'click' after\n\t // a 'keypress' will reset the keypress debounce so that a new\n\t // set of keypresses can be recorded\n\t keypressTimeout = undefined; // It's possible this handler might trigger multiple times for the same\n\t // event (e.g. event propagation through node ancestors). Ignore if we've\n\t // already captured the event.\n\n\t if (!event || lastCapturedEvent === event) {\n\t return;\n\t }\n\n\t lastCapturedEvent = event;\n\n\t if (debounceTimer) {\n\t clearTimeout(debounceTimer);\n\t }\n\n\t if (debounce) {\n\t debounceTimer = setTimeout(function () {\n\t handler({\n\t event: event,\n\t name: name\n\t });\n\t });\n\t } else {\n\t handler({\n\t event: event,\n\t name: name\n\t });\n\t }\n\t };\n\t}\n\t/**\n\t * Wraps addEventListener to capture keypress UI events\n\t * @param handler function that will be triggered\n\t * @returns wrapped keypress events handler\n\t * @hidden\n\t */\n\n\n\tfunction keypressEventHandler(handler) {\n\t // TODO: if somehow user switches keypress target before\n\t // debounce timeout is triggered, we will only capture\n\t // a single breadcrumb from the FIRST target (acceptable?)\n\t return function (event) {\n\t var target;\n\n\t try {\n\t target = event.target;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\n\t var tagName = target && target.tagName; // only consider keypress events on actual input elements\n\t // this will disregard keypresses targeting body (e.g. tabbing\n\t // through elements, hotkeys, etc)\n\n\t if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) {\n\t return;\n\t } // record first keypress in a series, but ignore subsequent\n\t // keypresses until debounce clears\n\n\n\t if (!keypressTimeout) {\n\t domEventHandler('input', handler)(event);\n\t }\n\n\t clearTimeout(keypressTimeout);\n\t keypressTimeout = setTimeout(function () {\n\t keypressTimeout = undefined;\n\t }, debounceDuration);\n\t };\n\t}\n\n\tvar _oldOnErrorHandler = null;\n\t/** JSDoc */\n\n\tfunction instrumentError() {\n\t _oldOnErrorHandler = global$2.onerror;\n\n\t global$2.onerror = function (msg, url, line, column, error) {\n\t triggerHandlers('error', {\n\t column: column,\n\t error: error,\n\t line: line,\n\t msg: msg,\n\t url: url\n\t });\n\n\t if (_oldOnErrorHandler) {\n\t return _oldOnErrorHandler.apply(this, arguments);\n\t }\n\n\t return false;\n\t };\n\t}\n\n\tvar _oldOnUnhandledRejectionHandler = null;\n\t/** JSDoc */\n\n\tfunction instrumentUnhandledRejection() {\n\t _oldOnUnhandledRejectionHandler = global$2.onunhandledrejection;\n\n\t global$2.onunhandledrejection = function (e) {\n\t triggerHandlers('unhandledrejection', e);\n\n\t if (_oldOnUnhandledRejectionHandler) {\n\t return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n\t }\n\n\t return true;\n\t };\n\t}\n\n\t/** Regular expression used to parse a Dsn. */\n\n\tvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/;\n\t/** Error message */\n\n\tvar ERROR_MESSAGE = 'Invalid Dsn';\n\t/** The Sentry Dsn, identifying a Sentry instance and project. */\n\n\tvar Dsn =\n\t/** @class */\n\tfunction () {\n\t /** Creates a new Dsn component */\n\t function Dsn(from) {\n\t if (typeof from === 'string') {\n\t this._fromString(from);\n\t } else {\n\t this._fromComponents(from);\n\t }\n\n\t this._validate();\n\t }\n\t /**\n\t * Renders the string representation of this Dsn.\n\t *\n\t * By default, this will render the public representation without the password\n\t * component. To get the deprecated private representation, set `withPassword`\n\t * to true.\n\t *\n\t * @param withPassword When set to true, the password will be included.\n\t */\n\n\n\t Dsn.prototype.toString = function (withPassword) {\n\t if (withPassword === void 0) {\n\t withPassword = false;\n\t } // tslint:disable-next-line:no-this-assignment\n\n\n\t var _a = this,\n\t host = _a.host,\n\t path = _a.path,\n\t pass = _a.pass,\n\t port = _a.port,\n\t projectId = _a.projectId,\n\t protocol = _a.protocol,\n\t user = _a.user;\n\n\t return protocol + \"://\" + user + (withPassword && pass ? \":\" + pass : '') + (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId);\n\t };\n\t /** Parses a string into this Dsn. */\n\n\n\t Dsn.prototype._fromString = function (str) {\n\t var match = DSN_REGEX.exec(str);\n\n\t if (!match) {\n\t throw new SentryError(ERROR_MESSAGE);\n\t }\n\n\t var _a = __read(match.slice(1), 6),\n\t protocol = _a[0],\n\t user = _a[1],\n\t _b = _a[2],\n\t pass = _b === void 0 ? '' : _b,\n\t host = _a[3],\n\t _c = _a[4],\n\t port = _c === void 0 ? '' : _c,\n\t lastPath = _a[5];\n\n\t var path = '';\n\t var projectId = lastPath;\n\t var split = projectId.split('/');\n\n\t if (split.length > 1) {\n\t path = split.slice(0, -1).join('/');\n\t projectId = split.pop();\n\t }\n\n\t this._fromComponents({\n\t host: host,\n\t pass: pass,\n\t path: path,\n\t projectId: projectId,\n\t port: port,\n\t protocol: protocol,\n\t user: user\n\t });\n\t };\n\t /** Maps Dsn components into this instance. */\n\n\n\t Dsn.prototype._fromComponents = function (components) {\n\t this.protocol = components.protocol;\n\t this.user = components.user;\n\t this.pass = components.pass || '';\n\t this.host = components.host;\n\t this.port = components.port || '';\n\t this.path = components.path || '';\n\t this.projectId = components.projectId;\n\t };\n\t /** Validates this Dsn and throws on error. */\n\n\n\t Dsn.prototype._validate = function () {\n\t var _this = this;\n\n\t ['protocol', 'user', 'host', 'projectId'].forEach(function (component) {\n\t if (!_this[component]) {\n\t throw new SentryError(ERROR_MESSAGE);\n\t }\n\t });\n\n\t if (this.protocol !== 'http' && this.protocol !== 'https') {\n\t throw new SentryError(ERROR_MESSAGE);\n\t }\n\n\t if (this.port && isNaN(parseInt(this.port, 10))) {\n\t throw new SentryError(ERROR_MESSAGE);\n\t }\n\t };\n\n\t return Dsn;\n\t}();\n\n\t/**\n\t * Holds additional event information. {@link Scope.applyToEvent} will be\n\t * called by the client before an event will be sent.\n\t */\n\n\tvar Scope =\n\t/** @class */\n\tfunction () {\n\t function Scope() {\n\t /** Flag if notifiying is happening. */\n\t this._notifyingListeners = false;\n\t /** Callback for client to receive scope changes. */\n\n\t this._scopeListeners = [];\n\t /** Callback list that will be called after {@link applyToEvent}. */\n\n\t this._eventProcessors = [];\n\t /** Array of breadcrumbs. */\n\n\t this._breadcrumbs = [];\n\t /** User */\n\n\t this._user = {};\n\t /** Tags */\n\n\t this._tags = {};\n\t /** Extra */\n\n\t this._extra = {};\n\t /** Contexts */\n\n\t this._context = {};\n\t }\n\t /**\n\t * Add internal on change listener. Used for sub SDKs that need to store the scope.\n\t * @hidden\n\t */\n\n\n\t Scope.prototype.addScopeListener = function (callback) {\n\t this._scopeListeners.push(callback);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.addEventProcessor = function (callback) {\n\t this._eventProcessors.push(callback);\n\n\t return this;\n\t };\n\t /**\n\t * This will be called on every set call.\n\t */\n\n\n\t Scope.prototype._notifyScopeListeners = function () {\n\t var _this = this;\n\n\t if (!this._notifyingListeners) {\n\t this._notifyingListeners = true;\n\t setTimeout(function () {\n\t _this._scopeListeners.forEach(function (callback) {\n\t callback(_this);\n\t });\n\n\t _this._notifyingListeners = false;\n\t });\n\t }\n\t };\n\t /**\n\t * This will be called after {@link applyToEvent} is finished.\n\t */\n\n\n\t Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n\t var _this = this;\n\n\t if (index === void 0) {\n\t index = 0;\n\t }\n\n\t return new SyncPromise(function (resolve, reject) {\n\t var processor = processors[index]; // tslint:disable-next-line:strict-type-predicates\n\n\t if (event === null || typeof processor !== 'function') {\n\t resolve(event);\n\t } else {\n\t var result = processor(_assign({}, event), hint);\n\n\t if (isThenable$1(result)) {\n\t result.then(function (final) {\n\t return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve);\n\t }).then(null, reject);\n\t } else {\n\t _this._notifyEventProcessors(processors, result, hint, index + 1).then(resolve).then(null, reject);\n\t }\n\t }\n\t });\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setUser = function (user) {\n\t this._user = user || {};\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setTags = function (tags) {\n\t this._tags = _assign({}, this._tags, tags);\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setTag = function (key, value) {\n\t var _a;\n\n\t this._tags = _assign({}, this._tags, (_a = {}, _a[key] = value, _a));\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setExtras = function (extras) {\n\t this._extra = _assign({}, this._extra, extras);\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setExtra = function (key, extra) {\n\t var _a;\n\n\t this._extra = _assign({}, this._extra, (_a = {}, _a[key] = extra, _a));\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setFingerprint = function (fingerprint) {\n\t this._fingerprint = fingerprint;\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setLevel = function (level) {\n\t this._level = level;\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setTransaction = function (transaction) {\n\t this._transaction = transaction;\n\n\t if (this._span) {\n\t this._span.transaction = transaction;\n\t }\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setContext = function (key, context) {\n\t var _a;\n\n\t this._context = _assign({}, this._context, (_a = {}, _a[key] = context, _a));\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.setSpan = function (span) {\n\t this._span = span;\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * Internal getter for Span, used in Hub.\n\t * @hidden\n\t */\n\n\n\t Scope.prototype.getSpan = function () {\n\t return this._span;\n\t };\n\t /**\n\t * Inherit values from the parent scope.\n\t * @param scope to clone.\n\t */\n\n\n\t Scope.clone = function (scope) {\n\t var newScope = new Scope();\n\n\t if (scope) {\n\t newScope._breadcrumbs = __spread(scope._breadcrumbs);\n\t newScope._tags = _assign({}, scope._tags);\n\t newScope._extra = _assign({}, scope._extra);\n\t newScope._context = _assign({}, scope._context);\n\t newScope._user = scope._user;\n\t newScope._level = scope._level;\n\t newScope._span = scope._span;\n\t newScope._transaction = scope._transaction;\n\t newScope._fingerprint = scope._fingerprint;\n\t newScope._eventProcessors = __spread(scope._eventProcessors);\n\t }\n\n\t return newScope;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.clear = function () {\n\t this._breadcrumbs = [];\n\t this._tags = {};\n\t this._extra = {};\n\t this._user = {};\n\t this._context = {};\n\t this._level = undefined;\n\t this._transaction = undefined;\n\t this._fingerprint = undefined;\n\t this._span = undefined;\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n\t var mergedBreadcrumb = _assign({\n\t timestamp: timestampWithMs()\n\t }, breadcrumb);\n\n\t this._breadcrumbs = maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0 ? __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs) : __spread(this._breadcrumbs, [mergedBreadcrumb]);\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Scope.prototype.clearBreadcrumbs = function () {\n\t this._breadcrumbs = [];\n\n\t this._notifyScopeListeners();\n\n\t return this;\n\t };\n\t /**\n\t * Applies fingerprint from the scope to the event if there's one,\n\t * uses message if there's one instead or get rid of empty fingerprint\n\t */\n\n\n\t Scope.prototype._applyFingerprint = function (event) {\n\t // Make sure it's an array first and we actually have something in place\n\t event.fingerprint = event.fingerprint ? Array.isArray(event.fingerprint) ? event.fingerprint : [event.fingerprint] : []; // If we have something on the scope, then merge it with event\n\n\t if (this._fingerprint) {\n\t event.fingerprint = event.fingerprint.concat(this._fingerprint);\n\t } // If we have no data at all, remove empty array default\n\n\n\t if (event.fingerprint && !event.fingerprint.length) {\n\t delete event.fingerprint;\n\t }\n\t };\n\t /**\n\t * Applies the current context and fingerprint to the event.\n\t * Note that breadcrumbs will be added by the client.\n\t * Also if the event has already breadcrumbs on it, we do not merge them.\n\t * @param event Event\n\t * @param hint May contain additional informartion about the original exception.\n\t * @hidden\n\t */\n\n\n\t Scope.prototype.applyToEvent = function (event, hint) {\n\t if (this._extra && Object.keys(this._extra).length) {\n\t event.extra = _assign({}, this._extra, event.extra);\n\t }\n\n\t if (this._tags && Object.keys(this._tags).length) {\n\t event.tags = _assign({}, this._tags, event.tags);\n\t }\n\n\t if (this._user && Object.keys(this._user).length) {\n\t event.user = _assign({}, this._user, event.user);\n\t }\n\n\t if (this._context && Object.keys(this._context).length) {\n\t event.contexts = _assign({}, this._context, event.contexts);\n\t }\n\n\t if (this._level) {\n\t event.level = this._level;\n\t }\n\n\t if (this._transaction) {\n\t event.transaction = this._transaction;\n\t }\n\n\t if (this._span) {\n\t event.contexts = _assign({\n\t trace: this._span.getTraceContext()\n\t }, event.contexts);\n\t }\n\n\t this._applyFingerprint(event);\n\n\t event.breadcrumbs = __spread(event.breadcrumbs || [], this._breadcrumbs);\n\t event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\t return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n\t };\n\n\t return Scope;\n\t}();\n\t/**\n\t * Retruns the global event processors.\n\t */\n\n\tfunction getGlobalEventProcessors() {\n\t var global = getGlobalObject();\n\t global.__SENTRY__ = global.__SENTRY__ || {};\n\t global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n\t return global.__SENTRY__.globalEventProcessors;\n\t}\n\t/**\n\t * Add a EventProcessor to be kept globally.\n\t * @param callback EventProcessor to add\n\t */\n\n\n\tfunction addGlobalEventProcessor(callback) {\n\t getGlobalEventProcessors().push(callback);\n\t}\n\n\t/**\n\t * API compatibility version of this hub.\n\t *\n\t * WARNING: This number should only be incresed when the global interface\n\t * changes a and new methods are introduced.\n\t *\n\t * @hidden\n\t */\n\n\tvar API_VERSION = 3;\n\t/**\n\t * Default maximum number of breadcrumbs added to an event. Can be overwritten\n\t * with {@link Options.maxBreadcrumbs}.\n\t */\n\n\tvar DEFAULT_BREADCRUMBS = 100;\n\t/**\n\t * Absolute maximum number of breadcrumbs added to an event. The\n\t * `maxBreadcrumbs` option cannot be higher than this value.\n\t */\n\n\tvar MAX_BREADCRUMBS = 100;\n\t/**\n\t * @inheritDoc\n\t */\n\n\tvar Hub =\n\t/** @class */\n\tfunction () {\n\t /**\n\t * Creates a new instance of the hub, will push one {@link Layer} into the\n\t * internal stack on creation.\n\t *\n\t * @param client bound to the hub.\n\t * @param scope bound to the hub.\n\t * @param version number, higher number means higher priority.\n\t */\n\t function Hub(client, scope, _version) {\n\t if (scope === void 0) {\n\t scope = new Scope();\n\t }\n\n\t if (_version === void 0) {\n\t _version = API_VERSION;\n\t }\n\n\t this._version = _version;\n\t /** Is a {@link Layer}[] containing the client and scope */\n\n\t this._stack = [];\n\n\t this._stack.push({\n\t client: client,\n\t scope: scope\n\t });\n\t }\n\t /**\n\t * Internal helper function to call a method on the top client if it exists.\n\t *\n\t * @param method The method to call on the client.\n\t * @param args Arguments to pass to the client function.\n\t */\n\n\n\t Hub.prototype._invokeClient = function (method) {\n\t var _a;\n\n\t var args = [];\n\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\n\t var top = this.getStackTop();\n\n\t if (top && top.client && top.client[method]) {\n\t (_a = top.client)[method].apply(_a, __spread(args, [top.scope]));\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.isOlderThan = function (version) {\n\t return this._version < version;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.bindClient = function (client) {\n\t var top = this.getStackTop();\n\t top.client = client;\n\n\t if (client && client.setupIntegrations) {\n\t client.setupIntegrations();\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.pushScope = function () {\n\t // We want to clone the content of prev scope\n\t var stack = this.getStack();\n\t var parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n\t var scope = Scope.clone(parentScope);\n\t this.getStack().push({\n\t client: this.getClient(),\n\t scope: scope\n\t });\n\t return scope;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.popScope = function () {\n\t return this.getStack().pop() !== undefined;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.withScope = function (callback) {\n\t var scope = this.pushScope();\n\n\t try {\n\t callback(scope);\n\t } finally {\n\t this.popScope();\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.getClient = function () {\n\t return this.getStackTop().client;\n\t };\n\t /** Returns the scope of the top stack. */\n\n\n\t Hub.prototype.getScope = function () {\n\t return this.getStackTop().scope;\n\t };\n\t /** Returns the scope stack for domains or the process. */\n\n\n\t Hub.prototype.getStack = function () {\n\t return this._stack;\n\t };\n\t /** Returns the topmost scope layer in the order domain > local > process. */\n\n\n\t Hub.prototype.getStackTop = function () {\n\t return this._stack[this._stack.length - 1];\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.captureException = function (exception, hint) {\n\t var eventId = this._lastEventId = uuid4();\n\t var finalHint = hint; // If there's no explicit hint provided, mimick the same thing that would happen\n\t // in the minimal itself to create a consistent behavior.\n\t // We don't do this in the client, as it's the lowest level API, and doing this,\n\t // would prevent user from having full control over direct calls.\n\n\t if (!hint) {\n\t var syntheticException = void 0;\n\n\t try {\n\t throw new Error('Sentry syntheticException');\n\t } catch (exception) {\n\t syntheticException = exception;\n\t }\n\n\t finalHint = {\n\t originalException: exception,\n\t syntheticException: syntheticException\n\t };\n\t }\n\n\t this._invokeClient('captureException', exception, _assign({}, finalHint, {\n\t event_id: eventId\n\t }));\n\n\t return eventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.captureMessage = function (message, level, hint) {\n\t var eventId = this._lastEventId = uuid4();\n\t var finalHint = hint; // If there's no explicit hint provided, mimick the same thing that would happen\n\t // in the minimal itself to create a consistent behavior.\n\t // We don't do this in the client, as it's the lowest level API, and doing this,\n\t // would prevent user from having full control over direct calls.\n\n\t if (!hint) {\n\t var syntheticException = void 0;\n\n\t try {\n\t throw new Error(message);\n\t } catch (exception) {\n\t syntheticException = exception;\n\t }\n\n\t finalHint = {\n\t originalException: message,\n\t syntheticException: syntheticException\n\t };\n\t }\n\n\t this._invokeClient('captureMessage', message, level, _assign({}, finalHint, {\n\t event_id: eventId\n\t }));\n\n\t return eventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.captureEvent = function (event, hint) {\n\t var eventId = this._lastEventId = uuid4();\n\n\t this._invokeClient('captureEvent', event, _assign({}, hint, {\n\t event_id: eventId\n\t }));\n\n\t return eventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.lastEventId = function () {\n\t return this._lastEventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope || !top.client) {\n\t return;\n\t }\n\n\t var _a = top.client.getOptions && top.client.getOptions() || {},\n\t _b = _a.beforeBreadcrumb,\n\t beforeBreadcrumb = _b === void 0 ? null : _b,\n\t _c = _a.maxBreadcrumbs,\n\t maxBreadcrumbs = _c === void 0 ? DEFAULT_BREADCRUMBS : _c;\n\n\t if (maxBreadcrumbs <= 0) {\n\t return;\n\t }\n\n\t var timestamp = timestampWithMs();\n\n\t var mergedBreadcrumb = _assign({\n\t timestamp: timestamp\n\t }, breadcrumb);\n\n\t var finalBreadcrumb = beforeBreadcrumb ? consoleSandbox(function () {\n\t return beforeBreadcrumb(mergedBreadcrumb, hint);\n\t }) : mergedBreadcrumb;\n\n\t if (finalBreadcrumb === null) {\n\t return;\n\t }\n\n\t top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.setUser = function (user) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope) {\n\t return;\n\t }\n\n\t top.scope.setUser(user);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.setTags = function (tags) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope) {\n\t return;\n\t }\n\n\t top.scope.setTags(tags);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.setExtras = function (extras) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope) {\n\t return;\n\t }\n\n\t top.scope.setExtras(extras);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.setTag = function (key, value) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope) {\n\t return;\n\t }\n\n\t top.scope.setTag(key, value);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.setExtra = function (key, extra) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope) {\n\t return;\n\t }\n\n\t top.scope.setExtra(key, extra);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.setContext = function (name, context) {\n\t var top = this.getStackTop();\n\n\t if (!top.scope) {\n\t return;\n\t }\n\n\t top.scope.setContext(name, context);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.configureScope = function (callback) {\n\t var top = this.getStackTop();\n\n\t if (top.scope && top.client) {\n\t callback(top.scope);\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.run = function (callback) {\n\t var oldHub = makeMain(this);\n\n\t try {\n\t callback(this);\n\t } finally {\n\t makeMain(oldHub);\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.getIntegration = function (integration) {\n\t var client = this.getClient();\n\n\t if (!client) {\n\t return null;\n\t }\n\n\t try {\n\t return client.getIntegration(integration);\n\t } catch (_oO) {\n\t logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n\t return null;\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.startSpan = function (spanOrSpanContext, forceNoChild) {\n\t if (forceNoChild === void 0) {\n\t forceNoChild = false;\n\t }\n\n\t return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Hub.prototype.traceHeaders = function () {\n\t return this._callExtensionMethod('traceHeaders');\n\t };\n\t /**\n\t * Calls global extension method and binding current instance to the function call\n\t */\n\t // @ts-ignore\n\n\n\t Hub.prototype._callExtensionMethod = function (method) {\n\t var args = [];\n\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\n\t var carrier = getMainCarrier();\n\t var sentry = carrier.__SENTRY__; // tslint:disable-next-line: strict-type-predicates\n\n\t if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n\t return sentry.extensions[method].apply(this, args);\n\t }\n\n\t logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n\t };\n\n\t return Hub;\n\t}();\n\t/** Returns the global shim registry. */\n\n\tfunction getMainCarrier() {\n\t var carrier = getGlobalObject();\n\t carrier.__SENTRY__ = carrier.__SENTRY__ || {\n\t extensions: {},\n\t hub: undefined\n\t };\n\t return carrier;\n\t}\n\t/**\n\t * Replaces the current main hub with the passed one on the global object\n\t *\n\t * @returns The old replaced hub\n\t */\n\n\tfunction makeMain(hub) {\n\t var registry = getMainCarrier();\n\t var oldHub = getHubFromCarrier(registry);\n\t setHubOnCarrier(registry, hub);\n\t return oldHub;\n\t}\n\t/**\n\t * Returns the default hub instance.\n\t *\n\t * If a hub is already registered in the global carrier but this module\n\t * contains a more recent version, it replaces the registered version.\n\t * Otherwise, the currently registered hub will be returned.\n\t */\n\n\tfunction getCurrentHub() {\n\t // Get main carrier (global for every environment)\n\t var registry = getMainCarrier(); // If there's no hub, or its an old API, assign a new one\n\n\t if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n\t setHubOnCarrier(registry, new Hub());\n\t } // Prefer domains over global if they are there (applicable only to Node environment)\n\n\n\t if (isNodeEnv()) {\n\t return getHubFromActiveDomain(registry);\n\t } // Return hub that lives on a global object\n\n\n\t return getHubFromCarrier(registry);\n\t}\n\t/**\n\t * Try to read the hub from an active domain, fallback to the registry if one doesnt exist\n\t * @returns discovered hub\n\t */\n\n\tfunction getHubFromActiveDomain(registry) {\n\t try {\n\t var property = 'domain';\n\t var carrier = getMainCarrier();\n\t var sentry = carrier.__SENTRY__; // tslint:disable-next-line: strict-type-predicates\n\n\t if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n\t return getHubFromCarrier(registry);\n\t }\n\n\t var domain = sentry.extensions[property];\n\t var activeDomain = domain.active; // If there no active domain, just return global hub\n\n\t if (!activeDomain) {\n\t return getHubFromCarrier(registry);\n\t } // If there's no hub on current domain, or its an old API, assign a new one\n\n\n\t if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n\t var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n\t setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n\t } // Return hub that lives on a domain\n\n\n\t return getHubFromCarrier(activeDomain);\n\t } catch (_Oo) {\n\t // Return hub that lives on a global object\n\t return getHubFromCarrier(registry);\n\t }\n\t}\n\t/**\n\t * This will tell whether a carrier has a hub on it or not\n\t * @param carrier object\n\t */\n\n\n\tfunction hasHubOnCarrier(carrier) {\n\t if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n\t return true;\n\t }\n\n\t return false;\n\t}\n\t/**\n\t * This will create a new {@link Hub} and add to the passed object on\n\t * __SENTRY__.hub.\n\t * @param carrier object\n\t * @hidden\n\t */\n\n\n\tfunction getHubFromCarrier(carrier) {\n\t if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n\t return carrier.__SENTRY__.hub;\n\t }\n\n\t carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n\t carrier.__SENTRY__.hub = new Hub();\n\t return carrier.__SENTRY__.hub;\n\t}\n\t/**\n\t * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n\t * @param carrier object\n\t * @param hub Hub\n\t */\n\n\tfunction setHubOnCarrier(carrier, hub) {\n\t if (!carrier) {\n\t return false;\n\t }\n\n\t carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n\t carrier.__SENTRY__.hub = hub;\n\t return true;\n\t}\n\n\t/**\n\t * This calls a function on the current hub.\n\t * @param method function to call on hub.\n\t * @param args to pass to function.\n\t */\n\n\tfunction callOnHub(method) {\n\t var args = [];\n\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\n\t var hub = getCurrentHub();\n\n\t if (hub && hub[method]) {\n\t // tslint:disable-next-line:no-unsafe-any\n\t return hub[method].apply(hub, __spread(args));\n\t }\n\n\t throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n\t}\n\t/**\n\t * Captures an exception event and sends it to Sentry.\n\t *\n\t * @param exception An exception-like object.\n\t * @returns The generated eventId.\n\t */\n\n\n\tfunction captureException(exception) {\n\t var syntheticException;\n\n\t try {\n\t throw new Error('Sentry syntheticException');\n\t } catch (exception) {\n\t syntheticException = exception;\n\t }\n\n\t return callOnHub('captureException', exception, {\n\t originalException: exception,\n\t syntheticException: syntheticException\n\t });\n\t}\n\t/**\n\t * Creates a new scope with and executes the given operation within.\n\t * The scope is automatically removed once the operation\n\t * finishes or throws.\n\t *\n\t * This is essentially a convenience function for:\n\t *\n\t * pushScope();\n\t * callback();\n\t * popScope();\n\t *\n\t * @param callback that will be enclosed into push/popScope.\n\t */\n\n\tfunction withScope(callback) {\n\t callOnHub('withScope', callback);\n\t}\n\n\tvar SENTRY_API_VERSION = '7';\n\t/** Helper class to provide urls to different Sentry endpoints. */\n\n\tvar API =\n\t/** @class */\n\tfunction () {\n\t /** Create a new instance of API */\n\t function API(dsn) {\n\t this.dsn = dsn;\n\t this._dsnObject = new Dsn(dsn);\n\t }\n\t /** Returns the Dsn object. */\n\n\n\t API.prototype.getDsn = function () {\n\t return this._dsnObject;\n\t };\n\t /** Returns a string with auth headers in the url to the store endpoint. */\n\n\n\t API.prototype.getStoreEndpoint = function () {\n\t return \"\" + this._getBaseUrl() + this.getStoreEndpointPath();\n\t };\n\t /** Returns the store endpoint with auth added in url encoded. */\n\n\n\t API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n\t var dsn = this._dsnObject;\n\t var auth = {\n\t sentry_key: dsn.user,\n\t sentry_version: SENTRY_API_VERSION\n\t }; // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n\t // to avoid preflight CORS requests\n\n\t return this.getStoreEndpoint() + \"?\" + urlEncode(auth);\n\t };\n\t /** Returns the base path of the url including the port. */\n\n\n\t API.prototype._getBaseUrl = function () {\n\t var dsn = this._dsnObject;\n\t var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n\t var port = dsn.port ? \":\" + dsn.port : '';\n\t return protocol + \"//\" + dsn.host + port;\n\t };\n\t /** Returns only the path component for the store endpoint. */\n\n\n\t API.prototype.getStoreEndpointPath = function () {\n\t var dsn = this._dsnObject;\n\t return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n\t };\n\t /** Returns an object that can be used in request headers. */\n\n\n\t API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n\t var dsn = this._dsnObject;\n\t var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n\t header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n\t header.push(\"sentry_key=\" + dsn.user);\n\n\t if (dsn.pass) {\n\t header.push(\"sentry_secret=\" + dsn.pass);\n\t }\n\n\t return {\n\t 'Content-Type': 'application/json',\n\t 'X-Sentry-Auth': header.join(', ')\n\t };\n\t };\n\t /** Returns the url to the report dialog endpoint. */\n\n\n\t API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n\t if (dialogOptions === void 0) {\n\t dialogOptions = {};\n\t }\n\n\t var dsn = this._dsnObject;\n\t var endpoint = \"\" + this._getBaseUrl() + (dsn.path ? \"/\" + dsn.path : '') + \"/api/embed/error-page/\";\n\t var encodedOptions = [];\n\t encodedOptions.push(\"dsn=\" + dsn.toString());\n\n\t for (var key in dialogOptions) {\n\t if (key === 'user') {\n\t if (!dialogOptions.user) {\n\t continue;\n\t }\n\n\t if (dialogOptions.user.name) {\n\t encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n\t }\n\n\t if (dialogOptions.user.email) {\n\t encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n\t }\n\t } else {\n\t encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n\t }\n\t }\n\n\t if (encodedOptions.length) {\n\t return endpoint + \"?\" + encodedOptions.join('&');\n\t }\n\n\t return endpoint;\n\t };\n\n\t return API;\n\t}();\n\n\tvar installedIntegrations = [];\n\t/** Gets integration to install */\n\n\tfunction getIntegrationsToSetup(options) {\n\t var defaultIntegrations = options.defaultIntegrations && __spread(options.defaultIntegrations) || [];\n\t var userIntegrations = options.integrations;\n\t var integrations = [];\n\n\t if (Array.isArray(userIntegrations)) {\n\t var userIntegrationsNames_1 = userIntegrations.map(function (i) {\n\t return i.name;\n\t });\n\t var pickedIntegrationsNames_1 = []; // Leave only unique default integrations, that were not overridden with provided user integrations\n\n\t defaultIntegrations.forEach(function (defaultIntegration) {\n\t if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 && pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {\n\t integrations.push(defaultIntegration);\n\t pickedIntegrationsNames_1.push(defaultIntegration.name);\n\t }\n\t }); // Don't add same user integration twice\n\n\t userIntegrations.forEach(function (userIntegration) {\n\t if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {\n\t integrations.push(userIntegration);\n\t pickedIntegrationsNames_1.push(userIntegration.name);\n\t }\n\t });\n\t } else if (typeof userIntegrations === 'function') {\n\t integrations = userIntegrations(defaultIntegrations);\n\t integrations = Array.isArray(integrations) ? integrations : [integrations];\n\t } else {\n\t integrations = __spread(defaultIntegrations);\n\t } // Make sure that if present, `Debug` integration will always run last\n\n\n\t var integrationsNames = integrations.map(function (i) {\n\t return i.name;\n\t });\n\t var alwaysLastToRun = 'Debug';\n\n\t if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n\t integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n\t }\n\n\t return integrations;\n\t}\n\t/** Setup given integration */\n\n\tfunction setupIntegration(integration) {\n\t if (installedIntegrations.indexOf(integration.name) !== -1) {\n\t return;\n\t }\n\n\t integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n\t installedIntegrations.push(integration.name);\n\t logger.log(\"Integration installed: \" + integration.name);\n\t}\n\t/**\n\t * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n\t * integrations are added unless they were already provided before.\n\t * @param integrations array of integration instances\n\t * @param withDefault should enable default integrations\n\t */\n\n\tfunction setupIntegrations(options) {\n\t var integrations = {};\n\t getIntegrationsToSetup(options).forEach(function (integration) {\n\t integrations[integration.name] = integration;\n\t setupIntegration(integration);\n\t });\n\t return integrations;\n\t}\n\n\t/**\n\t * Base implementation for all JavaScript SDK clients.\n\t *\n\t * Call the constructor with the corresponding backend constructor and options\n\t * specific to the client subclass. To access these options later, use\n\t * {@link Client.getOptions}. Also, the Backend instance is available via\n\t * {@link Client.getBackend}.\n\t *\n\t * If a Dsn is specified in the options, it will be parsed and stored. Use\n\t * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n\t * invalid, the constructor will throw a {@link SentryException}. Note that\n\t * without a valid Dsn, the SDK will not send any events to Sentry.\n\t *\n\t * Before sending an event via the backend, it is passed through\n\t * {@link BaseClient.prepareEvent} to add SDK information and scope data\n\t * (breadcrumbs and context). To add more custom information, override this\n\t * method and extend the resulting prepared event.\n\t *\n\t * To issue automatically created events (e.g. via instrumentation), use\n\t * {@link Client.captureEvent}. It will prepare the event and pass it through\n\t * the callback lifecycle. To issue auto-breadcrumbs, use\n\t * {@link Client.addBreadcrumb}.\n\t *\n\t * @example\n\t * class NodeClient extends BaseClient<NodeBackend, NodeOptions> {\n\t * public constructor(options: NodeOptions) {\n\t * super(NodeBackend, options);\n\t * }\n\t *\n\t * // ...\n\t * }\n\t */\n\n\tvar BaseClient =\n\t/** @class */\n\tfunction () {\n\t /**\n\t * Initializes this client instance.\n\t *\n\t * @param backendClass A constructor function to create the backend.\n\t * @param options Options for the client.\n\t */\n\t function BaseClient(backendClass, options) {\n\t /** Array of used integrations. */\n\t this._integrations = {};\n\t /** Is the client still processing a call? */\n\n\t this._processing = false;\n\t this._backend = new backendClass(options);\n\t this._options = options;\n\n\t if (options.dsn) {\n\t this._dsn = new Dsn(options.dsn);\n\t }\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.captureException = function (exception, hint, scope) {\n\t var _this = this;\n\n\t var eventId = hint && hint.event_id;\n\t this._processing = true;\n\n\t this._getBackend().eventFromException(exception, hint).then(function (event) {\n\t return _this._processEvent(event, hint, scope);\n\t }).then(function (finalEvent) {\n\t // We need to check for finalEvent in case beforeSend returned null\n\t eventId = finalEvent && finalEvent.event_id;\n\t _this._processing = false;\n\t }).then(null, function (reason) {\n\t logger.error(reason);\n\t _this._processing = false;\n\t });\n\n\t return eventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n\t var _this = this;\n\n\t var eventId = hint && hint.event_id;\n\t this._processing = true;\n\t var promisedEvent = isPrimitive(message) ? this._getBackend().eventFromMessage(\"\" + message, level, hint) : this._getBackend().eventFromException(message, hint);\n\t promisedEvent.then(function (event) {\n\t return _this._processEvent(event, hint, scope);\n\t }).then(function (finalEvent) {\n\t // We need to check for finalEvent in case beforeSend returned null\n\t eventId = finalEvent && finalEvent.event_id;\n\t _this._processing = false;\n\t }).then(null, function (reason) {\n\t logger.error(reason);\n\t _this._processing = false;\n\t });\n\t return eventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.captureEvent = function (event, hint, scope) {\n\t var _this = this;\n\n\t var eventId = hint && hint.event_id;\n\t this._processing = true;\n\n\t this._processEvent(event, hint, scope).then(function (finalEvent) {\n\t // We need to check for finalEvent in case beforeSend returned null\n\t eventId = finalEvent && finalEvent.event_id;\n\t _this._processing = false;\n\t }).then(null, function (reason) {\n\t logger.error(reason);\n\t _this._processing = false;\n\t });\n\n\t return eventId;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.getDsn = function () {\n\t return this._dsn;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.getOptions = function () {\n\t return this._options;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.flush = function (timeout) {\n\t var _this = this;\n\n\t return this._isClientProcessing(timeout).then(function (status) {\n\t clearInterval(status.interval);\n\t return _this._getBackend().getTransport().close(timeout).then(function (transportFlushed) {\n\t return status.ready && transportFlushed;\n\t });\n\t });\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.close = function (timeout) {\n\t var _this = this;\n\n\t return this.flush(timeout).then(function (result) {\n\t _this.getOptions().enabled = false;\n\t return result;\n\t });\n\t };\n\t /**\n\t * Sets up the integrations\n\t */\n\n\n\t BaseClient.prototype.setupIntegrations = function () {\n\t if (this._isEnabled()) {\n\t this._integrations = setupIntegrations(this._options);\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseClient.prototype.getIntegration = function (integration) {\n\t try {\n\t return this._integrations[integration.id] || null;\n\t } catch (_oO) {\n\t logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n\t return null;\n\t }\n\t };\n\t /** Waits for the client to be done with processing. */\n\n\n\t BaseClient.prototype._isClientProcessing = function (timeout) {\n\t var _this = this;\n\n\t return new SyncPromise(function (resolve) {\n\t var ticked = 0;\n\t var tick = 1;\n\t var interval = 0;\n\t clearInterval(interval);\n\t interval = setInterval(function () {\n\t if (!_this._processing) {\n\t resolve({\n\t interval: interval,\n\t ready: true\n\t });\n\t } else {\n\t ticked += tick;\n\n\t if (timeout && ticked >= timeout) {\n\t resolve({\n\t interval: interval,\n\t ready: false\n\t });\n\t }\n\t }\n\t }, tick);\n\t });\n\t };\n\t /** Returns the current backend. */\n\n\n\t BaseClient.prototype._getBackend = function () {\n\t return this._backend;\n\t };\n\t /** Determines whether this SDK is enabled and a valid Dsn is present. */\n\n\n\t BaseClient.prototype._isEnabled = function () {\n\t return this.getOptions().enabled !== false && this._dsn !== undefined;\n\t };\n\t /**\n\t * Adds common information to events.\n\t *\n\t * The information includes release and environment from `options`,\n\t * breadcrumbs and context (extra, tags and user) from the scope.\n\t *\n\t * Information that is already present in the event is never overwritten. For\n\t * nested objects, such as the context, keys are merged.\n\t *\n\t * @param event The original event.\n\t * @param hint May contain additional informartion about the original exception.\n\t * @param scope A scope containing event metadata.\n\t * @returns A new event with more information.\n\t */\n\n\n\t BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n\t var _this = this;\n\n\t var _a = this.getOptions(),\n\t environment = _a.environment,\n\t release = _a.release,\n\t dist = _a.dist,\n\t _b = _a.maxValueLength,\n\t maxValueLength = _b === void 0 ? 250 : _b,\n\t _c = _a.normalizeDepth,\n\t normalizeDepth = _c === void 0 ? 3 : _c;\n\n\t var prepared = _assign({}, event);\n\n\t if (prepared.environment === undefined && environment !== undefined) {\n\t prepared.environment = environment;\n\t }\n\n\t if (prepared.release === undefined && release !== undefined) {\n\t prepared.release = release;\n\t }\n\n\t if (prepared.dist === undefined && dist !== undefined) {\n\t prepared.dist = dist;\n\t }\n\n\t if (prepared.message) {\n\t prepared.message = truncate(prepared.message, maxValueLength);\n\t }\n\n\t var exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n\n\t if (exception && exception.value) {\n\t exception.value = truncate(exception.value, maxValueLength);\n\t }\n\n\t var request = prepared.request;\n\n\t if (request && request.url) {\n\t request.url = truncate(request.url, maxValueLength);\n\t }\n\n\t if (prepared.event_id === undefined) {\n\t prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4();\n\t }\n\n\t this._addIntegrations(prepared.sdk); // We prepare the result here with a resolved Event.\n\n\n\t var result = SyncPromise.resolve(prepared); // This should be the last thing called, since we want that\n\t // {@link Hub.addEventProcessor} gets the finished prepared event.\n\n\t if (scope) {\n\t // In case we have a hub we reassign it.\n\t result = scope.applyToEvent(prepared, hint);\n\t }\n\n\t return result.then(function (evt) {\n\t // tslint:disable-next-line:strict-type-predicates\n\t if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n\t return _this._normalizeEvent(evt, normalizeDepth);\n\t }\n\n\t return evt;\n\t });\n\t };\n\t /**\n\t * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n\t * Normalized keys:\n\t * - `breadcrumbs.data`\n\t * - `user`\n\t * - `contexts`\n\t * - `extra`\n\t * @param event Event\n\t * @returns Normalized event\n\t */\n\n\n\t BaseClient.prototype._normalizeEvent = function (event, depth) {\n\t if (!event) {\n\t return null;\n\t } // tslint:disable:no-unsafe-any\n\n\n\t return _assign({}, event, event.breadcrumbs && {\n\t breadcrumbs: event.breadcrumbs.map(function (b) {\n\t return _assign({}, b, b.data && {\n\t data: normalize$1(b.data, depth)\n\t });\n\t })\n\t }, event.user && {\n\t user: normalize$1(event.user, depth)\n\t }, event.contexts && {\n\t contexts: normalize$1(event.contexts, depth)\n\t }, event.extra && {\n\t extra: normalize$1(event.extra, depth)\n\t });\n\t };\n\t /**\n\t * This function adds all used integrations to the SDK info in the event.\n\t * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n\t */\n\n\n\t BaseClient.prototype._addIntegrations = function (sdkInfo) {\n\t var integrationsArray = Object.keys(this._integrations);\n\n\t if (sdkInfo && integrationsArray.length > 0) {\n\t sdkInfo.integrations = integrationsArray;\n\t }\n\t };\n\t /**\n\t * Processes an event (either error or message) and sends it to Sentry.\n\t *\n\t * This also adds breadcrumbs and context information to the event. However,\n\t * platform specific meta data (such as the User's IP address) must be added\n\t * by the SDK implementor.\n\t *\n\t *\n\t * @param event The event to send to Sentry.\n\t * @param hint May contain additional informartion about the original exception.\n\t * @param scope A scope containing event metadata.\n\t * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n\t */\n\n\n\t BaseClient.prototype._processEvent = function (event, hint, scope) {\n\t var _this = this;\n\n\t var _a = this.getOptions(),\n\t beforeSend = _a.beforeSend,\n\t sampleRate = _a.sampleRate;\n\n\t if (!this._isEnabled()) {\n\t return SyncPromise.reject('SDK not enabled, will not send event.');\n\t } // 1.0 === 100% events are sent\n\t // 0.0 === 0% events are sent\n\n\n\t if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n\t return SyncPromise.reject('This event has been sampled, will not send event.');\n\t }\n\n\t return new SyncPromise(function (resolve, reject) {\n\t _this._prepareEvent(event, scope, hint).then(function (prepared) {\n\t if (prepared === null) {\n\t reject('An event processor returned null, will not send event.');\n\t return;\n\t }\n\n\t var finalEvent = prepared;\n\t var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n\n\t if (isInternalException || !beforeSend) {\n\t _this._getBackend().sendEvent(finalEvent);\n\n\t resolve(finalEvent);\n\t return;\n\t }\n\n\t var beforeSendResult = beforeSend(prepared, hint); // tslint:disable-next-line:strict-type-predicates\n\n\t if (typeof beforeSendResult === 'undefined') {\n\t logger.error('`beforeSend` method has to return `null` or a valid event.');\n\t } else if (isThenable$1(beforeSendResult)) {\n\t _this._handleAsyncBeforeSend(beforeSendResult, resolve, reject);\n\t } else {\n\t finalEvent = beforeSendResult;\n\n\t if (finalEvent === null) {\n\t logger.log('`beforeSend` returned `null`, will not send event.');\n\t resolve(null);\n\t return;\n\t } // From here on we are really async\n\n\n\t _this._getBackend().sendEvent(finalEvent);\n\n\t resolve(finalEvent);\n\t }\n\t }).then(null, function (reason) {\n\t _this.captureException(reason, {\n\t data: {\n\t __sentry__: true\n\t },\n\t originalException: reason\n\t });\n\n\t reject(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n\t });\n\t });\n\t };\n\t /**\n\t * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n\t */\n\n\n\t BaseClient.prototype._handleAsyncBeforeSend = function (beforeSend, resolve, reject) {\n\t var _this = this;\n\n\t beforeSend.then(function (processedEvent) {\n\t if (processedEvent === null) {\n\t reject('`beforeSend` returned `null`, will not send event.');\n\t return;\n\t } // From here on we are really async\n\n\n\t _this._getBackend().sendEvent(processedEvent);\n\n\t resolve(processedEvent);\n\t }).then(null, function (e) {\n\t reject(\"beforeSend rejected with \" + e);\n\t });\n\t };\n\n\t return BaseClient;\n\t}();\n\n\t/** Noop transport */\n\n\tvar NoopTransport =\n\t/** @class */\n\tfunction () {\n\t function NoopTransport() {}\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t NoopTransport.prototype.sendEvent = function (_) {\n\t return SyncPromise.resolve({\n\t reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n\t status: Status.Skipped\n\t });\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t NoopTransport.prototype.close = function (_) {\n\t return SyncPromise.resolve(true);\n\t };\n\n\t return NoopTransport;\n\t}();\n\n\t/**\n\t * This is the base implemention of a Backend.\n\t * @hidden\n\t */\n\n\tvar BaseBackend =\n\t/** @class */\n\tfunction () {\n\t /** Creates a new backend instance. */\n\t function BaseBackend(options) {\n\t this._options = options;\n\n\t if (!this._options.dsn) {\n\t logger.warn('No DSN provided, backend will not do anything.');\n\t }\n\n\t this._transport = this._setupTransport();\n\t }\n\t /**\n\t * Sets up the transport so it can be used later to send requests.\n\t */\n\n\n\t BaseBackend.prototype._setupTransport = function () {\n\t return new NoopTransport();\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n\t throw new SentryError('Backend has to implement `eventFromException` method');\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n\t throw new SentryError('Backend has to implement `eventFromMessage` method');\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseBackend.prototype.sendEvent = function (event) {\n\t this._transport.sendEvent(event).then(null, function (reason) {\n\t logger.error(\"Error while sending event: \" + reason);\n\t });\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseBackend.prototype.getTransport = function () {\n\t return this._transport;\n\t };\n\n\t return BaseBackend;\n\t}();\n\n\t/**\n\t * Internal function to create a new SDK client instance. The client is\n\t * installed and then bound to the current scope.\n\t *\n\t * @param clientClass The client class to instanciate.\n\t * @param options Options to pass to the client.\n\t */\n\n\tfunction initAndBind(clientClass, options) {\n\t if (options.debug === true) {\n\t logger.enable();\n\t }\n\n\t var hub = getCurrentHub();\n\t var client = new clientClass(options);\n\t hub.bindClient(client);\n\t}\n\n\tvar originalFunctionToString;\n\t/** Patch toString calls to return proper name for wrapped functions */\n\n\tvar FunctionToString =\n\t/** @class */\n\tfunction () {\n\t function FunctionToString() {\n\t /**\n\t * @inheritDoc\n\t */\n\t this.name = FunctionToString.id;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t FunctionToString.prototype.setupOnce = function () {\n\t originalFunctionToString = Function.prototype.toString;\n\n\t Function.prototype.toString = function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var context = this.__sentry_original__ || this; // tslint:disable-next-line:no-unsafe-any\n\n\t return originalFunctionToString.apply(context, args);\n\t };\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t FunctionToString.id = 'FunctionToString';\n\t return FunctionToString;\n\t}();\n\n\tvar $some$1 = arrayIteration.some;\n\n\n\n\tvar STRICT_METHOD$4 = arrayMethodIsStrict('some');\n\tvar USES_TO_LENGTH$8 = arrayMethodUsesToLength('some');\n\n\t// `Array.prototype.some` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t_export({ target: 'Array', proto: true, forced: !STRICT_METHOD$4 || !USES_TO_LENGTH$8 }, {\n\t some: function some(callbackfn /* , thisArg */) {\n\t return $some$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// this is the result of a script being pulled in from an external domain and CORS.\n\n\tvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\t/** Inbound filters configurable by the user */\n\n\tvar InboundFilters =\n\t/** @class */\n\tfunction () {\n\t function InboundFilters(_options) {\n\t if (_options === void 0) {\n\t _options = {};\n\t }\n\n\t this._options = _options;\n\t /**\n\t * @inheritDoc\n\t */\n\n\t this.name = InboundFilters.id;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t InboundFilters.prototype.setupOnce = function () {\n\t addGlobalEventProcessor(function (event) {\n\t var hub = getCurrentHub();\n\n\t if (!hub) {\n\t return event;\n\t }\n\n\t var self = hub.getIntegration(InboundFilters);\n\n\t if (self) {\n\t var client = hub.getClient();\n\t var clientOptions = client ? client.getOptions() : {};\n\n\t var options = self._mergeOptions(clientOptions);\n\n\t if (self._shouldDropEvent(event, options)) {\n\t return null;\n\t }\n\t }\n\n\t return event;\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._shouldDropEvent = function (event, options) {\n\t if (this._isSentryError(event, options)) {\n\t logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n\t return true;\n\t }\n\n\t if (this._isIgnoredError(event, options)) {\n\t logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n\t return true;\n\t }\n\n\t if (this._isBlacklistedUrl(event, options)) {\n\t logger.warn(\"Event dropped due to being matched by `blacklistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n\t return true;\n\t }\n\n\t if (!this._isWhitelistedUrl(event, options)) {\n\t logger.warn(\"Event dropped due to not being matched by `whitelistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n\t return true;\n\t }\n\n\t return false;\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._isSentryError = function (event, options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t if (!options.ignoreInternal) {\n\t return false;\n\t }\n\n\t try {\n\t return event && event.exception && event.exception.values && event.exception.values[0] && event.exception.values[0].type === 'SentryError' || false;\n\t } catch (_oO) {\n\t return false;\n\t }\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._isIgnoredError = function (event, options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t if (!options.ignoreErrors || !options.ignoreErrors.length) {\n\t return false;\n\t }\n\n\t return this._getPossibleEventMessages(event).some(function (message) {\n\t // Not sure why TypeScript complains here...\n\t return options.ignoreErrors.some(function (pattern) {\n\t return isMatchingPattern(message, pattern);\n\t });\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._isBlacklistedUrl = function (event, options) {\n\t if (options === void 0) {\n\t options = {};\n\t } // TODO: Use Glob instead?\n\n\n\t if (!options.blacklistUrls || !options.blacklistUrls.length) {\n\t return false;\n\t }\n\n\t var url = this._getEventFilterUrl(event);\n\n\t return !url ? false : options.blacklistUrls.some(function (pattern) {\n\t return isMatchingPattern(url, pattern);\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._isWhitelistedUrl = function (event, options) {\n\t if (options === void 0) {\n\t options = {};\n\t } // TODO: Use Glob instead?\n\n\n\t if (!options.whitelistUrls || !options.whitelistUrls.length) {\n\t return true;\n\t }\n\n\t var url = this._getEventFilterUrl(event);\n\n\t return !url ? true : options.whitelistUrls.some(function (pattern) {\n\t return isMatchingPattern(url, pattern);\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._mergeOptions = function (clientOptions) {\n\t if (clientOptions === void 0) {\n\t clientOptions = {};\n\t }\n\n\t return {\n\t blacklistUrls: __spread(this._options.blacklistUrls || [], clientOptions.blacklistUrls || []),\n\t ignoreErrors: __spread(this._options.ignoreErrors || [], clientOptions.ignoreErrors || [], DEFAULT_IGNORE_ERRORS),\n\t ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n\t whitelistUrls: __spread(this._options.whitelistUrls || [], clientOptions.whitelistUrls || [])\n\t };\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._getPossibleEventMessages = function (event) {\n\t if (event.message) {\n\t return [event.message];\n\t }\n\n\t if (event.exception) {\n\t try {\n\t var _a = event.exception.values && event.exception.values[0] || {},\n\t _b = _a.type,\n\t type = _b === void 0 ? '' : _b,\n\t _c = _a.value,\n\t value = _c === void 0 ? '' : _c;\n\n\t return [\"\" + value, type + \": \" + value];\n\t } catch (oO) {\n\t logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n\t return [];\n\t }\n\t }\n\n\t return [];\n\t };\n\t /** JSDoc */\n\n\n\t InboundFilters.prototype._getEventFilterUrl = function (event) {\n\t try {\n\t if (event.stacktrace) {\n\t var frames_1 = event.stacktrace.frames;\n\t return frames_1 && frames_1[frames_1.length - 1].filename || null;\n\t }\n\n\t if (event.exception) {\n\t var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n\t return frames_2 && frames_2[frames_2.length - 1].filename || null;\n\t }\n\n\t return null;\n\t } catch (oO) {\n\t logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n\t return null;\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t InboundFilters.id = 'InboundFilters';\n\t return InboundFilters;\n\t}();\n\n\tvar UNKNOWN_FUNCTION = '?'; // Chromium based browsers: Chrome, Brave, new Opera, new Edge\n\n\tvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i; // gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n\t// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n\t// We need this specific case for now because we want no other regex to match.\n\n\tvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n\tvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\tvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\tvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\t/** JSDoc */\n\n\tfunction computeStackTrace(ex) {\n\t // tslint:disable:no-unsafe-any\n\t var stack = null;\n\t var popSize = ex && ex.framesToPop;\n\n\t try {\n\t // This must be tried first because Opera 10 *destroys*\n\t // its stacktrace property if you try to access the stack\n\t // property first!!\n\t stack = computeStackTraceFromStacktraceProp(ex);\n\n\t if (stack) {\n\t return popFrames(stack, popSize);\n\t }\n\t } catch (e) {// no-empty\n\t }\n\n\t try {\n\t stack = computeStackTraceFromStackProp(ex);\n\n\t if (stack) {\n\t return popFrames(stack, popSize);\n\t }\n\t } catch (e) {// no-empty\n\t }\n\n\t return {\n\t message: extractMessage(ex),\n\t name: ex && ex.name,\n\t stack: [],\n\t failed: true\n\t };\n\t}\n\t/** JSDoc */\n\t// tslint:disable-next-line:cyclomatic-complexity\n\n\tfunction computeStackTraceFromStackProp(ex) {\n\t // tslint:disable:no-conditional-assignment\n\t if (!ex || !ex.stack) {\n\t return null;\n\t }\n\n\t var stack = [];\n\t var lines = ex.stack.split('\\n');\n\t var isEval;\n\t var submatch;\n\t var parts;\n\t var element;\n\n\t for (var i = 0; i < lines.length; ++i) {\n\t if (parts = chrome.exec(lines[i])) {\n\t var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n\t isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n\t if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n\t // throw out eval line/column and use top-most line/column number\n\t parts[2] = submatch[1]; // url\n\n\t parts[3] = submatch[2]; // line\n\n\t parts[4] = submatch[3]; // column\n\t }\n\n\t element = {\n\t // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n\t // prefix here seems like the quickest solution for now.\n\t url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: isNative ? [parts[2]] : [],\n\t line: parts[3] ? +parts[3] : null,\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if (parts = winjs.exec(lines[i])) {\n\t element = {\n\t url: parts[2],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: [],\n\t line: +parts[3],\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if (parts = gecko.exec(lines[i])) {\n\t isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\n\t if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n\t // throw out eval line/column and use top-most line number\n\t parts[1] = parts[1] || \"eval\";\n\t parts[3] = submatch[1];\n\t parts[4] = submatch[2];\n\t parts[5] = ''; // no column when eval\n\t } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n\t // FireFox uses this awesome columnNumber property for its top frame\n\t // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n\t // so adding 1\n\t // NOTE: this hack doesn't work if top-most frame is eval\n\t stack[0].column = ex.columnNumber + 1;\n\t }\n\n\t element = {\n\t url: parts[3],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: parts[2] ? parts[2].split(',') : [],\n\t line: parts[4] ? +parts[4] : null,\n\t column: parts[5] ? +parts[5] : null\n\t };\n\t } else {\n\t continue;\n\t }\n\n\t if (!element.func && element.line) {\n\t element.func = UNKNOWN_FUNCTION;\n\t }\n\n\t stack.push(element);\n\t }\n\n\t if (!stack.length) {\n\t return null;\n\t }\n\n\t return {\n\t message: extractMessage(ex),\n\t name: ex.name,\n\t stack: stack\n\t };\n\t}\n\t/** JSDoc */\n\n\n\tfunction computeStackTraceFromStacktraceProp(ex) {\n\t if (!ex || !ex.stacktrace) {\n\t return null;\n\t } // Access and store the stacktrace property before doing ANYTHING\n\t // else to it because Opera is not very good at providing it\n\t // reliably in other circumstances.\n\n\n\t var stacktrace = ex.stacktrace;\n\t var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\t var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i;\n\t var lines = stacktrace.split('\\n');\n\t var stack = [];\n\t var parts;\n\n\t for (var line = 0; line < lines.length; line += 2) {\n\t // tslint:disable:no-conditional-assignment\n\t var element = null;\n\n\t if (parts = opera10Regex.exec(lines[line])) {\n\t element = {\n\t url: parts[2],\n\t func: parts[3],\n\t args: [],\n\t line: +parts[1],\n\t column: null\n\t };\n\t } else if (parts = opera11Regex.exec(lines[line])) {\n\t element = {\n\t url: parts[6],\n\t func: parts[3] || parts[4],\n\t args: parts[5] ? parts[5].split(',') : [],\n\t line: +parts[1],\n\t column: +parts[2]\n\t };\n\t }\n\n\t if (element) {\n\t if (!element.func && element.line) {\n\t element.func = UNKNOWN_FUNCTION;\n\t }\n\n\t stack.push(element);\n\t }\n\t }\n\n\t if (!stack.length) {\n\t return null;\n\t }\n\n\t return {\n\t message: extractMessage(ex),\n\t name: ex.name,\n\t stack: stack\n\t };\n\t}\n\t/** Remove N number of frames from the stack */\n\n\n\tfunction popFrames(stacktrace, popSize) {\n\t try {\n\t return _assign({}, stacktrace, {\n\t stack: stacktrace.stack.slice(popSize)\n\t });\n\t } catch (e) {\n\t return stacktrace;\n\t }\n\t}\n\t/**\n\t * There are cases where stacktrace.message is an Event object\n\t * https://github.com/getsentry/sentry-javascript/issues/1949\n\t * In this specific case we try to extract stacktrace.message.error.message\n\t */\n\n\n\tfunction extractMessage(ex) {\n\t var message = ex && ex.message;\n\n\t if (!message) {\n\t return 'No error message';\n\t }\n\n\t if (message.error && typeof message.error.message === 'string') {\n\t return message.error.message;\n\t }\n\n\t return message;\n\t}\n\n\tvar STACKTRACE_LIMIT = 50;\n\t/**\n\t * This function creates an exception from an TraceKitStackTrace\n\t * @param stacktrace TraceKitStackTrace that will be converted to an exception\n\t * @hidden\n\t */\n\n\tfunction exceptionFromStacktrace(stacktrace) {\n\t var frames = prepareFramesForEvent(stacktrace.stack);\n\t var exception = {\n\t type: stacktrace.name,\n\t value: stacktrace.message\n\t };\n\n\t if (frames && frames.length) {\n\t exception.stacktrace = {\n\t frames: frames\n\t };\n\t } // tslint:disable-next-line:strict-type-predicates\n\n\n\t if (exception.type === undefined && exception.value === '') {\n\t exception.value = 'Unrecoverable error caught';\n\t }\n\n\t return exception;\n\t}\n\t/**\n\t * @hidden\n\t */\n\n\tfunction eventFromPlainObject(exception, syntheticException, rejection) {\n\t var event = {\n\t exception: {\n\t values: [{\n\t type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n\t value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception)\n\t }]\n\t },\n\t extra: {\n\t __serialized__: normalizeToSize(exception)\n\t }\n\t };\n\n\t if (syntheticException) {\n\t var stacktrace = computeStackTrace(syntheticException);\n\t var frames_1 = prepareFramesForEvent(stacktrace.stack);\n\t event.stacktrace = {\n\t frames: frames_1\n\t };\n\t }\n\n\t return event;\n\t}\n\t/**\n\t * @hidden\n\t */\n\n\tfunction eventFromStacktrace(stacktrace) {\n\t var exception = exceptionFromStacktrace(stacktrace);\n\t return {\n\t exception: {\n\t values: [exception]\n\t }\n\t };\n\t}\n\t/**\n\t * @hidden\n\t */\n\n\tfunction prepareFramesForEvent(stack) {\n\t if (!stack || !stack.length) {\n\t return [];\n\t }\n\n\t var localStack = stack;\n\t var firstFrameFunction = localStack[0].func || '';\n\t var lastFrameFunction = localStack[localStack.length - 1].func || ''; // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n\n\t if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n\t localStack = localStack.slice(1);\n\t } // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n\n\n\t if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n\t localStack = localStack.slice(0, -1);\n\t } // The frame where the crash happened, should be the last entry in the array\n\n\n\t return localStack.map(function (frame) {\n\t return {\n\t colno: frame.column === null ? undefined : frame.column,\n\t filename: frame.url || localStack[0].url,\n\t function: frame.func || '?',\n\t in_app: true,\n\t lineno: frame.line === null ? undefined : frame.line\n\t };\n\t }).slice(0, STACKTRACE_LIMIT).reverse();\n\t}\n\n\t/** JSDoc */\n\n\tfunction eventFromUnknownInput(exception, syntheticException, options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t var event;\n\n\t if (isErrorEvent(exception) && exception.error) {\n\t // If it is an ErrorEvent with `error` property, extract it to get actual Error\n\t var errorEvent = exception;\n\t exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\n\n\t event = eventFromStacktrace(computeStackTrace(exception));\n\t return event;\n\t }\n\n\t if (isDOMError(exception) || isDOMException(exception)) {\n\t // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n\t // then we just extract the name and message, as they don't provide anything else\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n\t var domException = exception;\n\t var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n\t var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n\t event = eventFromString(message, syntheticException, options);\n\t addExceptionTypeValue(event, message);\n\t return event;\n\t }\n\n\t if (isError(exception)) {\n\t // we have a real Error object, do nothing\n\t event = eventFromStacktrace(computeStackTrace(exception));\n\t return event;\n\t }\n\n\t if (isPlainObject(exception) || isEvent(exception)) {\n\t // If it is plain Object or Event, serialize it manually and extract options\n\t // This will allow us to group events based on top-level keys\n\t // which is much better than creating new group when any key/value change\n\t var objectException = exception;\n\t event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n\t addExceptionMechanism(event, {\n\t synthetic: true\n\t });\n\t return event;\n\t } // If none of previous checks were valid, then it means that it's not:\n\t // - an instance of DOMError\n\t // - an instance of DOMException\n\t // - an instance of Event\n\t // - an instance of Error\n\t // - a valid ErrorEvent (one with an error property)\n\t // - a plain Object\n\t //\n\t // So bail out and capture it as a simple message:\n\n\n\t event = eventFromString(exception, syntheticException, options);\n\t addExceptionTypeValue(event, \"\" + exception, undefined);\n\t addExceptionMechanism(event, {\n\t synthetic: true\n\t });\n\t return event;\n\t} // this._options.attachStacktrace\n\n\t/** JSDoc */\n\n\tfunction eventFromString(input, syntheticException, options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t var event = {\n\t message: input\n\t };\n\n\t if (options.attachStacktrace && syntheticException) {\n\t var stacktrace = computeStackTrace(syntheticException);\n\t var frames_1 = prepareFramesForEvent(stacktrace.stack);\n\t event.stacktrace = {\n\t frames: frames_1\n\t };\n\t }\n\n\t return event;\n\t}\n\n\t/** Base Transport class implementation */\n\n\tvar BaseTransport =\n\t/** @class */\n\tfunction () {\n\t function BaseTransport(options) {\n\t this.options = options;\n\t /** A simple buffer holding all requests. */\n\n\t this._buffer = new PromiseBuffer(30);\n\t this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth();\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseTransport.prototype.sendEvent = function (_) {\n\t throw new SentryError('Transport Class has to implement `sendEvent` method');\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BaseTransport.prototype.close = function (timeout) {\n\t return this._buffer.drain(timeout);\n\t };\n\n\t return BaseTransport;\n\t}();\n\n\tvar global$3 = getGlobalObject();\n\t/** `fetch` based transport */\n\n\tvar FetchTransport =\n\t/** @class */\n\tfunction (_super) {\n\t __extends(FetchTransport, _super);\n\n\t function FetchTransport() {\n\t var _this = _super !== null && _super.apply(this, arguments) || this;\n\t /** Locks transport after receiving 429 response */\n\n\n\t _this._disabledUntil = new Date(Date.now());\n\t return _this;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t FetchTransport.prototype.sendEvent = function (event) {\n\t var _this = this;\n\n\t if (new Date(Date.now()) < this._disabledUntil) {\n\t return Promise.reject({\n\t event: event,\n\t reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n\t status: 429\n\t });\n\t }\n\n\t var defaultOptions = {\n\t body: JSON.stringify(event),\n\t method: 'POST',\n\t // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t // https://caniuse.com/#feat=referrer-policy\n\t // It doesn't. And it throw exception instead of ignoring this parameter...\n\t // REF: https://github.com/getsentry/raven-js/issues/1233\n\t referrerPolicy: supportsReferrerPolicy() ? 'origin' : ''\n\t };\n\n\t if (this.options.headers !== undefined) {\n\t defaultOptions.headers = this.options.headers;\n\t }\n\n\t return this._buffer.add(new SyncPromise(function (resolve, reject) {\n\t global$3.fetch(_this.url, defaultOptions).then(function (response) {\n\t var status = Status.fromHttpCode(response.status);\n\n\t if (status === Status.Success) {\n\t resolve({\n\t status: status\n\t });\n\t return;\n\t }\n\n\t if (status === Status.RateLimit) {\n\t var now = Date.now();\n\t _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));\n\t logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n\t }\n\n\t reject(response);\n\t }).catch(reject);\n\t }));\n\t };\n\n\t return FetchTransport;\n\t}(BaseTransport);\n\n\t/** `XHR` based transport */\n\n\tvar XHRTransport =\n\t/** @class */\n\tfunction (_super) {\n\t __extends(XHRTransport, _super);\n\n\t function XHRTransport() {\n\t var _this = _super !== null && _super.apply(this, arguments) || this;\n\t /** Locks transport after receiving 429 response */\n\n\n\t _this._disabledUntil = new Date(Date.now());\n\t return _this;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t XHRTransport.prototype.sendEvent = function (event) {\n\t var _this = this;\n\n\t if (new Date(Date.now()) < this._disabledUntil) {\n\t return Promise.reject({\n\t event: event,\n\t reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n\t status: 429\n\t });\n\t }\n\n\t return this._buffer.add(new SyncPromise(function (resolve, reject) {\n\t var request = new XMLHttpRequest();\n\n\t request.onreadystatechange = function () {\n\t if (request.readyState !== 4) {\n\t return;\n\t }\n\n\t var status = Status.fromHttpCode(request.status);\n\n\t if (status === Status.Success) {\n\t resolve({\n\t status: status\n\t });\n\t return;\n\t }\n\n\t if (status === Status.RateLimit) {\n\t var now = Date.now();\n\t _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));\n\t logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n\t }\n\n\t reject(request);\n\t };\n\n\t request.open('POST', _this.url);\n\n\t for (var header in _this.options.headers) {\n\t if (_this.options.headers.hasOwnProperty(header)) {\n\t request.setRequestHeader(header, _this.options.headers[header]);\n\t }\n\t }\n\n\t request.send(JSON.stringify(event));\n\t }));\n\t };\n\n\t return XHRTransport;\n\t}(BaseTransport);\n\n\t/**\n\t * The Sentry Browser SDK Backend.\n\t * @hidden\n\t */\n\n\tvar BrowserBackend =\n\t/** @class */\n\tfunction (_super) {\n\t __extends(BrowserBackend, _super);\n\n\t function BrowserBackend() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BrowserBackend.prototype._setupTransport = function () {\n\t if (!this._options.dsn) {\n\t // We return the noop transport here in case there is no Dsn.\n\t return _super.prototype._setupTransport.call(this);\n\t }\n\n\t var transportOptions = _assign({}, this._options.transportOptions, {\n\t dsn: this._options.dsn\n\t });\n\n\t if (this._options.transport) {\n\t return new this._options.transport(transportOptions);\n\t }\n\n\t if (supportsFetch()) {\n\t return new FetchTransport(transportOptions);\n\t }\n\n\t return new XHRTransport(transportOptions);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BrowserBackend.prototype.eventFromException = function (exception, hint) {\n\t var syntheticException = hint && hint.syntheticException || undefined;\n\t var event = eventFromUnknownInput(exception, syntheticException, {\n\t attachStacktrace: this._options.attachStacktrace\n\t });\n\t addExceptionMechanism(event, {\n\t handled: true,\n\t type: 'generic'\n\t });\n\t event.level = Severity.Error;\n\n\t if (hint && hint.event_id) {\n\t event.event_id = hint.event_id;\n\t }\n\n\t return SyncPromise.resolve(event);\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n\t if (level === void 0) {\n\t level = Severity.Info;\n\t }\n\n\t var syntheticException = hint && hint.syntheticException || undefined;\n\t var event = eventFromString(message, syntheticException, {\n\t attachStacktrace: this._options.attachStacktrace\n\t });\n\t event.level = level;\n\n\t if (hint && hint.event_id) {\n\t event.event_id = hint.event_id;\n\t }\n\n\t return SyncPromise.resolve(event);\n\t };\n\n\t return BrowserBackend;\n\t}(BaseBackend);\n\n\tvar SDK_NAME = 'sentry.javascript.browser';\n\tvar SDK_VERSION = '5.15.5';\n\n\t/**\n\t * The Sentry Browser SDK Client.\n\t *\n\t * @see BrowserOptions for documentation on configuration options.\n\t * @see SentryClient for usage documentation.\n\t */\n\n\tvar BrowserClient =\n\t/** @class */\n\tfunction (_super) {\n\t __extends(BrowserClient, _super);\n\t /**\n\t * Creates a new Browser SDK instance.\n\t *\n\t * @param options Configuration options for this SDK.\n\t */\n\n\n\t function BrowserClient(options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t return _super.call(this, BrowserBackend, options) || this;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n\t event.platform = event.platform || 'javascript';\n\t event.sdk = _assign({}, event.sdk, {\n\t name: SDK_NAME,\n\t packages: __spread(event.sdk && event.sdk.packages || [], [{\n\t name: 'npm:@sentry/browser',\n\t version: SDK_VERSION\n\t }]),\n\t version: SDK_VERSION\n\t });\n\t return _super.prototype._prepareEvent.call(this, event, scope, hint);\n\t };\n\t /**\n\t * Show a report dialog to the user to send feedback to a specific event.\n\t *\n\t * @param options Set individual options for the dialog\n\t */\n\n\n\t BrowserClient.prototype.showReportDialog = function (options) {\n\t if (options === void 0) {\n\t options = {};\n\t } // doesn't work without a document (React Native)\n\n\n\t var document = getGlobalObject().document;\n\n\t if (!document) {\n\t return;\n\t }\n\n\t if (!this._isEnabled()) {\n\t logger.error('Trying to call showReportDialog with Sentry Client is disabled');\n\t return;\n\t }\n\n\t var dsn = options.dsn || this.getDsn();\n\n\t if (!options.eventId) {\n\t logger.error('Missing `eventId` option in showReportDialog call');\n\t return;\n\t }\n\n\t if (!dsn) {\n\t logger.error('Missing `Dsn` option in showReportDialog call');\n\t return;\n\t }\n\n\t var script = document.createElement('script');\n\t script.async = true;\n\t script.src = new API(dsn).getReportDialogEndpoint(options);\n\n\t if (options.onLoad) {\n\t script.onload = options.onLoad;\n\t }\n\n\t (document.head || document.body).appendChild(script);\n\t };\n\n\t return BrowserClient;\n\t}(BaseClient);\n\n\tvar ignoreOnError = 0;\n\t/**\n\t * @hidden\n\t */\n\n\tfunction shouldIgnoreOnError() {\n\t return ignoreOnError > 0;\n\t}\n\t/**\n\t * @hidden\n\t */\n\n\tfunction ignoreNextOnError() {\n\t // onerror should trigger before setTimeout\n\t ignoreOnError += 1;\n\t setTimeout(function () {\n\t ignoreOnError -= 1;\n\t });\n\t}\n\t/**\n\t * Instruments the given function and sends an event to Sentry every time the\n\t * function throws an exception.\n\t *\n\t * @param fn A function to wrap.\n\t * @returns The wrapped function.\n\t * @hidden\n\t */\n\n\tfunction wrap$1(fn, options, before) {\n\t if (options === void 0) {\n\t options = {};\n\t } // tslint:disable-next-line:strict-type-predicates\n\n\n\t if (typeof fn !== 'function') {\n\t return fn;\n\t }\n\n\t try {\n\t // We don't wanna wrap it twice\n\t if (fn.__sentry__) {\n\t return fn;\n\t } // If this has already been wrapped in the past, return that wrapped function\n\n\n\t if (fn.__sentry_wrapped__) {\n\t return fn.__sentry_wrapped__;\n\t }\n\t } catch (e) {\n\t // Just accessing custom props in some Selenium environments\n\t // can cause a \"Permission denied\" exception (see raven-js#495).\n\t // Bail on wrapping and return the function as-is (defers to window.onerror).\n\t return fn;\n\t }\n\n\t var sentryWrapped = function sentryWrapped() {\n\t var args = Array.prototype.slice.call(arguments); // tslint:disable:no-unsafe-any\n\n\t try {\n\t // tslint:disable-next-line:strict-type-predicates\n\t if (before && typeof before === 'function') {\n\t before.apply(this, arguments);\n\t }\n\n\t var wrappedArguments = args.map(function (arg) {\n\t return wrap$1(arg, options);\n\t });\n\n\t if (fn.handleEvent) {\n\t // Attempt to invoke user-land function\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n\t // means the sentry.javascript SDK caught an error invoking your application code. This\n\t // is expected behavior and NOT indicative of a bug with sentry.javascript.\n\t return fn.handleEvent.apply(this, wrappedArguments);\n\t } // Attempt to invoke user-land function\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n\t // means the sentry.javascript SDK caught an error invoking your application code. This\n\t // is expected behavior and NOT indicative of a bug with sentry.javascript.\n\n\n\t return fn.apply(this, wrappedArguments); // tslint:enable:no-unsafe-any\n\t } catch (ex) {\n\t ignoreNextOnError();\n\t withScope(function (scope) {\n\t scope.addEventProcessor(function (event) {\n\t var processedEvent = _assign({}, event);\n\n\t if (options.mechanism) {\n\t addExceptionTypeValue(processedEvent, undefined, undefined);\n\t addExceptionMechanism(processedEvent, options.mechanism);\n\t }\n\n\t processedEvent.extra = _assign({}, processedEvent.extra, {\n\t arguments: args\n\t });\n\t return processedEvent;\n\t });\n\t captureException(ex);\n\t });\n\t throw ex;\n\t }\n\t }; // Accessing some objects may throw\n\t // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n\n\n\t try {\n\t for (var property in fn) {\n\t if (Object.prototype.hasOwnProperty.call(fn, property)) {\n\t sentryWrapped[property] = fn[property];\n\t }\n\t }\n\t } catch (_oO) {} // tslint:disable-line:no-empty\n\n\n\t fn.prototype = fn.prototype || {};\n\t sentryWrapped.prototype = fn.prototype;\n\t Object.defineProperty(fn, '__sentry_wrapped__', {\n\t enumerable: false,\n\t value: sentryWrapped\n\t }); // Signal that this function has been wrapped/filled already\n\t // for both debugging and to prevent it to being wrapped/filled twice\n\n\t Object.defineProperties(sentryWrapped, {\n\t __sentry__: {\n\t enumerable: false,\n\t value: true\n\t },\n\t __sentry_original__: {\n\t enumerable: false,\n\t value: fn\n\t }\n\t }); // Restore original function name (not all browsers allow that)\n\n\t try {\n\t var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n\n\t if (descriptor.configurable) {\n\t Object.defineProperty(sentryWrapped, 'name', {\n\t get: function get() {\n\t return fn.name;\n\t }\n\t });\n\t }\n\t } catch (_oO) {\n\t /*no-empty*/\n\t }\n\n\t return sentryWrapped;\n\t}\n\n\t/** Global handlers */\n\n\tvar GlobalHandlers =\n\t/** @class */\n\tfunction () {\n\t /** JSDoc */\n\t function GlobalHandlers(options) {\n\t /**\n\t * @inheritDoc\n\t */\n\t this.name = GlobalHandlers.id;\n\t /** JSDoc */\n\n\t this._onErrorHandlerInstalled = false;\n\t /** JSDoc */\n\n\t this._onUnhandledRejectionHandlerInstalled = false;\n\t this._options = _assign({\n\t onerror: true,\n\t onunhandledrejection: true\n\t }, options);\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t GlobalHandlers.prototype.setupOnce = function () {\n\t Error.stackTraceLimit = 50;\n\n\t if (this._options.onerror) {\n\t logger.log('Global Handler attached: onerror');\n\n\t this._installGlobalOnErrorHandler();\n\t }\n\n\t if (this._options.onunhandledrejection) {\n\t logger.log('Global Handler attached: onunhandledrejection');\n\n\t this._installGlobalOnUnhandledRejectionHandler();\n\t }\n\t };\n\t /** JSDoc */\n\n\n\t GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {\n\t var _this = this;\n\n\t if (this._onErrorHandlerInstalled) {\n\t return;\n\t }\n\n\t addInstrumentationHandler({\n\t callback: function callback(data) {\n\t var error = data.error;\n\t var currentHub = getCurrentHub();\n\t var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n\t var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n\t if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n\t return;\n\t }\n\n\t var client = currentHub.getClient();\n\t var event = isPrimitive(error) ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column) : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n\t attachStacktrace: client && client.getOptions().attachStacktrace,\n\t rejection: false\n\t }), data.url, data.line, data.column);\n\t addExceptionMechanism(event, {\n\t handled: false,\n\t type: 'onerror'\n\t });\n\t currentHub.captureEvent(event, {\n\t originalException: error\n\t });\n\t },\n\t type: 'error'\n\t });\n\t this._onErrorHandlerInstalled = true;\n\t };\n\t /** JSDoc */\n\n\n\t GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n\t var _this = this;\n\n\t if (this._onUnhandledRejectionHandlerInstalled) {\n\t return;\n\t }\n\n\t addInstrumentationHandler({\n\t callback: function callback(e) {\n\t var error = e; // dig the object of the rejection out of known event types\n\n\t try {\n\t // PromiseRejectionEvents store the object of the rejection under 'reason'\n\t // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n\t if ('reason' in e) {\n\t error = e.reason;\n\t } // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n\t // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n\t // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n\t // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n\t // https://github.com/getsentry/sentry-javascript/issues/2380\n\t else if ('detail' in e && 'reason' in e.detail) {\n\t error = e.detail.reason;\n\t }\n\t } catch (_oO) {// no-empty\n\t }\n\n\t var currentHub = getCurrentHub();\n\t var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n\t var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n\t if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n\t return true;\n\t }\n\n\t var client = currentHub.getClient();\n\t var event = isPrimitive(error) ? _this._eventFromIncompleteRejection(error) : eventFromUnknownInput(error, undefined, {\n\t attachStacktrace: client && client.getOptions().attachStacktrace,\n\t rejection: true\n\t });\n\t event.level = Severity.Error;\n\t addExceptionMechanism(event, {\n\t handled: false,\n\t type: 'onunhandledrejection'\n\t });\n\t currentHub.captureEvent(event, {\n\t originalException: error\n\t });\n\t return;\n\t },\n\t type: 'unhandledrejection'\n\t });\n\t this._onUnhandledRejectionHandlerInstalled = true;\n\t };\n\t /**\n\t * This function creates a stack from an old, error-less onerror handler.\n\t */\n\n\n\t GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {\n\t var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i; // If 'message' is ErrorEvent, get real message from inside\n\n\t var message = isErrorEvent(msg) ? msg.message : msg;\n\t var name;\n\n\t if (isString(message)) {\n\t var groups = message.match(ERROR_TYPES_RE);\n\n\t if (groups) {\n\t name = groups[1];\n\t message = groups[2];\n\t }\n\t }\n\n\t var event = {\n\t exception: {\n\t values: [{\n\t type: name || 'Error',\n\t value: message\n\t }]\n\t }\n\t };\n\t return this._enhanceEventWithInitialFrame(event, url, line, column);\n\t };\n\t /**\n\t * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n\t */\n\n\n\t GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) {\n\t return {\n\t exception: {\n\t values: [{\n\t type: 'UnhandledRejection',\n\t value: \"Non-Error promise rejection captured with value: \" + error\n\t }]\n\t }\n\t };\n\t };\n\t /** JSDoc */\n\n\n\t GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {\n\t event.exception = event.exception || {};\n\t event.exception.values = event.exception.values || [];\n\t event.exception.values[0] = event.exception.values[0] || {};\n\t event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n\t event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\t var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n\t var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n\t var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n\t if (event.exception.values[0].stacktrace.frames.length === 0) {\n\t event.exception.values[0].stacktrace.frames.push({\n\t colno: colno,\n\t filename: filename,\n\t function: '?',\n\t in_app: true,\n\t lineno: lineno\n\t });\n\t }\n\n\t return event;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t GlobalHandlers.id = 'GlobalHandlers';\n\t return GlobalHandlers;\n\t}();\n\n\t/** Wrap timer functions and event targets to catch errors and provide better meta data */\n\n\tvar TryCatch =\n\t/** @class */\n\tfunction () {\n\t function TryCatch() {\n\t /** JSDoc */\n\t this._ignoreOnError = 0;\n\t /**\n\t * @inheritDoc\n\t */\n\n\t this.name = TryCatch.id;\n\t }\n\t /** JSDoc */\n\n\n\t TryCatch.prototype._wrapTimeFunction = function (original) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var originalCallback = args[0];\n\t args[0] = wrap$1(originalCallback, {\n\t mechanism: {\n\t data: {\n\t function: getFunctionName(original)\n\t },\n\t handled: true,\n\t type: 'instrument'\n\t }\n\t });\n\t return original.apply(this, args);\n\t };\n\t };\n\t /** JSDoc */\n\n\n\t TryCatch.prototype._wrapRAF = function (original) {\n\t return function (callback) {\n\t return original(wrap$1(callback, {\n\t mechanism: {\n\t data: {\n\t function: 'requestAnimationFrame',\n\t handler: getFunctionName(original)\n\t },\n\t handled: true,\n\t type: 'instrument'\n\t }\n\t }));\n\t };\n\t };\n\t /** JSDoc */\n\n\n\t TryCatch.prototype._wrapEventTarget = function (target) {\n\t var global = getGlobalObject();\n\t var proto = global[target] && global[target].prototype;\n\n\t if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n\t return;\n\t }\n\n\t fill(proto, 'addEventListener', function (original) {\n\t return function (eventName, fn, options) {\n\t try {\n\t // tslint:disable-next-line:no-unbound-method strict-type-predicates\n\t if (typeof fn.handleEvent === 'function') {\n\t fn.handleEvent = wrap$1(fn.handleEvent.bind(fn), {\n\t mechanism: {\n\t data: {\n\t function: 'handleEvent',\n\t handler: getFunctionName(fn),\n\t target: target\n\t },\n\t handled: true,\n\t type: 'instrument'\n\t }\n\t });\n\t }\n\t } catch (err) {// can sometimes get 'Permission denied to access property \"handle Event'\n\t }\n\n\t return original.call(this, eventName, wrap$1(fn, {\n\t mechanism: {\n\t data: {\n\t function: 'addEventListener',\n\t handler: getFunctionName(fn),\n\t target: target\n\t },\n\t handled: true,\n\t type: 'instrument'\n\t }\n\t }), options);\n\t };\n\t });\n\t fill(proto, 'removeEventListener', function (original) {\n\t return function (eventName, fn, options) {\n\t var callback = fn;\n\n\t try {\n\t callback = callback && (callback.__sentry_wrapped__ || callback);\n\t } catch (e) {// ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n\t }\n\n\t return original.call(this, eventName, callback, options);\n\t };\n\t });\n\t };\n\t /** JSDoc */\n\n\n\t TryCatch.prototype._wrapXHR = function (originalSend) {\n\t return function () {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t var xhr = this; // tslint:disable-line:no-this-assignment\n\n\t var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\t xmlHttpRequestProps.forEach(function (prop) {\n\t if (prop in xhr && typeof xhr[prop] === 'function') {\n\t fill(xhr, prop, function (original) {\n\t var wrapOptions = {\n\t mechanism: {\n\t data: {\n\t function: prop,\n\t handler: getFunctionName(original)\n\t },\n\t handled: true,\n\t type: 'instrument'\n\t }\n\t }; // If Instrument integration has been called before TryCatch, get the name of original function\n\n\t if (original.__sentry_original__) {\n\t wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n\t } // Otherwise wrap directly\n\n\n\t return wrap$1(original, wrapOptions);\n\t });\n\t }\n\t });\n\t return originalSend.apply(this, args);\n\t };\n\t };\n\t /**\n\t * Wrap timer functions and event targets to catch errors\n\t * and provide better metadata.\n\t */\n\n\n\t TryCatch.prototype.setupOnce = function () {\n\t this._ignoreOnError = this._ignoreOnError;\n\t var global = getGlobalObject();\n\t fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n\t fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n\t fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n\n\t if ('XMLHttpRequest' in global) {\n\t fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n\t }\n\n\t ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'].forEach(this._wrapEventTarget.bind(this));\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t TryCatch.id = 'TryCatch';\n\t return TryCatch;\n\t}();\n\n\t/**\n\t * Default Breadcrumbs instrumentations\n\t * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n\t */\n\n\tvar Breadcrumbs =\n\t/** @class */\n\tfunction () {\n\t /**\n\t * @inheritDoc\n\t */\n\t function Breadcrumbs(options) {\n\t /**\n\t * @inheritDoc\n\t */\n\t this.name = Breadcrumbs.id;\n\t this._options = _assign({\n\t console: true,\n\t dom: true,\n\t fetch: true,\n\t history: true,\n\t sentry: true,\n\t xhr: true\n\t }, options);\n\t }\n\t /**\n\t * Creates breadcrumbs from console API calls\n\t */\n\n\n\t Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {\n\t var breadcrumb = {\n\t category: 'console',\n\t data: {\n\t arguments: handlerData.args,\n\t logger: 'console'\n\t },\n\t level: Severity.fromString(handlerData.level),\n\t message: safeJoin(handlerData.args, ' ')\n\t };\n\n\t if (handlerData.level === 'assert') {\n\t if (handlerData.args[0] === false) {\n\t breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n\t breadcrumb.data.arguments = handlerData.args.slice(1);\n\t } else {\n\t // Don't capture a breadcrumb for passed assertions\n\t return;\n\t }\n\t }\n\n\t getCurrentHub().addBreadcrumb(breadcrumb, {\n\t input: handlerData.args,\n\t level: handlerData.level\n\t });\n\t };\n\t /**\n\t * Creates breadcrumbs from DOM API calls\n\t */\n\n\n\t Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {\n\t var target; // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n\n\t try {\n\t target = handlerData.event.target ? htmlTreeAsString(handlerData.event.target) : htmlTreeAsString(handlerData.event);\n\t } catch (e) {\n\t target = '<unknown>';\n\t }\n\n\t if (target.length === 0) {\n\t return;\n\t }\n\n\t getCurrentHub().addBreadcrumb({\n\t category: \"ui.\" + handlerData.name,\n\t message: target\n\t }, {\n\t event: handlerData.event,\n\t name: handlerData.name\n\t });\n\t };\n\t /**\n\t * Creates breadcrumbs from XHR API calls\n\t */\n\n\n\t Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {\n\t if (handlerData.endTimestamp) {\n\t // We only capture complete, non-sentry requests\n\t if (handlerData.xhr.__sentry_own_request__) {\n\t return;\n\t }\n\n\t getCurrentHub().addBreadcrumb({\n\t category: 'xhr',\n\t data: handlerData.xhr.__sentry_xhr__,\n\t type: 'http'\n\t }, {\n\t xhr: handlerData.xhr\n\t });\n\t return;\n\t } // We only capture issued sentry requests\n\n\n\t if (this._options.sentry && handlerData.xhr.__sentry_own_request__) {\n\t addSentryBreadcrumb(handlerData.args[0]);\n\t }\n\t };\n\t /**\n\t * Creates breadcrumbs from fetch API calls\n\t */\n\n\n\t Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n\t // We only capture complete fetch requests\n\t if (!handlerData.endTimestamp) {\n\t return;\n\t }\n\n\t var client = getCurrentHub().getClient();\n\t var dsn = client && client.getDsn();\n\n\t if (this._options.sentry && dsn) {\n\t var filterUrl = new API(dsn).getStoreEndpoint(); // if Sentry key appears in URL, don't capture it as a request\n\t // but rather as our own 'sentry' type breadcrumb\n\n\t if (filterUrl && handlerData.fetchData.url.indexOf(filterUrl) !== -1 && handlerData.fetchData.method === 'POST' && handlerData.args[1] && handlerData.args[1].body) {\n\t addSentryBreadcrumb(handlerData.args[1].body);\n\t return;\n\t }\n\t }\n\n\t if (handlerData.error) {\n\t getCurrentHub().addBreadcrumb({\n\t category: 'fetch',\n\t data: _assign({}, handlerData.fetchData, {\n\t status_code: handlerData.response.status\n\t }),\n\t level: Severity.Error,\n\t type: 'http'\n\t }, {\n\t data: handlerData.error,\n\t input: handlerData.args\n\t });\n\t } else {\n\t getCurrentHub().addBreadcrumb({\n\t category: 'fetch',\n\t data: _assign({}, handlerData.fetchData, {\n\t status_code: handlerData.response.status\n\t }),\n\t type: 'http'\n\t }, {\n\t input: handlerData.args,\n\t response: handlerData.response\n\t });\n\t }\n\t };\n\t /**\n\t * Creates breadcrumbs from history API calls\n\t */\n\n\n\t Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {\n\t var global = getGlobalObject();\n\t var from = handlerData.from;\n\t var to = handlerData.to;\n\t var parsedLoc = parseUrl(global.location.href);\n\t var parsedFrom = parseUrl(from);\n\t var parsedTo = parseUrl(to); // Initial pushState doesn't provide `from` information\n\n\t if (!parsedFrom.path) {\n\t parsedFrom = parsedLoc;\n\t } // Use only the path component of the URL if the URL matches the current\n\t // document (almost all the time when using pushState)\n\n\n\t if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n\t // tslint:disable-next-line:no-parameter-reassignment\n\t to = parsedTo.relative;\n\t }\n\n\t if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n\t // tslint:disable-next-line:no-parameter-reassignment\n\t from = parsedFrom.relative;\n\t }\n\n\t getCurrentHub().addBreadcrumb({\n\t category: 'navigation',\n\t data: {\n\t from: from,\n\t to: to\n\t }\n\t });\n\t };\n\t /**\n\t * Instrument browser built-ins w/ breadcrumb capturing\n\t * - Console API\n\t * - DOM API (click/typing)\n\t * - XMLHttpRequest API\n\t * - Fetch API\n\t * - History API\n\t */\n\n\n\t Breadcrumbs.prototype.setupOnce = function () {\n\t var _this = this;\n\n\t if (this._options.console) {\n\t addInstrumentationHandler({\n\t callback: function callback() {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t _this._consoleBreadcrumb.apply(_this, __spread(args));\n\t },\n\t type: 'console'\n\t });\n\t }\n\n\t if (this._options.dom) {\n\t addInstrumentationHandler({\n\t callback: function callback() {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t _this._domBreadcrumb.apply(_this, __spread(args));\n\t },\n\t type: 'dom'\n\t });\n\t }\n\n\t if (this._options.xhr) {\n\t addInstrumentationHandler({\n\t callback: function callback() {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t _this._xhrBreadcrumb.apply(_this, __spread(args));\n\t },\n\t type: 'xhr'\n\t });\n\t }\n\n\t if (this._options.fetch) {\n\t addInstrumentationHandler({\n\t callback: function callback() {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t _this._fetchBreadcrumb.apply(_this, __spread(args));\n\t },\n\t type: 'fetch'\n\t });\n\t }\n\n\t if (this._options.history) {\n\t addInstrumentationHandler({\n\t callback: function callback() {\n\t var args = [];\n\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\n\t _this._historyBreadcrumb.apply(_this, __spread(args));\n\t },\n\t type: 'history'\n\t });\n\t }\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t Breadcrumbs.id = 'Breadcrumbs';\n\t return Breadcrumbs;\n\t}();\n\t/**\n\t * Create a breadcrumb of `sentry` from the events themselves\n\t */\n\n\tfunction addSentryBreadcrumb(serializedData) {\n\t // There's always something that can go wrong with deserialization...\n\t try {\n\t var event_1 = JSON.parse(serializedData);\n\t getCurrentHub().addBreadcrumb({\n\t category: \"sentry.\" + (event_1.type === 'transaction' ? 'transaction' : 'event'),\n\t event_id: event_1.event_id,\n\t level: event_1.level || Severity.fromString('error'),\n\t message: getEventDescription(event_1)\n\t }, {\n\t event: event_1\n\t });\n\t } catch (_oO) {\n\t logger.error('Error while adding sentry type breadcrumb');\n\t }\n\t}\n\n\tvar DEFAULT_KEY = 'cause';\n\tvar DEFAULT_LIMIT = 5;\n\t/** Adds SDK info to an event. */\n\n\tvar LinkedErrors =\n\t/** @class */\n\tfunction () {\n\t /**\n\t * @inheritDoc\n\t */\n\t function LinkedErrors(options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t this.name = LinkedErrors.id;\n\t this._key = options.key || DEFAULT_KEY;\n\t this._limit = options.limit || DEFAULT_LIMIT;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t LinkedErrors.prototype.setupOnce = function () {\n\t addGlobalEventProcessor(function (event, hint) {\n\t var self = getCurrentHub().getIntegration(LinkedErrors);\n\n\t if (self) {\n\t return self._handler(event, hint);\n\t }\n\n\t return event;\n\t });\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t LinkedErrors.prototype._handler = function (event, hint) {\n\t if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n\t return event;\n\t }\n\n\t var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n\n\t event.exception.values = __spread(linkedErrors, event.exception.values);\n\t return event;\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n\t if (stack === void 0) {\n\t stack = [];\n\t }\n\n\t if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n\t return stack;\n\t }\n\n\t var stacktrace = computeStackTrace(error[key]);\n\t var exception = exceptionFromStacktrace(stacktrace);\n\t return this._walkErrorTree(error[key], key, __spread([exception], stack));\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t LinkedErrors.id = 'LinkedErrors';\n\t return LinkedErrors;\n\t}();\n\n\tvar global$4 = getGlobalObject();\n\t/** UserAgent */\n\n\tvar UserAgent =\n\t/** @class */\n\tfunction () {\n\t function UserAgent() {\n\t /**\n\t * @inheritDoc\n\t */\n\t this.name = UserAgent.id;\n\t }\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t UserAgent.prototype.setupOnce = function () {\n\t addGlobalEventProcessor(function (event) {\n\t if (getCurrentHub().getIntegration(UserAgent)) {\n\t if (!global$4.navigator || !global$4.location) {\n\t return event;\n\t } // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/\n\n\n\t var request = event.request || {};\n\t request.url = request.url || global$4.location.href;\n\t request.headers = request.headers || {};\n\t request.headers['User-Agent'] = global$4.navigator.userAgent;\n\t return _assign({}, event, {\n\t request: request\n\t });\n\t }\n\n\t return event;\n\t });\n\t };\n\t /**\n\t * @inheritDoc\n\t */\n\n\n\t UserAgent.id = 'UserAgent';\n\t return UserAgent;\n\t}();\n\n\tvar defaultIntegrations = [new InboundFilters(), new FunctionToString(), new TryCatch(), new Breadcrumbs(), new GlobalHandlers(), new LinkedErrors(), new UserAgent()];\n\t/**\n\t * The Sentry Browser SDK Client.\n\t *\n\t * To use this SDK, call the {@link init} function as early as possible when\n\t * loading the web page. To set context information or send manual events, use\n\t * the provided methods.\n\t *\n\t * @example\n\t *\n\t * ```\n\t *\n\t * import { init } from '@sentry/browser';\n\t *\n\t * init({\n\t * dsn: '__DSN__',\n\t * // ...\n\t * });\n\t * ```\n\t *\n\t * @example\n\t * ```\n\t *\n\t * import { configureScope } from '@sentry/browser';\n\t * configureScope((scope: Scope) => {\n\t * scope.setExtra({ battery: 0.7 });\n\t * scope.setTag({ user_mode: 'admin' });\n\t * scope.setUser({ id: '4711' });\n\t * });\n\t * ```\n\t *\n\t * @example\n\t * ```\n\t *\n\t * import { addBreadcrumb } from '@sentry/browser';\n\t * addBreadcrumb({\n\t * message: 'My Breadcrumb',\n\t * // ...\n\t * });\n\t * ```\n\t *\n\t * @example\n\t *\n\t * ```\n\t *\n\t * import * as Sentry from '@sentry/browser';\n\t * Sentry.captureMessage('Hello, world!');\n\t * Sentry.captureException(new Error('Good bye'));\n\t * Sentry.captureEvent({\n\t * message: 'Manual',\n\t * stacktrace: [\n\t * // ...\n\t * ],\n\t * });\n\t * ```\n\t *\n\t * @see {@link BrowserOptions} for documentation on configuration options.\n\t */\n\n\tfunction init(options) {\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t if (options.defaultIntegrations === undefined) {\n\t options.defaultIntegrations = defaultIntegrations;\n\t }\n\n\t if (options.release === undefined) {\n\t var window_1 = getGlobalObject(); // This supports the variable that sentry-webpack-plugin injects\n\n\t if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n\t options.release = window_1.SENTRY_RELEASE.id;\n\t }\n\t }\n\n\t initAndBind(BrowserClient, options);\n\t}\n\n\tvar $find$1 = arrayIteration.find;\n\n\n\n\tvar FIND = 'find';\n\tvar SKIPS_HOLES = true;\n\n\tvar USES_TO_LENGTH$9 = arrayMethodUsesToLength(FIND);\n\n\t// Shouldn't skip holes\n\tif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n\t// `Array.prototype.find` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t_export({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH$9 }, {\n\t find: function find(callbackfn /* , that = undefined */) {\n\t return $find$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables(FIND);\n\n\t// a string of all valid unicode whitespaces\n\t// eslint-disable-next-line max-len\n\tvar whitespaces = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\tvar whitespace = '[' + whitespaces + ']';\n\tvar ltrim = RegExp('^' + whitespace + whitespace + '*');\n\tvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n\t// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\n\tvar createMethod$4 = function (TYPE) {\n\t return function ($this) {\n\t var string = String(requireObjectCoercible($this));\n\t if (TYPE & 1) string = string.replace(ltrim, '');\n\t if (TYPE & 2) string = string.replace(rtrim, '');\n\t return string;\n\t };\n\t};\n\n\tvar stringTrim = {\n\t // `String.prototype.{ trimLeft, trimStart }` methods\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n\t start: createMethod$4(1),\n\t // `String.prototype.{ trimRight, trimEnd }` methods\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n\t end: createMethod$4(2),\n\t // `String.prototype.trim` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n\t trim: createMethod$4(3)\n\t};\n\n\tvar getOwnPropertyNames$2 = objectGetOwnPropertyNames.f;\n\tvar getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f;\n\tvar defineProperty$9 = objectDefineProperty.f;\n\tvar trim = stringTrim.trim;\n\n\tvar NUMBER = 'Number';\n\tvar NativeNumber = global_1[NUMBER];\n\tvar NumberPrototype = NativeNumber.prototype;\n\n\t// Opera ~12 has broken Object#toString\n\tvar BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER;\n\n\t// `ToNumber` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tonumber\n\tvar toNumber = function (argument) {\n\t var it = toPrimitive(argument, false);\n\t var first, third, radix, maxCode, digits, length, index, code;\n\t if (typeof it == 'string' && it.length > 2) {\n\t it = trim(it);\n\t first = it.charCodeAt(0);\n\t if (first === 43 || first === 45) {\n\t third = it.charCodeAt(2);\n\t if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n\t } else if (first === 48) {\n\t switch (it.charCodeAt(1)) {\n\t case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n\t case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n\t default: return +it;\n\t }\n\t digits = it.slice(2);\n\t length = digits.length;\n\t for (index = 0; index < length; index++) {\n\t code = digits.charCodeAt(index);\n\t // parseInt parses a string to a first unavailable symbol\n\t // but ToNumber should return NaN if a string contains unavailable symbols\n\t if (code < 48 || code > maxCode) return NaN;\n\t } return parseInt(digits, radix);\n\t }\n\t } return +it;\n\t};\n\n\t// `Number` constructor\n\t// https://tc39.github.io/ecma262/#sec-number-constructor\n\tif (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n\t var NumberWrapper = function Number(value) {\n\t var it = arguments.length < 1 ? 0 : value;\n\t var dummy = this;\n\t return dummy instanceof NumberWrapper\n\t // check on 1..constructor(foo) case\n\t && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classofRaw(dummy) != NUMBER)\n\t ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n\t };\n\t for (var keys$3 = descriptors ? getOwnPropertyNames$2(NativeNumber) : (\n\t // ES3:\n\t 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n\t // ES2015 (in case, if modules with ES2015 Number statics required before):\n\t 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n\t 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n\t ).split(','), j$1 = 0, key$1; keys$3.length > j$1; j$1++) {\n\t if (has(NativeNumber, key$1 = keys$3[j$1]) && !has(NumberWrapper, key$1)) {\n\t defineProperty$9(NumberWrapper, key$1, getOwnPropertyDescriptor$3(NativeNumber, key$1));\n\t }\n\t }\n\t NumberWrapper.prototype = NumberPrototype;\n\t NumberPrototype.constructor = NumberWrapper;\n\t redefine(global_1, NUMBER, NumberWrapper);\n\t}\n\n\t// `Number.isNaN` method\n\t// https://tc39.github.io/ecma262/#sec-number.isnan\n\t_export({ target: 'Number', stat: true }, {\n\t isNaN: function isNaN(number) {\n\t // eslint-disable-next-line no-self-compare\n\t return number != number;\n\t }\n\t});\n\n\tvar propertyIsEnumerable = objectPropertyIsEnumerable.f;\n\n\t// `Object.{ entries, values }` methods implementation\n\tvar createMethod$5 = function (TO_ENTRIES) {\n\t return function (it) {\n\t var O = toIndexedObject(it);\n\t var keys = objectKeys(O);\n\t var length = keys.length;\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t while (length > i) {\n\t key = keys[i++];\n\t if (!descriptors || propertyIsEnumerable.call(O, key)) {\n\t result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n\t }\n\t }\n\t return result;\n\t };\n\t};\n\n\tvar objectToArray = {\n\t // `Object.entries` method\n\t // https://tc39.github.io/ecma262/#sec-object.entries\n\t entries: createMethod$5(true),\n\t // `Object.values` method\n\t // https://tc39.github.io/ecma262/#sec-object.values\n\t values: createMethod$5(false)\n\t};\n\n\tvar $entries = objectToArray.entries;\n\n\t// `Object.entries` method\n\t// https://tc39.github.io/ecma262/#sec-object.entries\n\t_export({ target: 'Object', stat: true }, {\n\t entries: function entries(O) {\n\t return $entries(O);\n\t }\n\t});\n\n\tfunction _classCallCheck$1(e, t) {\n\t if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n\t}\n\n\tfunction _defineProperties$1(e, t) {\n\t for (var n = 0; n < t.length; n++) {\n\t var r = t[n];\n\t r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n\t }\n\t}\n\n\tfunction _createClass$1(e, t, n) {\n\t return t && _defineProperties$1(e.prototype, t), n && _defineProperties$1(e, n), e;\n\t}\n\n\tfunction _defineProperty$1(e, t, n) {\n\t return t in e ? Object.defineProperty(e, t, {\n\t value: n,\n\t enumerable: !0,\n\t configurable: !0,\n\t writable: !0\n\t }) : e[t] = n, e;\n\t}\n\n\tfunction _slicedToArray$1(e, t) {\n\t return _arrayWithHoles$1(e) || _iterableToArrayLimit$1(e, t) || _nonIterableRest$1();\n\t}\n\n\tfunction _arrayWithHoles$1(e) {\n\t if (Array.isArray(e)) return e;\n\t}\n\n\tfunction _iterableToArrayLimit$1(e, t) {\n\t var n = [],\n\t r = !0,\n\t o = !1,\n\t i = void 0;\n\n\t try {\n\t for (var s, a = e[Symbol.iterator](); !(r = (s = a.next()).done) && (n.push(s.value), !t || n.length !== t); r = !0) {\n\t ;\n\t }\n\t } catch (e) {\n\t o = !0, i = e;\n\t } finally {\n\t try {\n\t r || null == a.return || a.return();\n\t } finally {\n\t if (o) throw i;\n\t }\n\t }\n\n\t return n;\n\t}\n\n\tfunction _nonIterableRest$1() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t}\n\n\tvar getConstructor = function getConstructor(e) {\n\t return null != e ? e.constructor : null;\n\t},\n\t instanceOf = function instanceOf(e, t) {\n\t return !!(e && t && e instanceof t);\n\t},\n\t isNullOrUndefined = function isNullOrUndefined(e) {\n\t return null == e;\n\t},\n\t isObject$1 = function isObject(e) {\n\t return getConstructor(e) === Object;\n\t},\n\t isNumber = function isNumber(e) {\n\t return getConstructor(e) === Number && !Number.isNaN(e);\n\t},\n\t isString$1 = function isString(e) {\n\t return getConstructor(e) === String;\n\t},\n\t isBoolean = function isBoolean(e) {\n\t return getConstructor(e) === Boolean;\n\t},\n\t isFunction = function isFunction(e) {\n\t return getConstructor(e) === Function;\n\t},\n\t isArray$1 = function isArray(e) {\n\t return Array.isArray(e);\n\t},\n\t isNodeList = function isNodeList(e) {\n\t return instanceOf(e, NodeList);\n\t},\n\t isElement$1 = function isElement(e) {\n\t return instanceOf(e, Element);\n\t},\n\t isEvent$1 = function isEvent(e) {\n\t return instanceOf(e, Event);\n\t},\n\t isEmpty = function isEmpty(e) {\n\t return isNullOrUndefined(e) || (isString$1(e) || isArray$1(e) || isNodeList(e)) && !e.length || isObject$1(e) && !Object.keys(e).length;\n\t},\n\t is = {\n\t nullOrUndefined: isNullOrUndefined,\n\t object: isObject$1,\n\t number: isNumber,\n\t string: isString$1,\n\t boolean: isBoolean,\n\t function: isFunction,\n\t array: isArray$1,\n\t nodeList: isNodeList,\n\t element: isElement$1,\n\t event: isEvent$1,\n\t empty: isEmpty\n\t},\n\t constants = {\n\t facebook: {\n\t domain: \"facebook.com\",\n\t url: function url(e) {\n\t return \"https://graph.facebook.com/?id=\".concat(e, \"&fields=og_object{engagement}\");\n\t },\n\t shareCount: function shareCount(e) {\n\t return e.og_object.engagement.count;\n\t },\n\t popup: {\n\t width: 640,\n\t height: 360\n\t }\n\t },\n\t twitter: {\n\t domain: \"twitter.com\",\n\t url: function url() {\n\t return null;\n\t },\n\t shareCount: function shareCount() {\n\t return null;\n\t },\n\t popup: {\n\t width: 640,\n\t height: 240\n\t }\n\t },\n\t pinterest: {\n\t domain: \"pinterest.com\",\n\t url: function url(e) {\n\t return \"https://widgets.pinterest.com/v1/urls/count.json?url=\".concat(e);\n\t },\n\t shareCount: function shareCount(e) {\n\t return e.count;\n\t },\n\t popup: {\n\t width: 830,\n\t height: 700\n\t }\n\t },\n\t github: {\n\t domain: \"github.com\",\n\t url: function url(e, t) {\n\t return \"https://api.github.com/repos/\".concat(e).concat(is.string(t) ? \"?access_token=\".concat(t) : \"\");\n\t },\n\t shareCount: function shareCount(e) {\n\t return e.data.stargazers_count;\n\t }\n\t },\n\t youtube: {\n\t domain: \"youtube.com\",\n\t url: function url(e, t) {\n\t return \"https://www.googleapis.com/youtube/v3/channels?part=statistics&id=\".concat(e, \"&key=\").concat(t);\n\t },\n\t shareCount: function shareCount(e) {\n\t if (!is.empty(e.error)) return null;\n\n\t var t = _slicedToArray$1(e.items, 1)[0];\n\n\t return is.empty(t) ? null : t.statistics.subscriberCount;\n\t }\n\t }\n\t},\n\t defaults = {\n\t debug: !1,\n\t wrapper: {\n\t className: \"shr\"\n\t },\n\t count: {\n\t className: \"shr__count\",\n\t displayZero: !1,\n\t format: !0,\n\t position: \"after\",\n\t increment: !0\n\t },\n\t tokens: {\n\t github: \"\",\n\t youtube: \"\"\n\t },\n\t storage: {\n\t enabled: !0,\n\t key: \"shr\",\n\t ttl: 3e5\n\t }\n\t};\n\n\tfunction getJSONP(e) {\n\t return new Promise(function (t, n) {\n\t var r = \"jsonp_callback_\".concat(Math.round(1e5 * Math.random())),\n\t o = document.createElement(\"script\");\n\t o.addEventListener(\"error\", function (e) {\n\t return n(e);\n\t }), window[r] = function (e) {\n\t delete window[r], document.body.removeChild(o), t(e);\n\t };\n\t var i = new URL(e);\n\t i.searchParams.set(\"callback\", r), o.setAttribute(\"src\", i.toString()), document.body.appendChild(o);\n\t });\n\t}\n\n\tvar noop = function noop() {},\n\t Console = function () {\n\t function e() {\n\t var t = !!(0 < arguments.length && void 0 !== arguments[0]) && arguments[0];\n\t _classCallCheck$1(this, e), this.enabled = window.console && t, this.enabled && this.log(\"Debugging enabled\");\n\t }\n\n\t return _createClass$1(e, [{\n\t key: \"log\",\n\t get: function get() {\n\t return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n\t }\n\t }, {\n\t key: \"warn\",\n\t get: function get() {\n\t return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n\t }\n\t }, {\n\t key: \"error\",\n\t get: function get() {\n\t return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n\t }\n\t }]), e;\n\t}();\n\n\tfunction matches(e, t) {\n\t return function () {\n\t return Array.from(document.querySelectorAll(t)).includes(this);\n\t }.call(e, t);\n\t}\n\n\tfunction wrap$2(e, t) {\n\t var n = e.length ? e : [e];\n\t Array.from(n).reverse().forEach(function (e, n) {\n\t var r = 0 < n ? t.cloneNode(!0) : t,\n\t o = e.parentNode,\n\t i = e.nextSibling;\n\t r.appendChild(e), i ? o.insertBefore(r, i) : o.appendChild(r);\n\t });\n\t}\n\n\tfunction setAttributes(e, t) {\n\t !is.element(e) || is.empty(t) || Object.entries(t).filter(function (e) {\n\t var t = _slicedToArray$1(e, 2)[1];\n\n\t return !is.nullOrUndefined(t);\n\t }).forEach(function (t) {\n\t var n = _slicedToArray$1(t, 2),\n\t r = n[0],\n\t o = n[1];\n\n\t return e.setAttribute(r, o);\n\t });\n\t}\n\n\tfunction createElement(e, t, n) {\n\t var r = document.createElement(e);\n\t return is.object(t) && setAttributes(r, t), is.string(n) && (r.innerText = n), r;\n\t}\n\n\tfunction formatNumber(e) {\n\t var t = /\\./.test(1.1.toLocaleString()) ? \".\" : \",\",\n\t n = new RegExp(\"\\\\\".concat(t, \"\\\\d+$\"));\n\t return Math.round(e).toLocaleString().replace(n, \"\");\n\t}\n\n\tfunction extend() {\n\t for (var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length, n = Array(1 < t ? t - 1 : 0), r = 1; r < t; r++) {\n\t n[r - 1] = arguments[r];\n\t }\n\n\t if (!n.length) return e;\n\t var o = n.shift();\n\t return is.object(o) ? (Object.keys(o).forEach(function (t) {\n\t is.object(o[t]) ? (!Object.keys(e).includes(t) && Object.assign(e, _defineProperty$1({}, t, {})), extend(e[t], o[t])) : Object.assign(e, _defineProperty$1({}, t, o[t]));\n\t }), extend.apply(void 0, [e].concat(n))) : e;\n\t}\n\n\tvar Storage = function () {\n\t function e(t, n) {\n\t var r = !(2 < arguments.length && void 0 !== arguments[2]) || arguments[2];\n\t _classCallCheck$1(this, e), this.enabled = r && e.supported, this.key = t, this.ttl = n;\n\t }\n\n\t return _createClass$1(e, [{\n\t key: \"get\",\n\t value: function value(t) {\n\t if (!e.supported || !this.enabled) return null;\n\t var n = window.localStorage.getItem(this.key);\n\t if (is.empty(n)) return null;\n\t var r = window.localStorage.getItem(\"\".concat(this.key, \"_ttl\"));\n\t if (is.empty(r) || r < Date.now()) return null;\n\t var o = JSON.parse(n);\n\t return is.string(t) && t.length ? o[t] : o;\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function value(t) {\n\t if (e.supported && this.enabled && is.object(t)) {\n\t var n = this.get();\n\t is.empty(n) && (n = {}), extend(n, t), window.localStorage.setItem(this.key, JSON.stringify(n)), window.localStorage.setItem(\"\".concat(this.key, \"_ttl\"), Date.now() + this.ttl);\n\t }\n\t }\n\t }], [{\n\t key: \"supported\",\n\t get: function get() {\n\t try {\n\t return \"localStorage\" in window && (window.localStorage.setItem(\"___test\", \"___test\"), window.localStorage.removeItem(\"___test\"), !0);\n\t } catch (e) {\n\t return !1;\n\t }\n\t }\n\t }]), e;\n\t}();\n\n\tfunction getDomain(e) {\n\t var t = new URL(e).hostname,\n\t n = t.split(\".\"),\n\t r = n.length;\n\t return 2 < r && (t = \"\".concat(n[r - 2], \".\").concat(n[r - 1]), 2 === n[r - 2].length && 2 === n[r - 1].length && (t = \"\".concat(n[r - 3], \".\").concat(t))), t;\n\t}\n\n\tvar Shr = function () {\n\t function e(t, n) {\n\t var r = this;\n\t _classCallCheck$1(this, e), this.elements = {\n\t count: null,\n\t trigger: null,\n\t popup: null\n\t }, is.element(t) ? this.elements.trigger = t : is.string(t) && (this.elements.trigger = document.querySelector(t)), is.element(this.elements.trigger) && is.empty(this.elements.trigger.shr) && (this.config = extend({}, defaults, n, {\n\t networks: constants\n\t }), this.console = new Console(this.config.debug), this.storage = new Storage(this.config.storage.key, this.config.storage.ttl, this.config.storage.enabled), this.getCount().then(function (e) {\n\t return r.updateDisplay(e);\n\t }).catch(function () {}), this.listeners(!0), this.elements.trigger.shr = this);\n\t }\n\n\t return _createClass$1(e, [{\n\t key: \"destroy\",\n\t value: function value() {\n\t this.listeners(!1);\n\t }\n\t }, {\n\t key: \"listeners\",\n\t value: function value() {\n\t var e = this,\n\t t = !!(0 < arguments.length && void 0 !== arguments[0]) && arguments[0] ? \"addEventListener\" : \"removeEventListener\";\n\t this.elements.trigger[t](\"click\", function (t) {\n\t return e.share(t);\n\t }, !1);\n\t }\n\t }, {\n\t key: \"share\",\n\t value: function value(e) {\n\t var t = this;\n\t this.openPopup(e);\n\t var n = this.config.count.increment;\n\t this.getCount().then(function (e) {\n\t return t.updateDisplay(e, n);\n\t }).catch(function () {});\n\t }\n\t }, {\n\t key: \"openPopup\",\n\t value: function value(e) {\n\t if (!is.empty(this.network) && this.networkConfig.popup) {\n\t is.event(e) && e.preventDefault();\n\t var t = this.networkConfig.popup,\n\t n = t.width,\n\t r = t.height,\n\t o = \"shr-popup--\".concat(this.network);\n\t if (this.popup && !this.popup.closed) this.popup.focus(), this.console.log(\"Popup re-focused.\");else {\n\t var i = void 0 === window.screenLeft ? window.screen.left : window.screenLeft,\n\t s = void 0 === window.screenTop ? window.screen.top : window.screenTop,\n\t a = window.screen.width / 2 - n / 2 + i,\n\t c = window.screen.height / 2 - r / 2 + s;\n\t this.popup = window.open(this.href, o, \"top=\".concat(c, \",left=\").concat(a, \",width=\").concat(n, \",height=\").concat(r)), !this.popup || this.popup.closed || !is.boolean(this.popup.closed) ? this.console.error(\"Popup blocked.\") : (this.popup.focus(), this.console.log(\"Popup opened.\"));\n\t }\n\t }\n\t }\n\t }, {\n\t key: \"getCount\",\n\t value: function value() {\n\t var e = this,\n\t t = !(0 < arguments.length && void 0 !== arguments[0]) || arguments[0];\n\t return new Promise(function (n, r) {\n\t var o = e.apiUrl;\n\t if (is.empty(o)) r(new Error(\"No URL available for \".concat(e.network, \".\")));else {\n\t if (t) {\n\t var i = e.storage.get(e.target);\n\n\t if (!is.empty(i) && Object.keys(i).includes(e.network)) {\n\t var s = i[e.network];\n\t return n(is.number(s) ? s : 0), void e.console.log(\"getCount for '\".concat(e.target, \"' for '\").concat(e.network, \"' resolved from cache.\"));\n\t }\n\t }\n\n\t getJSONP(o).then(function (t) {\n\t var r = 0,\n\t o = e.elements.trigger.getAttribute(\"data-shr-display\");\n\t r = is.empty(o) ? e.networkConfig.shareCount(t) : t[o], is.empty(r) ? r = 0 : (r = parseInt(r, 10), !is.number(r) && (r = 0)), e.storage.set(_defineProperty$1({}, e.target, _defineProperty$1({}, e.network, r))), n(r);\n\t }).catch(r);\n\t }\n\t });\n\t }\n\t }, {\n\t key: \"updateDisplay\",\n\t value: function value(e) {\n\t var t = !!(1 < arguments.length && void 0 !== arguments[1]) && arguments[1],\n\t n = this.config,\n\t r = n.count,\n\t o = n.wrapper,\n\t i = t ? e + 1 : e,\n\t s = r.position.toLowerCase();\n\n\t if (0 < i || r.displayZero) {\n\t var a = function a(e) {\n\t return Math.round(i / e * 10) / 10;\n\t },\n\t c = formatNumber(i);\n\n\t r.format && (1e6 < i ? c = \"\".concat(a(1e6), \"M\") : 1e3 < i && (c = \"\".concat(a(1e3), \"K\"))), is.element(this.elements.count) ? this.elements.count.textContent = c : (wrap$2(this.elements.trigger, createElement(\"span\", {\n\t class: o.className\n\t })), this.elements.count = createElement(\"span\", {\n\t class: \"\".concat(r.className, \" \").concat(r.className, \"--\").concat(s)\n\t }, c), this.elements.trigger.insertAdjacentElement(\"after\" === s ? \"afterend\" : \"beforebegin\", this.elements.count));\n\t }\n\t }\n\t }, {\n\t key: \"href\",\n\t get: function get() {\n\t return is.element(this.elements.trigger) ? this.elements.trigger.href : null;\n\t }\n\t }, {\n\t key: \"network\",\n\t get: function get() {\n\t var e = this;\n\t if (!is.element(this.elements.trigger)) return null;\n\t var t = this.config.networks;\n\t return Object.keys(t).find(function (n) {\n\t return getDomain(e.href) === t[n].domain;\n\t });\n\t }\n\t }, {\n\t key: \"networkConfig\",\n\t get: function get() {\n\t return is.empty(this.network) ? null : this.config.networks[this.network];\n\t }\n\t }, {\n\t key: \"target\",\n\t get: function get() {\n\t if (is.empty(this.network)) return null;\n\t var e = new URL(this.href);\n\n\t switch (this.network) {\n\t case \"facebook\":\n\t return e.searchParams.get(\"u\");\n\n\t case \"github\":\n\t return e.pathname.substring(1);\n\n\t case \"youtube\":\n\t return e.pathname.split(\"/\").pop();\n\n\t default:\n\t return e.searchParams.get(\"url\");\n\t }\n\t }\n\t }, {\n\t key: \"apiUrl\",\n\t get: function get() {\n\t if (is.empty(this.network)) return null;\n\t var e = this.config.tokens;\n\n\t switch (this.network) {\n\t case \"github\":\n\t return this.networkConfig.url(this.target, e.github);\n\n\t case \"youtube\":\n\t return this.networkConfig.url(this.target, e.youtube);\n\n\t default:\n\t return this.networkConfig.url(encodeURIComponent(this.target));\n\t }\n\t }\n\t }], [{\n\t key: \"setup\",\n\t value: function value(t) {\n\t var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},\n\t r = null;\n\t if (is.string(t) ? r = Array.from(document.querySelectorAll(t)) : is.element(t) ? r = [t] : is.nodeList(t) ? r = Array.from(t) : is.array(t) && (r = t.filter(is.element)), is.empty(r)) return null;\n\t var o = Object.assign({}, defaults, n);\n\t is.string(t) && o.watch && new MutationObserver(function (n) {\n\t Array.from(n).forEach(function (n) {\n\t Array.from(n.addedNodes).forEach(function (n) {\n\t is.element(n) && matches(n, t) && new e(n, o);\n\t });\n\t });\n\t }).observe(document.body, {\n\t childList: !0,\n\t subtree: !0\n\t });\n\t return r.map(function (t) {\n\t return new e(t, n);\n\t });\n\t }\n\t }]), e;\n\t}();\n\n\tvar check$1 = function (it) {\n\t return it && it.Math == Math && it;\n\t};\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global_1$1 =\n\t // eslint-disable-next-line no-undef\n\t check$1(typeof globalThis == 'object' && globalThis) ||\n\t check$1(typeof window == 'object' && window) ||\n\t check$1(typeof self == 'object' && self) ||\n\t check$1(typeof commonjsGlobal == 'object' && commonjsGlobal) ||\n\t // eslint-disable-next-line no-new-func\n\t Function('return this')();\n\n\tvar fails$1 = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (error) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar descriptors$1 = !fails$1(function () {\n\t return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n\t});\n\n\tvar nativePropertyIsEnumerable$2 = {}.propertyIsEnumerable;\n\tvar getOwnPropertyDescriptor$4 = Object.getOwnPropertyDescriptor;\n\n\t// Nashorn ~ JDK8 bug\n\tvar NASHORN_BUG$1 = getOwnPropertyDescriptor$4 && !nativePropertyIsEnumerable$2.call({ 1: 2 }, 1);\n\n\t// `Object.prototype.propertyIsEnumerable` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\n\tvar f$8 = NASHORN_BUG$1 ? function propertyIsEnumerable(V) {\n\t var descriptor = getOwnPropertyDescriptor$4(this, V);\n\t return !!descriptor && descriptor.enumerable;\n\t} : nativePropertyIsEnumerable$2;\n\n\tvar objectPropertyIsEnumerable$1 = {\n\t\tf: f$8\n\t};\n\n\tvar createPropertyDescriptor$1 = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar toString$2 = {}.toString;\n\n\tvar classofRaw$1 = function (it) {\n\t return toString$2.call(it).slice(8, -1);\n\t};\n\n\tvar split$1 = ''.split;\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar indexedObject$1 = fails$1(function () {\n\t // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n\t // eslint-disable-next-line no-prototype-builtins\n\t return !Object('z').propertyIsEnumerable(0);\n\t}) ? function (it) {\n\t return classofRaw$1(it) == 'String' ? split$1.call(it, '') : Object(it);\n\t} : Object;\n\n\t// `RequireObjectCoercible` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\n\tvar requireObjectCoercible$1 = function (it) {\n\t if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n\t// toObject with fallback for non-array-like ES3 strings\n\n\n\n\tvar toIndexedObject$1 = function (it) {\n\t return indexedObject$1(requireObjectCoercible$1(it));\n\t};\n\n\tvar isObject$2 = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\t// `ToPrimitive` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toprimitive\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar toPrimitive$1 = function (input, PREFERRED_STRING) {\n\t if (!isObject$2(input)) return input;\n\t var fn, val;\n\t if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$2(val = fn.call(input))) return val;\n\t if (typeof (fn = input.valueOf) == 'function' && !isObject$2(val = fn.call(input))) return val;\n\t if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject$2(val = fn.call(input))) return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar hasOwnProperty$1 = {}.hasOwnProperty;\n\n\tvar has$2 = function (it, key) {\n\t return hasOwnProperty$1.call(it, key);\n\t};\n\n\tvar document$3 = global_1$1.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar EXISTS$1 = isObject$2(document$3) && isObject$2(document$3.createElement);\n\n\tvar documentCreateElement$1 = function (it) {\n\t return EXISTS$1 ? document$3.createElement(it) : {};\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar ie8DomDefine$1 = !descriptors$1 && !fails$1(function () {\n\t return Object.defineProperty(documentCreateElement$1('div'), 'a', {\n\t get: function () { return 7; }\n\t }).a != 7;\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor$3 = Object.getOwnPropertyDescriptor;\n\n\t// `Object.getOwnPropertyDescriptor` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\tvar f$9 = descriptors$1 ? nativeGetOwnPropertyDescriptor$3 : function getOwnPropertyDescriptor(O, P) {\n\t O = toIndexedObject$1(O);\n\t P = toPrimitive$1(P, true);\n\t if (ie8DomDefine$1) try {\n\t return nativeGetOwnPropertyDescriptor$3(O, P);\n\t } catch (error) { /* empty */ }\n\t if (has$2(O, P)) return createPropertyDescriptor$1(!objectPropertyIsEnumerable$1.f.call(O, P), O[P]);\n\t};\n\n\tvar objectGetOwnPropertyDescriptor$1 = {\n\t\tf: f$9\n\t};\n\n\tvar anObject$1 = function (it) {\n\t if (!isObject$2(it)) {\n\t throw TypeError(String(it) + ' is not an object');\n\t } return it;\n\t};\n\n\tvar nativeDefineProperty$2 = Object.defineProperty;\n\n\t// `Object.defineProperty` method\n\t// https://tc39.github.io/ecma262/#sec-object.defineproperty\n\tvar f$a = descriptors$1 ? nativeDefineProperty$2 : function defineProperty(O, P, Attributes) {\n\t anObject$1(O);\n\t P = toPrimitive$1(P, true);\n\t anObject$1(Attributes);\n\t if (ie8DomDefine$1) try {\n\t return nativeDefineProperty$2(O, P, Attributes);\n\t } catch (error) { /* empty */ }\n\t if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n\t if ('value' in Attributes) O[P] = Attributes.value;\n\t return O;\n\t};\n\n\tvar objectDefineProperty$1 = {\n\t\tf: f$a\n\t};\n\n\tvar createNonEnumerableProperty$1 = descriptors$1 ? function (object, key, value) {\n\t return objectDefineProperty$1.f(object, key, createPropertyDescriptor$1(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar setGlobal$1 = function (key, value) {\n\t try {\n\t createNonEnumerableProperty$1(global_1$1, key, value);\n\t } catch (error) {\n\t global_1$1[key] = value;\n\t } return value;\n\t};\n\n\tvar SHARED$1 = '__core-js_shared__';\n\tvar store$2 = global_1$1[SHARED$1] || setGlobal$1(SHARED$1, {});\n\n\tvar sharedStore$1 = store$2;\n\n\tvar functionToString$1 = Function.toString;\n\n\t// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\n\tif (typeof sharedStore$1.inspectSource != 'function') {\n\t sharedStore$1.inspectSource = function (it) {\n\t return functionToString$1.call(it);\n\t };\n\t}\n\n\tvar inspectSource$1 = sharedStore$1.inspectSource;\n\n\tvar WeakMap$3 = global_1$1.WeakMap;\n\n\tvar nativeWeakMap$1 = typeof WeakMap$3 === 'function' && /native code/.test(inspectSource$1(WeakMap$3));\n\n\tvar isPure$1 = false;\n\n\tvar shared$1 = createCommonjsModule(function (module) {\n\t(module.exports = function (key, value) {\n\t return sharedStore$1[key] || (sharedStore$1[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: '3.6.5',\n\t mode: 'global',\n\t copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar id$2 = 0;\n\tvar postfix$1 = Math.random();\n\n\tvar uid$1 = function (key) {\n\t return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id$2 + postfix$1).toString(36);\n\t};\n\n\tvar keys$4 = shared$1('keys');\n\n\tvar sharedKey$1 = function (key) {\n\t return keys$4[key] || (keys$4[key] = uid$1(key));\n\t};\n\n\tvar hiddenKeys$2 = {};\n\n\tvar WeakMap$4 = global_1$1.WeakMap;\n\tvar set$3, get$2, has$3;\n\n\tvar enforce$1 = function (it) {\n\t return has$3(it) ? get$2(it) : set$3(it, {});\n\t};\n\n\tvar getterFor$1 = function (TYPE) {\n\t return function (it) {\n\t var state;\n\t if (!isObject$2(it) || (state = get$2(it)).type !== TYPE) {\n\t throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n\t } return state;\n\t };\n\t};\n\n\tif (nativeWeakMap$1) {\n\t var store$3 = new WeakMap$4();\n\t var wmget$1 = store$3.get;\n\t var wmhas$1 = store$3.has;\n\t var wmset$1 = store$3.set;\n\t set$3 = function (it, metadata) {\n\t wmset$1.call(store$3, it, metadata);\n\t return metadata;\n\t };\n\t get$2 = function (it) {\n\t return wmget$1.call(store$3, it) || {};\n\t };\n\t has$3 = function (it) {\n\t return wmhas$1.call(store$3, it);\n\t };\n\t} else {\n\t var STATE$1 = sharedKey$1('state');\n\t hiddenKeys$2[STATE$1] = true;\n\t set$3 = function (it, metadata) {\n\t createNonEnumerableProperty$1(it, STATE$1, metadata);\n\t return metadata;\n\t };\n\t get$2 = function (it) {\n\t return has$2(it, STATE$1) ? it[STATE$1] : {};\n\t };\n\t has$3 = function (it) {\n\t return has$2(it, STATE$1);\n\t };\n\t}\n\n\tvar internalState$1 = {\n\t set: set$3,\n\t get: get$2,\n\t has: has$3,\n\t enforce: enforce$1,\n\t getterFor: getterFor$1\n\t};\n\n\tvar redefine$1 = createCommonjsModule(function (module) {\n\tvar getInternalState = internalState$1.get;\n\tvar enforceInternalState = internalState$1.enforce;\n\tvar TEMPLATE = String(String).split('String');\n\n\t(module.exports = function (O, key, value, options) {\n\t var unsafe = options ? !!options.unsafe : false;\n\t var simple = options ? !!options.enumerable : false;\n\t var noTargetGet = options ? !!options.noTargetGet : false;\n\t if (typeof value == 'function') {\n\t if (typeof key == 'string' && !has$2(value, 'name')) createNonEnumerableProperty$1(value, 'name', key);\n\t enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n\t }\n\t if (O === global_1$1) {\n\t if (simple) O[key] = value;\n\t else setGlobal$1(key, value);\n\t return;\n\t } else if (!unsafe) {\n\t delete O[key];\n\t } else if (!noTargetGet && O[key]) {\n\t simple = true;\n\t }\n\t if (simple) O[key] = value;\n\t else createNonEnumerableProperty$1(O, key, value);\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, 'toString', function toString() {\n\t return typeof this == 'function' && getInternalState(this).source || inspectSource$1(this);\n\t});\n\t});\n\n\tvar path$1 = global_1$1;\n\n\tvar aFunction$2 = function (variable) {\n\t return typeof variable == 'function' ? variable : undefined;\n\t};\n\n\tvar getBuiltIn$1 = function (namespace, method) {\n\t return arguments.length < 2 ? aFunction$2(path$1[namespace]) || aFunction$2(global_1$1[namespace])\n\t : path$1[namespace] && path$1[namespace][method] || global_1$1[namespace] && global_1$1[namespace][method];\n\t};\n\n\tvar ceil$1 = Math.ceil;\n\tvar floor$6 = Math.floor;\n\n\t// `ToInteger` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tointeger\n\tvar toInteger$1 = function (argument) {\n\t return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor$6 : ceil$1)(argument);\n\t};\n\n\tvar min$7 = Math.min;\n\n\t// `ToLength` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tolength\n\tvar toLength$1 = function (argument) {\n\t return argument > 0 ? min$7(toInteger$1(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n\t};\n\n\tvar max$4 = Math.max;\n\tvar min$8 = Math.min;\n\n\t// Helper for a popular repeating case of the spec:\n\t// Let integer be ? ToInteger(index).\n\t// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\n\tvar toAbsoluteIndex$1 = function (index, length) {\n\t var integer = toInteger$1(index);\n\t return integer < 0 ? max$4(integer + length, 0) : min$8(integer, length);\n\t};\n\n\t// `Array.prototype.{ indexOf, includes }` methods implementation\n\tvar createMethod$6 = function (IS_INCLUDES) {\n\t return function ($this, el, fromIndex) {\n\t var O = toIndexedObject$1($this);\n\t var length = toLength$1(O.length);\n\t var index = toAbsoluteIndex$1(fromIndex, length);\n\t var value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t // eslint-disable-next-line no-self-compare\n\t if (IS_INCLUDES && el != el) while (length > index) {\n\t value = O[index++];\n\t // eslint-disable-next-line no-self-compare\n\t if (value != value) return true;\n\t // Array#indexOf ignores holes, Array#includes - not\n\t } else for (;length > index; index++) {\n\t if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n\tvar arrayIncludes$1 = {\n\t // `Array.prototype.includes` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t includes: createMethod$6(true),\n\t // `Array.prototype.indexOf` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t indexOf: createMethod$6(false)\n\t};\n\n\tvar indexOf$1 = arrayIncludes$1.indexOf;\n\n\n\tvar objectKeysInternal$1 = function (object, names) {\n\t var O = toIndexedObject$1(object);\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t for (key in O) !has$2(hiddenKeys$2, key) && has$2(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while (names.length > i) if (has$2(O, key = names[i++])) {\n\t ~indexOf$1(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n\t// IE8- don't enum bug keys\n\tvar enumBugKeys$1 = [\n\t 'constructor',\n\t 'hasOwnProperty',\n\t 'isPrototypeOf',\n\t 'propertyIsEnumerable',\n\t 'toLocaleString',\n\t 'toString',\n\t 'valueOf'\n\t];\n\n\tvar hiddenKeys$3 = enumBugKeys$1.concat('length', 'prototype');\n\n\t// `Object.getOwnPropertyNames` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\tvar f$b = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n\t return objectKeysInternal$1(O, hiddenKeys$3);\n\t};\n\n\tvar objectGetOwnPropertyNames$1 = {\n\t\tf: f$b\n\t};\n\n\tvar f$c = Object.getOwnPropertySymbols;\n\n\tvar objectGetOwnPropertySymbols$1 = {\n\t\tf: f$c\n\t};\n\n\t// all object keys, includes non-enumerable and symbols\n\tvar ownKeys$2 = getBuiltIn$1('Reflect', 'ownKeys') || function ownKeys(it) {\n\t var keys = objectGetOwnPropertyNames$1.f(anObject$1(it));\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols$1.f;\n\t return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n\t};\n\n\tvar copyConstructorProperties$1 = function (target, source) {\n\t var keys = ownKeys$2(source);\n\t var defineProperty = objectDefineProperty$1.f;\n\t var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor$1.f;\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t if (!has$2(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n\t }\n\t};\n\n\tvar replacement$1 = /#|\\.prototype\\./;\n\n\tvar isForced$1 = function (feature, detection) {\n\t var value = data$1[normalize$2(feature)];\n\t return value == POLYFILL$1 ? true\n\t : value == NATIVE$1 ? false\n\t : typeof detection == 'function' ? fails$1(detection)\n\t : !!detection;\n\t};\n\n\tvar normalize$2 = isForced$1.normalize = function (string) {\n\t return String(string).replace(replacement$1, '.').toLowerCase();\n\t};\n\n\tvar data$1 = isForced$1.data = {};\n\tvar NATIVE$1 = isForced$1.NATIVE = 'N';\n\tvar POLYFILL$1 = isForced$1.POLYFILL = 'P';\n\n\tvar isForced_1$1 = isForced$1;\n\n\tvar getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor$1.f;\n\n\n\n\n\n\n\t/*\n\t options.target - name of the target object\n\t options.global - target is the global object\n\t options.stat - export as static methods of target\n\t options.proto - export as prototype methods of target\n\t options.real - real prototype method for the `pure` version\n\t options.forced - export even if the native feature is available\n\t options.bind - bind methods to the target, required for the `pure` version\n\t options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n\t options.unsafe - use the simple assignment of property instead of delete + defineProperty\n\t options.sham - add a flag to not completely full polyfills\n\t options.enumerable - export as enumerable property\n\t options.noTargetGet - prevent calling a getter on target\n\t*/\n\tvar _export$1 = function (options, source) {\n\t var TARGET = options.target;\n\t var GLOBAL = options.global;\n\t var STATIC = options.stat;\n\t var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\t if (GLOBAL) {\n\t target = global_1$1;\n\t } else if (STATIC) {\n\t target = global_1$1[TARGET] || setGlobal$1(TARGET, {});\n\t } else {\n\t target = (global_1$1[TARGET] || {}).prototype;\n\t }\n\t if (target) for (key in source) {\n\t sourceProperty = source[key];\n\t if (options.noTargetGet) {\n\t descriptor = getOwnPropertyDescriptor$5(target, key);\n\t targetProperty = descriptor && descriptor.value;\n\t } else targetProperty = target[key];\n\t FORCED = isForced_1$1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n\t // contained in target\n\t if (!FORCED && targetProperty !== undefined) {\n\t if (typeof sourceProperty === typeof targetProperty) continue;\n\t copyConstructorProperties$1(sourceProperty, targetProperty);\n\t }\n\t // add a flag to not completely full polyfills\n\t if (options.sham || (targetProperty && targetProperty.sham)) {\n\t createNonEnumerableProperty$1(sourceProperty, 'sham', true);\n\t }\n\t // extend global\n\t redefine$1(target, key, sourceProperty, options);\n\t }\n\t};\n\n\t// `IsArray` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isarray\n\tvar isArray$2 = Array.isArray || function isArray(arg) {\n\t return classofRaw$1(arg) == 'Array';\n\t};\n\n\t// `ToObject` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-toobject\n\tvar toObject$1 = function (argument) {\n\t return Object(requireObjectCoercible$1(argument));\n\t};\n\n\tvar createProperty$1 = function (object, key, value) {\n\t var propertyKey = toPrimitive$1(key);\n\t if (propertyKey in object) objectDefineProperty$1.f(object, propertyKey, createPropertyDescriptor$1(0, value));\n\t else object[propertyKey] = value;\n\t};\n\n\tvar nativeSymbol$1 = !!Object.getOwnPropertySymbols && !fails$1(function () {\n\t // Chrome 38 Symbol has incorrect toString conversion\n\t // eslint-disable-next-line no-undef\n\t return !String(Symbol());\n\t});\n\n\tvar useSymbolAsUid$1 = nativeSymbol$1\n\t // eslint-disable-next-line no-undef\n\t && !Symbol.sham\n\t // eslint-disable-next-line no-undef\n\t && typeof Symbol.iterator == 'symbol';\n\n\tvar WellKnownSymbolsStore$2 = shared$1('wks');\n\tvar Symbol$2 = global_1$1.Symbol;\n\tvar createWellKnownSymbol$1 = useSymbolAsUid$1 ? Symbol$2 : Symbol$2 && Symbol$2.withoutSetter || uid$1;\n\n\tvar wellKnownSymbol$1 = function (name) {\n\t if (!has$2(WellKnownSymbolsStore$2, name)) {\n\t if (nativeSymbol$1 && has$2(Symbol$2, name)) WellKnownSymbolsStore$2[name] = Symbol$2[name];\n\t else WellKnownSymbolsStore$2[name] = createWellKnownSymbol$1('Symbol.' + name);\n\t } return WellKnownSymbolsStore$2[name];\n\t};\n\n\tvar SPECIES$7 = wellKnownSymbol$1('species');\n\n\t// `ArraySpeciesCreate` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\n\tvar arraySpeciesCreate$1 = function (originalArray, length) {\n\t var C;\n\t if (isArray$2(originalArray)) {\n\t C = originalArray.constructor;\n\t // cross-realm fallback\n\t if (typeof C == 'function' && (C === Array || isArray$2(C.prototype))) C = undefined;\n\t else if (isObject$2(C)) {\n\t C = C[SPECIES$7];\n\t if (C === null) C = undefined;\n\t }\n\t } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n\t};\n\n\tvar engineUserAgent$1 = getBuiltIn$1('navigator', 'userAgent') || '';\n\n\tvar process$5 = global_1$1.process;\n\tvar versions$1 = process$5 && process$5.versions;\n\tvar v8$1 = versions$1 && versions$1.v8;\n\tvar match$1, version$1;\n\n\tif (v8$1) {\n\t match$1 = v8$1.split('.');\n\t version$1 = match$1[0] + match$1[1];\n\t} else if (engineUserAgent$1) {\n\t match$1 = engineUserAgent$1.match(/Edge\\/(\\d+)/);\n\t if (!match$1 || match$1[1] >= 74) {\n\t match$1 = engineUserAgent$1.match(/Chrome\\/(\\d+)/);\n\t if (match$1) version$1 = match$1[1];\n\t }\n\t}\n\n\tvar engineV8Version$1 = version$1 && +version$1;\n\n\tvar SPECIES$8 = wellKnownSymbol$1('species');\n\n\tvar arrayMethodHasSpeciesSupport$1 = function (METHOD_NAME) {\n\t // We can't use this feature detection in V8 since it causes\n\t // deoptimization and serious performance degradation\n\t // https://github.com/zloirock/core-js/issues/677\n\t return engineV8Version$1 >= 51 || !fails$1(function () {\n\t var array = [];\n\t var constructor = array.constructor = {};\n\t constructor[SPECIES$8] = function () {\n\t return { foo: 1 };\n\t };\n\t return array[METHOD_NAME](Boolean).foo !== 1;\n\t });\n\t};\n\n\tvar IS_CONCAT_SPREADABLE$1 = wellKnownSymbol$1('isConcatSpreadable');\n\tvar MAX_SAFE_INTEGER$2 = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_INDEX_EXCEEDED$1 = 'Maximum allowed index exceeded';\n\n\t// We can't use this feature detection in V8 since it causes\n\t// deoptimization and serious performance degradation\n\t// https://github.com/zloirock/core-js/issues/679\n\tvar IS_CONCAT_SPREADABLE_SUPPORT$1 = engineV8Version$1 >= 51 || !fails$1(function () {\n\t var array = [];\n\t array[IS_CONCAT_SPREADABLE$1] = false;\n\t return array.concat()[0] !== array;\n\t});\n\n\tvar SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('concat');\n\n\tvar isConcatSpreadable$1 = function (O) {\n\t if (!isObject$2(O)) return false;\n\t var spreadable = O[IS_CONCAT_SPREADABLE$1];\n\t return spreadable !== undefined ? !!spreadable : isArray$2(O);\n\t};\n\n\tvar FORCED$8 = !IS_CONCAT_SPREADABLE_SUPPORT$1 || !SPECIES_SUPPORT$1;\n\n\t// `Array.prototype.concat` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n\t// with adding support of @@isConcatSpreadable and @@species\n\t_export$1({ target: 'Array', proto: true, forced: FORCED$8 }, {\n\t concat: function concat(arg) { // eslint-disable-line no-unused-vars\n\t var O = toObject$1(this);\n\t var A = arraySpeciesCreate$1(O, 0);\n\t var n = 0;\n\t var i, k, length, len, E;\n\t for (i = -1, length = arguments.length; i < length; i++) {\n\t E = i === -1 ? O : arguments[i];\n\t if (isConcatSpreadable$1(E)) {\n\t len = toLength$1(E.length);\n\t if (n + len > MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED$1);\n\t for (k = 0; k < len; k++, n++) if (k in E) createProperty$1(A, n, E[k]);\n\t } else {\n\t if (n >= MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED$1);\n\t createProperty$1(A, n++, E);\n\t }\n\t }\n\t A.length = n;\n\t return A;\n\t }\n\t});\n\n\tvar aFunction$3 = function (it) {\n\t if (typeof it != 'function') {\n\t throw TypeError(String(it) + ' is not a function');\n\t } return it;\n\t};\n\n\t// optional / simple context binding\n\tvar functionBindContext$1 = function (fn, that, length) {\n\t aFunction$3(fn);\n\t if (that === undefined) return fn;\n\t switch (length) {\n\t case 0: return function () {\n\t return fn.call(that);\n\t };\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar push$1 = [].push;\n\n\t// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\n\tvar createMethod$7 = function (TYPE) {\n\t var IS_MAP = TYPE == 1;\n\t var IS_FILTER = TYPE == 2;\n\t var IS_SOME = TYPE == 3;\n\t var IS_EVERY = TYPE == 4;\n\t var IS_FIND_INDEX = TYPE == 6;\n\t var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n\t return function ($this, callbackfn, that, specificCreate) {\n\t var O = toObject$1($this);\n\t var self = indexedObject$1(O);\n\t var boundFunction = functionBindContext$1(callbackfn, that, 3);\n\t var length = toLength$1(self.length);\n\t var index = 0;\n\t var create = specificCreate || arraySpeciesCreate$1;\n\t var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n\t var value, result;\n\t for (;length > index; index++) if (NO_HOLES || index in self) {\n\t value = self[index];\n\t result = boundFunction(value, index, O);\n\t if (TYPE) {\n\t if (IS_MAP) target[index] = result; // map\n\t else if (result) switch (TYPE) {\n\t case 3: return true; // some\n\t case 5: return value; // find\n\t case 6: return index; // findIndex\n\t case 2: push$1.call(target, value); // filter\n\t } else if (IS_EVERY) return false; // every\n\t }\n\t }\n\t return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n\t };\n\t};\n\n\tvar arrayIteration$1 = {\n\t // `Array.prototype.forEach` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t forEach: createMethod$7(0),\n\t // `Array.prototype.map` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t map: createMethod$7(1),\n\t // `Array.prototype.filter` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t filter: createMethod$7(2),\n\t // `Array.prototype.some` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t some: createMethod$7(3),\n\t // `Array.prototype.every` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.every\n\t every: createMethod$7(4),\n\t // `Array.prototype.find` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t find: createMethod$7(5),\n\t // `Array.prototype.findIndex` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\t findIndex: createMethod$7(6)\n\t};\n\n\tvar defineProperty$a = Object.defineProperty;\n\tvar cache$1 = {};\n\n\tvar thrower$1 = function (it) { throw it; };\n\n\tvar arrayMethodUsesToLength$1 = function (METHOD_NAME, options) {\n\t if (has$2(cache$1, METHOD_NAME)) return cache$1[METHOD_NAME];\n\t if (!options) options = {};\n\t var method = [][METHOD_NAME];\n\t var ACCESSORS = has$2(options, 'ACCESSORS') ? options.ACCESSORS : false;\n\t var argument0 = has$2(options, 0) ? options[0] : thrower$1;\n\t var argument1 = has$2(options, 1) ? options[1] : undefined;\n\n\t return cache$1[METHOD_NAME] = !!method && !fails$1(function () {\n\t if (ACCESSORS && !descriptors$1) return true;\n\t var O = { length: -1 };\n\n\t if (ACCESSORS) defineProperty$a(O, 1, { enumerable: true, get: thrower$1 });\n\t else O[1] = 1;\n\n\t method.call(O, argument0, argument1);\n\t });\n\t};\n\n\tvar $filter$2 = arrayIteration$1.filter;\n\n\n\n\tvar HAS_SPECIES_SUPPORT$4 = arrayMethodHasSpeciesSupport$1('filter');\n\t// Edge 14- issue\n\tvar USES_TO_LENGTH$a = arrayMethodUsesToLength$1('filter');\n\n\t// `Array.prototype.filter` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n\t// with adding support of @@species\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$4 || !USES_TO_LENGTH$a }, {\n\t filter: function filter(callbackfn /* , thisArg */) {\n\t return $filter$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\tvar objectKeys$1 = Object.keys || function keys(O) {\n\t return objectKeysInternal$1(O, enumBugKeys$1);\n\t};\n\n\t// `Object.defineProperties` method\n\t// https://tc39.github.io/ecma262/#sec-object.defineproperties\n\tvar objectDefineProperties$1 = descriptors$1 ? Object.defineProperties : function defineProperties(O, Properties) {\n\t anObject$1(O);\n\t var keys = objectKeys$1(Properties);\n\t var length = keys.length;\n\t var index = 0;\n\t var key;\n\t while (length > index) objectDefineProperty$1.f(O, key = keys[index++], Properties[key]);\n\t return O;\n\t};\n\n\tvar html$1 = getBuiltIn$1('document', 'documentElement');\n\n\tvar GT$1 = '>';\n\tvar LT$1 = '<';\n\tvar PROTOTYPE$3 = 'prototype';\n\tvar SCRIPT$1 = 'script';\n\tvar IE_PROTO$2 = sharedKey$1('IE_PROTO');\n\n\tvar EmptyConstructor$1 = function () { /* empty */ };\n\n\tvar scriptTag$1 = function (content) {\n\t return LT$1 + SCRIPT$1 + GT$1 + content + LT$1 + '/' + SCRIPT$1 + GT$1;\n\t};\n\n\t// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n\tvar NullProtoObjectViaActiveX$1 = function (activeXDocument) {\n\t activeXDocument.write(scriptTag$1(''));\n\t activeXDocument.close();\n\t var temp = activeXDocument.parentWindow.Object;\n\t activeXDocument = null; // avoid memory leak\n\t return temp;\n\t};\n\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\n\tvar NullProtoObjectViaIFrame$1 = function () {\n\t // Thrash, waste and sodomy: IE GC bug\n\t var iframe = documentCreateElement$1('iframe');\n\t var JS = 'java' + SCRIPT$1 + ':';\n\t var iframeDocument;\n\t iframe.style.display = 'none';\n\t html$1.appendChild(iframe);\n\t // https://github.com/zloirock/core-js/issues/475\n\t iframe.src = String(JS);\n\t iframeDocument = iframe.contentWindow.document;\n\t iframeDocument.open();\n\t iframeDocument.write(scriptTag$1('document.F=Object'));\n\t iframeDocument.close();\n\t return iframeDocument.F;\n\t};\n\n\t// Check for document.domain and active x support\n\t// No need to use active x approach when document.domain is not set\n\t// see https://github.com/es-shims/es5-shim/issues/150\n\t// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n\t// avoid IE GC bug\n\tvar activeXDocument$1;\n\tvar NullProtoObject$1 = function () {\n\t try {\n\t /* global ActiveXObject */\n\t activeXDocument$1 = document.domain && new ActiveXObject('htmlfile');\n\t } catch (error) { /* ignore */ }\n\t NullProtoObject$1 = activeXDocument$1 ? NullProtoObjectViaActiveX$1(activeXDocument$1) : NullProtoObjectViaIFrame$1();\n\t var length = enumBugKeys$1.length;\n\t while (length--) delete NullProtoObject$1[PROTOTYPE$3][enumBugKeys$1[length]];\n\t return NullProtoObject$1();\n\t};\n\n\thiddenKeys$2[IE_PROTO$2] = true;\n\n\t// `Object.create` method\n\t// https://tc39.github.io/ecma262/#sec-object.create\n\tvar objectCreate$1 = Object.create || function create(O, Properties) {\n\t var result;\n\t if (O !== null) {\n\t EmptyConstructor$1[PROTOTYPE$3] = anObject$1(O);\n\t result = new EmptyConstructor$1();\n\t EmptyConstructor$1[PROTOTYPE$3] = null;\n\t // add \"__proto__\" for Object.getPrototypeOf polyfill\n\t result[IE_PROTO$2] = O;\n\t } else result = NullProtoObject$1();\n\t return Properties === undefined ? result : objectDefineProperties$1(result, Properties);\n\t};\n\n\tvar UNSCOPABLES$1 = wellKnownSymbol$1('unscopables');\n\tvar ArrayPrototype$2 = Array.prototype;\n\n\t// Array.prototype[@@unscopables]\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\tif (ArrayPrototype$2[UNSCOPABLES$1] == undefined) {\n\t objectDefineProperty$1.f(ArrayPrototype$2, UNSCOPABLES$1, {\n\t configurable: true,\n\t value: objectCreate$1(null)\n\t });\n\t}\n\n\t// add a key to Array.prototype[@@unscopables]\n\tvar addToUnscopables$1 = function (key) {\n\t ArrayPrototype$2[UNSCOPABLES$1][key] = true;\n\t};\n\n\tvar $find$2 = arrayIteration$1.find;\n\n\n\n\tvar FIND$1 = 'find';\n\tvar SKIPS_HOLES$1 = true;\n\n\tvar USES_TO_LENGTH$b = arrayMethodUsesToLength$1(FIND$1);\n\n\t// Shouldn't skip holes\n\tif (FIND$1 in []) Array(1)[FIND$1](function () { SKIPS_HOLES$1 = false; });\n\n\t// `Array.prototype.find` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\t_export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 || !USES_TO_LENGTH$b }, {\n\t find: function find(callbackfn /* , that = undefined */) {\n\t return $find$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1(FIND$1);\n\n\t// call something on iterator step with safe closing on error\n\tvar callWithSafeIterationClosing$1 = function (iterator, fn, value, ENTRIES) {\n\t try {\n\t return ENTRIES ? fn(anObject$1(value)[0], value[1]) : fn(value);\n\t // 7.4.6 IteratorClose(iterator, completion)\n\t } catch (error) {\n\t var returnMethod = iterator['return'];\n\t if (returnMethod !== undefined) anObject$1(returnMethod.call(iterator));\n\t throw error;\n\t }\n\t};\n\n\tvar iterators$1 = {};\n\n\tvar ITERATOR$9 = wellKnownSymbol$1('iterator');\n\tvar ArrayPrototype$3 = Array.prototype;\n\n\t// check on default Array iterator\n\tvar isArrayIteratorMethod$1 = function (it) {\n\t return it !== undefined && (iterators$1.Array === it || ArrayPrototype$3[ITERATOR$9] === it);\n\t};\n\n\tvar TO_STRING_TAG$5 = wellKnownSymbol$1('toStringTag');\n\tvar test$1 = {};\n\n\ttest$1[TO_STRING_TAG$5] = 'z';\n\n\tvar toStringTagSupport$1 = String(test$1) === '[object z]';\n\n\tvar TO_STRING_TAG$6 = wellKnownSymbol$1('toStringTag');\n\t// ES3 wrong here\n\tvar CORRECT_ARGUMENTS$1 = classofRaw$1(function () { return arguments; }()) == 'Arguments';\n\n\t// fallback for IE11 Script Access Denied error\n\tvar tryGet$1 = function (it, key) {\n\t try {\n\t return it[key];\n\t } catch (error) { /* empty */ }\n\t};\n\n\t// getting tag from ES6+ `Object.prototype.toString`\n\tvar classof$1 = toStringTagSupport$1 ? classofRaw$1 : function (it) {\n\t var O, tag, result;\n\t return it === undefined ? 'Undefined' : it === null ? 'Null'\n\t // @@toStringTag case\n\t : typeof (tag = tryGet$1(O = Object(it), TO_STRING_TAG$6)) == 'string' ? tag\n\t // builtinTag case\n\t : CORRECT_ARGUMENTS$1 ? classofRaw$1(O)\n\t // ES3 arguments fallback\n\t : (result = classofRaw$1(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n\t};\n\n\tvar ITERATOR$a = wellKnownSymbol$1('iterator');\n\n\tvar getIteratorMethod$1 = function (it) {\n\t if (it != undefined) return it[ITERATOR$a]\n\t || it['@@iterator']\n\t || iterators$1[classof$1(it)];\n\t};\n\n\t// `Array.from` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\tvar arrayFrom$1 = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n\t var O = toObject$1(arrayLike);\n\t var C = typeof this == 'function' ? this : Array;\n\t var argumentsLength = arguments.length;\n\t var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n\t var mapping = mapfn !== undefined;\n\t var iteratorMethod = getIteratorMethod$1(O);\n\t var index = 0;\n\t var length, result, step, iterator, next, value;\n\t if (mapping) mapfn = functionBindContext$1(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n\t // if the target is not iterable or it's an array with the default iterator - use a simple case\n\t if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod$1(iteratorMethod))) {\n\t iterator = iteratorMethod.call(O);\n\t next = iterator.next;\n\t result = new C();\n\t for (;!(step = next.call(iterator)).done; index++) {\n\t value = mapping ? callWithSafeIterationClosing$1(iterator, mapfn, [step.value, index], true) : step.value;\n\t createProperty$1(result, index, value);\n\t }\n\t } else {\n\t length = toLength$1(O.length);\n\t result = new C(length);\n\t for (;length > index; index++) {\n\t value = mapping ? mapfn(O[index], index) : O[index];\n\t createProperty$1(result, index, value);\n\t }\n\t }\n\t result.length = index;\n\t return result;\n\t};\n\n\tvar ITERATOR$b = wellKnownSymbol$1('iterator');\n\tvar SAFE_CLOSING$1 = false;\n\n\ttry {\n\t var called$1 = 0;\n\t var iteratorWithReturn$1 = {\n\t next: function () {\n\t return { done: !!called$1++ };\n\t },\n\t 'return': function () {\n\t SAFE_CLOSING$1 = true;\n\t }\n\t };\n\t iteratorWithReturn$1[ITERATOR$b] = function () {\n\t return this;\n\t };\n\t // eslint-disable-next-line no-throw-literal\n\t Array.from(iteratorWithReturn$1, function () { throw 2; });\n\t} catch (error) { /* empty */ }\n\n\tvar checkCorrectnessOfIteration$1 = function (exec, SKIP_CLOSING) {\n\t if (!SKIP_CLOSING && !SAFE_CLOSING$1) return false;\n\t var ITERATION_SUPPORT = false;\n\t try {\n\t var object = {};\n\t object[ITERATOR$b] = function () {\n\t return {\n\t next: function () {\n\t return { done: ITERATION_SUPPORT = true };\n\t }\n\t };\n\t };\n\t exec(object);\n\t } catch (error) { /* empty */ }\n\t return ITERATION_SUPPORT;\n\t};\n\n\tvar INCORRECT_ITERATION$2 = !checkCorrectnessOfIteration$1(function (iterable) {\n\t Array.from(iterable);\n\t});\n\n\t// `Array.from` method\n\t// https://tc39.github.io/ecma262/#sec-array.from\n\t_export$1({ target: 'Array', stat: true, forced: INCORRECT_ITERATION$2 }, {\n\t from: arrayFrom$1\n\t});\n\n\tvar $includes$2 = arrayIncludes$1.includes;\n\n\n\n\tvar USES_TO_LENGTH$c = arrayMethodUsesToLength$1('indexOf', { ACCESSORS: true, 1: 0 });\n\n\t// `Array.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\t_export$1({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$c }, {\n\t includes: function includes(el /* , fromIndex = 0 */) {\n\t return $includes$2(this, el, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1('includes');\n\n\tvar correctPrototypeGetter$1 = !fails$1(function () {\n\t function F() { /* empty */ }\n\t F.prototype.constructor = null;\n\t return Object.getPrototypeOf(new F()) !== F.prototype;\n\t});\n\n\tvar IE_PROTO$3 = sharedKey$1('IE_PROTO');\n\tvar ObjectPrototype$4 = Object.prototype;\n\n\t// `Object.getPrototypeOf` method\n\t// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n\tvar objectGetPrototypeOf$1 = correctPrototypeGetter$1 ? Object.getPrototypeOf : function (O) {\n\t O = toObject$1(O);\n\t if (has$2(O, IE_PROTO$3)) return O[IE_PROTO$3];\n\t if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n\t return O.constructor.prototype;\n\t } return O instanceof Object ? ObjectPrototype$4 : null;\n\t};\n\n\tvar ITERATOR$c = wellKnownSymbol$1('iterator');\n\tvar BUGGY_SAFARI_ITERATORS$2 = false;\n\n\tvar returnThis$3 = function () { return this; };\n\n\t// `%IteratorPrototype%` object\n\t// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\n\tvar IteratorPrototype$3, PrototypeOfArrayIteratorPrototype$1, arrayIterator$1;\n\n\tif ([].keys) {\n\t arrayIterator$1 = [].keys();\n\t // Safari 8 has buggy iterators w/o `next`\n\t if (!('next' in arrayIterator$1)) BUGGY_SAFARI_ITERATORS$2 = true;\n\t else {\n\t PrototypeOfArrayIteratorPrototype$1 = objectGetPrototypeOf$1(objectGetPrototypeOf$1(arrayIterator$1));\n\t if (PrototypeOfArrayIteratorPrototype$1 !== Object.prototype) IteratorPrototype$3 = PrototypeOfArrayIteratorPrototype$1;\n\t }\n\t}\n\n\tif (IteratorPrototype$3 == undefined) IteratorPrototype$3 = {};\n\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\tif ( !has$2(IteratorPrototype$3, ITERATOR$c)) {\n\t createNonEnumerableProperty$1(IteratorPrototype$3, ITERATOR$c, returnThis$3);\n\t}\n\n\tvar iteratorsCore$1 = {\n\t IteratorPrototype: IteratorPrototype$3,\n\t BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$2\n\t};\n\n\tvar defineProperty$b = objectDefineProperty$1.f;\n\n\n\n\tvar TO_STRING_TAG$7 = wellKnownSymbol$1('toStringTag');\n\n\tvar setToStringTag$1 = function (it, TAG, STATIC) {\n\t if (it && !has$2(it = STATIC ? it : it.prototype, TO_STRING_TAG$7)) {\n\t defineProperty$b(it, TO_STRING_TAG$7, { configurable: true, value: TAG });\n\t }\n\t};\n\n\tvar IteratorPrototype$4 = iteratorsCore$1.IteratorPrototype;\n\n\n\n\n\n\tvar returnThis$4 = function () { return this; };\n\n\tvar createIteratorConstructor$1 = function (IteratorConstructor, NAME, next) {\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t IteratorConstructor.prototype = objectCreate$1(IteratorPrototype$4, { next: createPropertyDescriptor$1(1, next) });\n\t setToStringTag$1(IteratorConstructor, TO_STRING_TAG, false);\n\t iterators$1[TO_STRING_TAG] = returnThis$4;\n\t return IteratorConstructor;\n\t};\n\n\tvar aPossiblePrototype$1 = function (it) {\n\t if (!isObject$2(it) && it !== null) {\n\t throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n\t } return it;\n\t};\n\n\t// `Object.setPrototypeOf` method\n\t// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n\t// Works with __proto__ only. Old v8 can't work with null proto objects.\n\t/* eslint-disable no-proto */\n\tvar objectSetPrototypeOf$1 = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n\t var CORRECT_SETTER = false;\n\t var test = {};\n\t var setter;\n\t try {\n\t setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n\t setter.call(test, []);\n\t CORRECT_SETTER = test instanceof Array;\n\t } catch (error) { /* empty */ }\n\t return function setPrototypeOf(O, proto) {\n\t anObject$1(O);\n\t aPossiblePrototype$1(proto);\n\t if (CORRECT_SETTER) setter.call(O, proto);\n\t else O.__proto__ = proto;\n\t return O;\n\t };\n\t}() : undefined);\n\n\tvar IteratorPrototype$5 = iteratorsCore$1.IteratorPrototype;\n\tvar BUGGY_SAFARI_ITERATORS$3 = iteratorsCore$1.BUGGY_SAFARI_ITERATORS;\n\tvar ITERATOR$d = wellKnownSymbol$1('iterator');\n\tvar KEYS$1 = 'keys';\n\tvar VALUES$1 = 'values';\n\tvar ENTRIES$1 = 'entries';\n\n\tvar returnThis$5 = function () { return this; };\n\n\tvar defineIterator$1 = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n\t createIteratorConstructor$1(IteratorConstructor, NAME, next);\n\n\t var getIterationMethod = function (KIND) {\n\t if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n\t if (!BUGGY_SAFARI_ITERATORS$3 && KIND in IterablePrototype) return IterablePrototype[KIND];\n\t switch (KIND) {\n\t case KEYS$1: return function keys() { return new IteratorConstructor(this, KIND); };\n\t case VALUES$1: return function values() { return new IteratorConstructor(this, KIND); };\n\t case ENTRIES$1: return function entries() { return new IteratorConstructor(this, KIND); };\n\t } return function () { return new IteratorConstructor(this); };\n\t };\n\n\t var TO_STRING_TAG = NAME + ' Iterator';\n\t var INCORRECT_VALUES_NAME = false;\n\t var IterablePrototype = Iterable.prototype;\n\t var nativeIterator = IterablePrototype[ITERATOR$d]\n\t || IterablePrototype['@@iterator']\n\t || DEFAULT && IterablePrototype[DEFAULT];\n\t var defaultIterator = !BUGGY_SAFARI_ITERATORS$3 && nativeIterator || getIterationMethod(DEFAULT);\n\t var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n\t var CurrentIteratorPrototype, methods, KEY;\n\n\t // fix native\n\t if (anyNativeIterator) {\n\t CurrentIteratorPrototype = objectGetPrototypeOf$1(anyNativeIterator.call(new Iterable()));\n\t if (IteratorPrototype$5 !== Object.prototype && CurrentIteratorPrototype.next) {\n\t if ( objectGetPrototypeOf$1(CurrentIteratorPrototype) !== IteratorPrototype$5) {\n\t if (objectSetPrototypeOf$1) {\n\t objectSetPrototypeOf$1(CurrentIteratorPrototype, IteratorPrototype$5);\n\t } else if (typeof CurrentIteratorPrototype[ITERATOR$d] != 'function') {\n\t createNonEnumerableProperty$1(CurrentIteratorPrototype, ITERATOR$d, returnThis$5);\n\t }\n\t }\n\t // Set @@toStringTag to native iterators\n\t setToStringTag$1(CurrentIteratorPrototype, TO_STRING_TAG, true);\n\t }\n\t }\n\n\t // fix Array#{values, @@iterator}.name in V8 / FF\n\t if (DEFAULT == VALUES$1 && nativeIterator && nativeIterator.name !== VALUES$1) {\n\t INCORRECT_VALUES_NAME = true;\n\t defaultIterator = function values() { return nativeIterator.call(this); };\n\t }\n\n\t // define iterator\n\t if ( IterablePrototype[ITERATOR$d] !== defaultIterator) {\n\t createNonEnumerableProperty$1(IterablePrototype, ITERATOR$d, defaultIterator);\n\t }\n\t iterators$1[NAME] = defaultIterator;\n\n\t // export additional methods\n\t if (DEFAULT) {\n\t methods = {\n\t values: getIterationMethod(VALUES$1),\n\t keys: IS_SET ? defaultIterator : getIterationMethod(KEYS$1),\n\t entries: getIterationMethod(ENTRIES$1)\n\t };\n\t if (FORCED) for (KEY in methods) {\n\t if (BUGGY_SAFARI_ITERATORS$3 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n\t redefine$1(IterablePrototype, KEY, methods[KEY]);\n\t }\n\t } else _export$1({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$3 || INCORRECT_VALUES_NAME }, methods);\n\t }\n\n\t return methods;\n\t};\n\n\tvar ARRAY_ITERATOR$1 = 'Array Iterator';\n\tvar setInternalState$9 = internalState$1.set;\n\tvar getInternalState$5 = internalState$1.getterFor(ARRAY_ITERATOR$1);\n\n\t// `Array.prototype.entries` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n\t// `Array.prototype.keys` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n\t// `Array.prototype.values` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.values\n\t// `Array.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n\t// `CreateArrayIterator` internal method\n\t// https://tc39.github.io/ecma262/#sec-createarrayiterator\n\tvar es_array_iterator$1 = defineIterator$1(Array, 'Array', function (iterated, kind) {\n\t setInternalState$9(this, {\n\t type: ARRAY_ITERATOR$1,\n\t target: toIndexedObject$1(iterated), // target\n\t index: 0, // next index\n\t kind: kind // kind\n\t });\n\t// `%ArrayIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n\t}, function () {\n\t var state = getInternalState$5(this);\n\t var target = state.target;\n\t var kind = state.kind;\n\t var index = state.index++;\n\t if (!target || index >= target.length) {\n\t state.target = undefined;\n\t return { value: undefined, done: true };\n\t }\n\t if (kind == 'keys') return { value: index, done: false };\n\t if (kind == 'values') return { value: target[index], done: false };\n\t return { value: [index, target[index]], done: false };\n\t}, 'values');\n\n\t// argumentsList[@@iterator] is %ArrayProto_values%\n\t// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n\t// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\n\titerators$1.Arguments = iterators$1.Array;\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1('keys');\n\taddToUnscopables$1('values');\n\taddToUnscopables$1('entries');\n\n\tvar arrayMethodIsStrict$1 = function (METHOD_NAME, argument) {\n\t var method = [][METHOD_NAME];\n\t return !!method && fails$1(function () {\n\t // eslint-disable-next-line no-useless-call,no-throw-literal\n\t method.call(null, argument || function () { throw 1; }, 1);\n\t });\n\t};\n\n\tvar nativeJoin$1 = [].join;\n\n\tvar ES3_STRINGS$1 = indexedObject$1 != Object;\n\tvar STRICT_METHOD$5 = arrayMethodIsStrict$1('join', ',');\n\n\t// `Array.prototype.join` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.join\n\t_export$1({ target: 'Array', proto: true, forced: ES3_STRINGS$1 || !STRICT_METHOD$5 }, {\n\t join: function join(separator) {\n\t return nativeJoin$1.call(toIndexedObject$1(this), separator === undefined ? ',' : separator);\n\t }\n\t});\n\n\tvar $map$2 = arrayIteration$1.map;\n\n\n\n\tvar HAS_SPECIES_SUPPORT$5 = arrayMethodHasSpeciesSupport$1('map');\n\t// FF49- issue\n\tvar USES_TO_LENGTH$d = arrayMethodUsesToLength$1('map');\n\n\t// `Array.prototype.map` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.map\n\t// with adding support of @@species\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$5 || !USES_TO_LENGTH$d }, {\n\t map: function map(callbackfn /* , thisArg */) {\n\t return $map$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// makes subclassing work correct for wrapped built-ins\n\tvar inheritIfRequired$1 = function ($this, dummy, Wrapper) {\n\t var NewTarget, NewTargetPrototype;\n\t if (\n\t // it can work only with native `setPrototypeOf`\n\t objectSetPrototypeOf$1 &&\n\t // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n\t typeof (NewTarget = dummy.constructor) == 'function' &&\n\t NewTarget !== Wrapper &&\n\t isObject$2(NewTargetPrototype = NewTarget.prototype) &&\n\t NewTargetPrototype !== Wrapper.prototype\n\t ) objectSetPrototypeOf$1($this, NewTargetPrototype);\n\t return $this;\n\t};\n\n\t// a string of all valid unicode whitespaces\n\t// eslint-disable-next-line max-len\n\tvar whitespaces$1 = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\tvar whitespace$1 = '[' + whitespaces$1 + ']';\n\tvar ltrim$1 = RegExp('^' + whitespace$1 + whitespace$1 + '*');\n\tvar rtrim$1 = RegExp(whitespace$1 + whitespace$1 + '*$');\n\n\t// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\n\tvar createMethod$8 = function (TYPE) {\n\t return function ($this) {\n\t var string = String(requireObjectCoercible$1($this));\n\t if (TYPE & 1) string = string.replace(ltrim$1, '');\n\t if (TYPE & 2) string = string.replace(rtrim$1, '');\n\t return string;\n\t };\n\t};\n\n\tvar stringTrim$1 = {\n\t // `String.prototype.{ trimLeft, trimStart }` methods\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n\t start: createMethod$8(1),\n\t // `String.prototype.{ trimRight, trimEnd }` methods\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n\t end: createMethod$8(2),\n\t // `String.prototype.trim` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n\t trim: createMethod$8(3)\n\t};\n\n\tvar getOwnPropertyNames$3 = objectGetOwnPropertyNames$1.f;\n\tvar getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor$1.f;\n\tvar defineProperty$c = objectDefineProperty$1.f;\n\tvar trim$1 = stringTrim$1.trim;\n\n\tvar NUMBER$1 = 'Number';\n\tvar NativeNumber$1 = global_1$1[NUMBER$1];\n\tvar NumberPrototype$1 = NativeNumber$1.prototype;\n\n\t// Opera ~12 has broken Object#toString\n\tvar BROKEN_CLASSOF$1 = classofRaw$1(objectCreate$1(NumberPrototype$1)) == NUMBER$1;\n\n\t// `ToNumber` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-tonumber\n\tvar toNumber$1 = function (argument) {\n\t var it = toPrimitive$1(argument, false);\n\t var first, third, radix, maxCode, digits, length, index, code;\n\t if (typeof it == 'string' && it.length > 2) {\n\t it = trim$1(it);\n\t first = it.charCodeAt(0);\n\t if (first === 43 || first === 45) {\n\t third = it.charCodeAt(2);\n\t if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n\t } else if (first === 48) {\n\t switch (it.charCodeAt(1)) {\n\t case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n\t case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n\t default: return +it;\n\t }\n\t digits = it.slice(2);\n\t length = digits.length;\n\t for (index = 0; index < length; index++) {\n\t code = digits.charCodeAt(index);\n\t // parseInt parses a string to a first unavailable symbol\n\t // but ToNumber should return NaN if a string contains unavailable symbols\n\t if (code < 48 || code > maxCode) return NaN;\n\t } return parseInt(digits, radix);\n\t }\n\t } return +it;\n\t};\n\n\t// `Number` constructor\n\t// https://tc39.github.io/ecma262/#sec-number-constructor\n\tif (isForced_1$1(NUMBER$1, !NativeNumber$1(' 0o1') || !NativeNumber$1('0b1') || NativeNumber$1('+0x1'))) {\n\t var NumberWrapper$1 = function Number(value) {\n\t var it = arguments.length < 1 ? 0 : value;\n\t var dummy = this;\n\t return dummy instanceof NumberWrapper$1\n\t // check on 1..constructor(foo) case\n\t && (BROKEN_CLASSOF$1 ? fails$1(function () { NumberPrototype$1.valueOf.call(dummy); }) : classofRaw$1(dummy) != NUMBER$1)\n\t ? inheritIfRequired$1(new NativeNumber$1(toNumber$1(it)), dummy, NumberWrapper$1) : toNumber$1(it);\n\t };\n\t for (var keys$5 = descriptors$1 ? getOwnPropertyNames$3(NativeNumber$1) : (\n\t // ES3:\n\t 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n\t // ES2015 (in case, if modules with ES2015 Number statics required before):\n\t 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n\t 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n\t ).split(','), j$2 = 0, key$2; keys$5.length > j$2; j$2++) {\n\t if (has$2(NativeNumber$1, key$2 = keys$5[j$2]) && !has$2(NumberWrapper$1, key$2)) {\n\t defineProperty$c(NumberWrapper$1, key$2, getOwnPropertyDescriptor$6(NativeNumber$1, key$2));\n\t }\n\t }\n\t NumberWrapper$1.prototype = NumberPrototype$1;\n\t NumberPrototype$1.constructor = NumberWrapper$1;\n\t redefine$1(global_1$1, NUMBER$1, NumberWrapper$1);\n\t}\n\n\tvar FAILS_ON_PRIMITIVES$2 = fails$1(function () { objectKeys$1(1); });\n\n\t// `Object.keys` method\n\t// https://tc39.github.io/ecma262/#sec-object.keys\n\t_export$1({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$2 }, {\n\t keys: function keys(it) {\n\t return objectKeys$1(toObject$1(it));\n\t }\n\t});\n\n\t// `Object.prototype.toString` method implementation\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tvar objectToString$1 = toStringTagSupport$1 ? {}.toString : function toString() {\n\t return '[object ' + classof$1(this) + ']';\n\t};\n\n\t// `Object.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\tif (!toStringTagSupport$1) {\n\t redefine$1(Object.prototype, 'toString', objectToString$1, { unsafe: true });\n\t}\n\n\t// `RegExp.prototype.flags` getter implementation\n\t// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\n\tvar regexpFlags$1 = function () {\n\t var that = anObject$1(this);\n\t var result = '';\n\t if (that.global) result += 'g';\n\t if (that.ignoreCase) result += 'i';\n\t if (that.multiline) result += 'm';\n\t if (that.dotAll) result += 's';\n\t if (that.unicode) result += 'u';\n\t if (that.sticky) result += 'y';\n\t return result;\n\t};\n\n\t// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n\t// so we use an intermediate function.\n\tfunction RE$1(s, f) {\n\t return RegExp(s, f);\n\t}\n\n\tvar UNSUPPORTED_Y$3 = fails$1(function () {\n\t // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n\t var re = RE$1('a', 'y');\n\t re.lastIndex = 2;\n\t return re.exec('abcd') != null;\n\t});\n\n\tvar BROKEN_CARET$1 = fails$1(function () {\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n\t var re = RE$1('^r', 'gy');\n\t re.lastIndex = 2;\n\t return re.exec('str') != null;\n\t});\n\n\tvar regexpStickyHelpers$1 = {\n\t\tUNSUPPORTED_Y: UNSUPPORTED_Y$3,\n\t\tBROKEN_CARET: BROKEN_CARET$1\n\t};\n\n\tvar nativeExec$1 = RegExp.prototype.exec;\n\t// This always refers to the native implementation, because the\n\t// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n\t// which loads this file before patching the method.\n\tvar nativeReplace$1 = String.prototype.replace;\n\n\tvar patchedExec$1 = nativeExec$1;\n\n\tvar UPDATES_LAST_INDEX_WRONG$1 = (function () {\n\t var re1 = /a/;\n\t var re2 = /b*/g;\n\t nativeExec$1.call(re1, 'a');\n\t nativeExec$1.call(re2, 'a');\n\t return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n\t})();\n\n\tvar UNSUPPORTED_Y$4 = regexpStickyHelpers$1.UNSUPPORTED_Y || regexpStickyHelpers$1.BROKEN_CARET;\n\n\t// nonparticipating capturing group, copied from es5-shim's String#split patch.\n\tvar NPCG_INCLUDED$1 = /()??/.exec('')[1] !== undefined;\n\n\tvar PATCH$1 = UPDATES_LAST_INDEX_WRONG$1 || NPCG_INCLUDED$1 || UNSUPPORTED_Y$4;\n\n\tif (PATCH$1) {\n\t patchedExec$1 = function exec(str) {\n\t var re = this;\n\t var lastIndex, reCopy, match, i;\n\t var sticky = UNSUPPORTED_Y$4 && re.sticky;\n\t var flags = regexpFlags$1.call(re);\n\t var source = re.source;\n\t var charsAdded = 0;\n\t var strCopy = str;\n\n\t if (sticky) {\n\t flags = flags.replace('y', '');\n\t if (flags.indexOf('g') === -1) {\n\t flags += 'g';\n\t }\n\n\t strCopy = String(str).slice(re.lastIndex);\n\t // Support anchored sticky behavior.\n\t if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n\t source = '(?: ' + source + ')';\n\t strCopy = ' ' + strCopy;\n\t charsAdded++;\n\t }\n\t // ^(? + rx + ) is needed, in combination with some str slicing, to\n\t // simulate the 'y' flag.\n\t reCopy = new RegExp('^(?:' + source + ')', flags);\n\t }\n\n\t if (NPCG_INCLUDED$1) {\n\t reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n\t }\n\t if (UPDATES_LAST_INDEX_WRONG$1) lastIndex = re.lastIndex;\n\n\t match = nativeExec$1.call(sticky ? reCopy : re, strCopy);\n\n\t if (sticky) {\n\t if (match) {\n\t match.input = match.input.slice(charsAdded);\n\t match[0] = match[0].slice(charsAdded);\n\t match.index = re.lastIndex;\n\t re.lastIndex += match[0].length;\n\t } else re.lastIndex = 0;\n\t } else if (UPDATES_LAST_INDEX_WRONG$1 && match) {\n\t re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n\t }\n\t if (NPCG_INCLUDED$1 && match && match.length > 1) {\n\t // Fix browsers whose `exec` methods don't consistently return `undefined`\n\t // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n\t nativeReplace$1.call(match[0], reCopy, function () {\n\t for (i = 1; i < arguments.length - 2; i++) {\n\t if (arguments[i] === undefined) match[i] = undefined;\n\t }\n\t });\n\t }\n\n\t return match;\n\t };\n\t}\n\n\tvar regexpExec$1 = patchedExec$1;\n\n\t_export$1({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec$1 }, {\n\t exec: regexpExec$1\n\t});\n\n\tvar TO_STRING$1 = 'toString';\n\tvar RegExpPrototype$2 = RegExp.prototype;\n\tvar nativeToString$1 = RegExpPrototype$2[TO_STRING$1];\n\n\tvar NOT_GENERIC$1 = fails$1(function () { return nativeToString$1.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n\t// FF44- RegExp#toString has a wrong name\n\tvar INCORRECT_NAME$1 = nativeToString$1.name != TO_STRING$1;\n\n\t// `RegExp.prototype.toString` method\n\t// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\tif (NOT_GENERIC$1 || INCORRECT_NAME$1) {\n\t redefine$1(RegExp.prototype, TO_STRING$1, function toString() {\n\t var R = anObject$1(this);\n\t var p = String(R.source);\n\t var rf = R.flags;\n\t var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$2) ? regexpFlags$1.call(R) : rf);\n\t return '/' + p + '/' + f;\n\t }, { unsafe: true });\n\t}\n\n\tvar MATCH$3 = wellKnownSymbol$1('match');\n\n\t// `IsRegExp` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-isregexp\n\tvar isRegexp$1 = function (it) {\n\t var isRegExp;\n\t return isObject$2(it) && ((isRegExp = it[MATCH$3]) !== undefined ? !!isRegExp : classofRaw$1(it) == 'RegExp');\n\t};\n\n\tvar notARegexp$1 = function (it) {\n\t if (isRegexp$1(it)) {\n\t throw TypeError(\"The method doesn't accept regular expressions\");\n\t } return it;\n\t};\n\n\tvar MATCH$4 = wellKnownSymbol$1('match');\n\n\tvar correctIsRegexpLogic$1 = function (METHOD_NAME) {\n\t var regexp = /./;\n\t try {\n\t '/./'[METHOD_NAME](regexp);\n\t } catch (e) {\n\t try {\n\t regexp[MATCH$4] = false;\n\t return '/./'[METHOD_NAME](regexp);\n\t } catch (f) { /* empty */ }\n\t } return false;\n\t};\n\n\t// `String.prototype.includes` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n\t_export$1({ target: 'String', proto: true, forced: !correctIsRegexpLogic$1('includes') }, {\n\t includes: function includes(searchString /* , position = 0 */) {\n\t return !!~String(requireObjectCoercible$1(this))\n\t .indexOf(notARegexp$1(searchString), arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `String.prototype.{ codePointAt, at }` methods implementation\n\tvar createMethod$9 = function (CONVERT_TO_STRING) {\n\t return function ($this, pos) {\n\t var S = String(requireObjectCoercible$1($this));\n\t var position = toInteger$1(pos);\n\t var size = S.length;\n\t var first, second;\n\t if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n\t first = S.charCodeAt(position);\n\t return first < 0xD800 || first > 0xDBFF || position + 1 === size\n\t || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n\t ? CONVERT_TO_STRING ? S.charAt(position) : first\n\t : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n\t };\n\t};\n\n\tvar stringMultibyte$1 = {\n\t // `String.prototype.codePointAt` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n\t codeAt: createMethod$9(false),\n\t // `String.prototype.at` method\n\t // https://github.com/mathiasbynens/String.prototype.at\n\t charAt: createMethod$9(true)\n\t};\n\n\tvar charAt$2 = stringMultibyte$1.charAt;\n\n\n\n\tvar STRING_ITERATOR$1 = 'String Iterator';\n\tvar setInternalState$a = internalState$1.set;\n\tvar getInternalState$6 = internalState$1.getterFor(STRING_ITERATOR$1);\n\n\t// `String.prototype[@@iterator]` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\n\tdefineIterator$1(String, 'String', function (iterated) {\n\t setInternalState$a(this, {\n\t type: STRING_ITERATOR$1,\n\t string: String(iterated),\n\t index: 0\n\t });\n\t// `%StringIteratorPrototype%.next` method\n\t// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n\t}, function next() {\n\t var state = getInternalState$6(this);\n\t var string = state.string;\n\t var index = state.index;\n\t var point;\n\t if (index >= string.length) return { value: undefined, done: true };\n\t point = charAt$2(string, index);\n\t state.index += point.length;\n\t return { value: point, done: false };\n\t});\n\n\t// TODO: Remove from `core-js@4` since it's moved to entry points\n\n\n\n\n\n\n\n\tvar SPECIES$9 = wellKnownSymbol$1('species');\n\n\tvar REPLACE_SUPPORTS_NAMED_GROUPS$1 = !fails$1(function () {\n\t // #replace needs built-in support for named groups.\n\t // #match works fine because it just return the exec results, even if it has\n\t // a \"grops\" property.\n\t var re = /./;\n\t re.exec = function () {\n\t var result = [];\n\t result.groups = { a: '7' };\n\t return result;\n\t };\n\t return ''.replace(re, '$<a>') !== '7';\n\t});\n\n\t// IE <= 11 replaces $0 with the whole match, as if it was $&\n\t// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\n\tvar REPLACE_KEEPS_$0$1 = (function () {\n\t return 'a'.replace(/./, '$0') === '$0';\n\t})();\n\n\tvar REPLACE$1 = wellKnownSymbol$1('replace');\n\t// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\n\tvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE$1 = (function () {\n\t if (/./[REPLACE$1]) {\n\t return /./[REPLACE$1]('a', '$0') === '';\n\t }\n\t return false;\n\t})();\n\n\t// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n\t// Weex JS has frozen built-in prototypes, so use try / catch wrapper\n\tvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC$1 = !fails$1(function () {\n\t var re = /(?:)/;\n\t var originalExec = re.exec;\n\t re.exec = function () { return originalExec.apply(this, arguments); };\n\t var result = 'ab'.split(re);\n\t return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n\t});\n\n\tvar fixRegexpWellKnownSymbolLogic$1 = function (KEY, length, exec, sham) {\n\t var SYMBOL = wellKnownSymbol$1(KEY);\n\n\t var DELEGATES_TO_SYMBOL = !fails$1(function () {\n\t // String methods call symbol-named RegEp methods\n\t var O = {};\n\t O[SYMBOL] = function () { return 7; };\n\t return ''[KEY](O) != 7;\n\t });\n\n\t var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () {\n\t // Symbol-named RegExp methods call .exec\n\t var execCalled = false;\n\t var re = /a/;\n\n\t if (KEY === 'split') {\n\t // We can't use real regex here since it causes deoptimization\n\t // and serious performance degradation in V8\n\t // https://github.com/zloirock/core-js/issues/306\n\t re = {};\n\t // RegExp[@@split] doesn't call the regex's exec method, but first creates\n\t // a new one. We need to return the patched regex when creating the new one.\n\t re.constructor = {};\n\t re.constructor[SPECIES$9] = function () { return re; };\n\t re.flags = '';\n\t re[SYMBOL] = /./[SYMBOL];\n\t }\n\n\t re.exec = function () { execCalled = true; return null; };\n\n\t re[SYMBOL]('');\n\t return !execCalled;\n\t });\n\n\t if (\n\t !DELEGATES_TO_SYMBOL ||\n\t !DELEGATES_TO_EXEC ||\n\t (KEY === 'replace' && !(\n\t REPLACE_SUPPORTS_NAMED_GROUPS$1 &&\n\t REPLACE_KEEPS_$0$1 &&\n\t !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE$1\n\t )) ||\n\t (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC$1)\n\t ) {\n\t var nativeRegExpMethod = /./[SYMBOL];\n\t var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n\t if (regexp.exec === regexpExec$1) {\n\t if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n\t // The native String method already delegates to @@method (this\n\t // polyfilled function), leasing to infinite recursion.\n\t // We avoid it by directly calling the native @@method method.\n\t return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n\t }\n\t return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n\t }\n\t return { done: false };\n\t }, {\n\t REPLACE_KEEPS_$0: REPLACE_KEEPS_$0$1,\n\t REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE$1\n\t });\n\t var stringMethod = methods[0];\n\t var regexMethod = methods[1];\n\n\t redefine$1(String.prototype, KEY, stringMethod);\n\t redefine$1(RegExp.prototype, SYMBOL, length == 2\n\t // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n\t // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n\t ? function (string, arg) { return regexMethod.call(string, this, arg); }\n\t // 21.2.5.6 RegExp.prototype[@@match](string)\n\t // 21.2.5.9 RegExp.prototype[@@search](string)\n\t : function (string) { return regexMethod.call(string, this); }\n\t );\n\t }\n\n\t if (sham) createNonEnumerableProperty$1(RegExp.prototype[SYMBOL], 'sham', true);\n\t};\n\n\t// `SameValue` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-samevalue\n\tvar sameValue$1 = Object.is || function is(x, y) {\n\t // eslint-disable-next-line no-self-compare\n\t return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n\t};\n\n\t// `RegExpExec` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-regexpexec\n\tvar regexpExecAbstract$1 = function (R, S) {\n\t var exec = R.exec;\n\t if (typeof exec === 'function') {\n\t var result = exec.call(R, S);\n\t if (typeof result !== 'object') {\n\t throw TypeError('RegExp exec method returned something other than an Object or null');\n\t }\n\t return result;\n\t }\n\n\t if (classofRaw$1(R) !== 'RegExp') {\n\t throw TypeError('RegExp#exec called on incompatible receiver');\n\t }\n\n\t return regexpExec$1.call(R, S);\n\t};\n\n\t// @@search logic\n\tfixRegexpWellKnownSymbolLogic$1('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n\t return [\n\t // `String.prototype.search` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.search\n\t function search(regexp) {\n\t var O = requireObjectCoercible$1(this);\n\t var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n\t return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n\t },\n\t // `RegExp.prototype[@@search]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n\t function (regexp) {\n\t var res = maybeCallNative(nativeSearch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\n\t var previousLastIndex = rx.lastIndex;\n\t if (!sameValue$1(previousLastIndex, 0)) rx.lastIndex = 0;\n\t var result = regexpExecAbstract$1(rx, S);\n\t if (!sameValue$1(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n\t return result === null ? -1 : result.index;\n\t }\n\t ];\n\t});\n\n\tvar redefineAll$1 = function (target, src, options) {\n\t for (var key in src) redefine$1(target, key, src[key], options);\n\t return target;\n\t};\n\n\tvar freezing$1 = !fails$1(function () {\n\t return Object.isExtensible(Object.preventExtensions({}));\n\t});\n\n\tvar internalMetadata$1 = createCommonjsModule(function (module) {\n\tvar defineProperty = objectDefineProperty$1.f;\n\n\n\n\tvar METADATA = uid$1('meta');\n\tvar id = 0;\n\n\tvar isExtensible = Object.isExtensible || function () {\n\t return true;\n\t};\n\n\tvar setMetadata = function (it) {\n\t defineProperty(it, METADATA, { value: {\n\t objectID: 'O' + ++id, // object ID\n\t weakData: {} // weak collections IDs\n\t } });\n\t};\n\n\tvar fastKey = function (it, create) {\n\t // return a primitive with prefix\n\t if (!isObject$2(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\t if (!has$2(it, METADATA)) {\n\t // can't set metadata to uncaught frozen object\n\t if (!isExtensible(it)) return 'F';\n\t // not necessary to add metadata\n\t if (!create) return 'E';\n\t // add missing metadata\n\t setMetadata(it);\n\t // return object ID\n\t } return it[METADATA].objectID;\n\t};\n\n\tvar getWeakData = function (it, create) {\n\t if (!has$2(it, METADATA)) {\n\t // can't set metadata to uncaught frozen object\n\t if (!isExtensible(it)) return true;\n\t // not necessary to add metadata\n\t if (!create) return false;\n\t // add missing metadata\n\t setMetadata(it);\n\t // return the store of weak collections IDs\n\t } return it[METADATA].weakData;\n\t};\n\n\t// add metadata on freeze-family methods calling\n\tvar onFreeze = function (it) {\n\t if (freezing$1 && meta.REQUIRED && isExtensible(it) && !has$2(it, METADATA)) setMetadata(it);\n\t return it;\n\t};\n\n\tvar meta = module.exports = {\n\t REQUIRED: false,\n\t fastKey: fastKey,\n\t getWeakData: getWeakData,\n\t onFreeze: onFreeze\n\t};\n\n\thiddenKeys$2[METADATA] = true;\n\t});\n\tvar internalMetadata_1$1 = internalMetadata$1.REQUIRED;\n\tvar internalMetadata_2$1 = internalMetadata$1.fastKey;\n\tvar internalMetadata_3$1 = internalMetadata$1.getWeakData;\n\tvar internalMetadata_4$1 = internalMetadata$1.onFreeze;\n\n\tvar iterate_1$1 = createCommonjsModule(function (module) {\n\tvar Result = function (stopped, result) {\n\t this.stopped = stopped;\n\t this.result = result;\n\t};\n\n\tvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n\t var boundFunction = functionBindContext$1(fn, that, AS_ENTRIES ? 2 : 1);\n\t var iterator, iterFn, index, length, result, next, step;\n\n\t if (IS_ITERATOR) {\n\t iterator = iterable;\n\t } else {\n\t iterFn = getIteratorMethod$1(iterable);\n\t if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n\t // optimisation for array iterators\n\t if (isArrayIteratorMethod$1(iterFn)) {\n\t for (index = 0, length = toLength$1(iterable.length); length > index; index++) {\n\t result = AS_ENTRIES\n\t ? boundFunction(anObject$1(step = iterable[index])[0], step[1])\n\t : boundFunction(iterable[index]);\n\t if (result && result instanceof Result) return result;\n\t } return new Result(false);\n\t }\n\t iterator = iterFn.call(iterable);\n\t }\n\n\t next = iterator.next;\n\t while (!(step = next.call(iterator)).done) {\n\t result = callWithSafeIterationClosing$1(iterator, boundFunction, step.value, AS_ENTRIES);\n\t if (typeof result == 'object' && result && result instanceof Result) return result;\n\t } return new Result(false);\n\t};\n\n\titerate.stop = function (result) {\n\t return new Result(true, result);\n\t};\n\t});\n\n\tvar anInstance$1 = function (it, Constructor, name) {\n\t if (!(it instanceof Constructor)) {\n\t throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n\t } return it;\n\t};\n\n\tvar collection$1 = function (CONSTRUCTOR_NAME, wrapper, common) {\n\t var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n\t var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n\t var ADDER = IS_MAP ? 'set' : 'add';\n\t var NativeConstructor = global_1$1[CONSTRUCTOR_NAME];\n\t var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n\t var Constructor = NativeConstructor;\n\t var exported = {};\n\n\t var fixMethod = function (KEY) {\n\t var nativeMethod = NativePrototype[KEY];\n\t redefine$1(NativePrototype, KEY,\n\t KEY == 'add' ? function add(value) {\n\t nativeMethod.call(this, value === 0 ? 0 : value);\n\t return this;\n\t } : KEY == 'delete' ? function (key) {\n\t return IS_WEAK && !isObject$2(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : KEY == 'get' ? function get(key) {\n\t return IS_WEAK && !isObject$2(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : KEY == 'has' ? function has(key) {\n\t return IS_WEAK && !isObject$2(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n\t } : function set(key, value) {\n\t nativeMethod.call(this, key === 0 ? 0 : key, value);\n\t return this;\n\t }\n\t );\n\t };\n\n\t // eslint-disable-next-line max-len\n\t if (isForced_1$1(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails$1(function () {\n\t new NativeConstructor().entries().next();\n\t })))) {\n\t // create collection constructor\n\t Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n\t internalMetadata$1.REQUIRED = true;\n\t } else if (isForced_1$1(CONSTRUCTOR_NAME, true)) {\n\t var instance = new Constructor();\n\t // early implementations not supports chaining\n\t var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n\t // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n\t var THROWS_ON_PRIMITIVES = fails$1(function () { instance.has(1); });\n\t // most early implementations doesn't supports iterables, most modern - not close it correctly\n\t // eslint-disable-next-line no-new\n\t var ACCEPT_ITERABLES = checkCorrectnessOfIteration$1(function (iterable) { new NativeConstructor(iterable); });\n\t // for early implementations -0 and +0 not the same\n\t var BUGGY_ZERO = !IS_WEAK && fails$1(function () {\n\t // V8 ~ Chromium 42- fails only with 5+ elements\n\t var $instance = new NativeConstructor();\n\t var index = 5;\n\t while (index--) $instance[ADDER](index, index);\n\t return !$instance.has(-0);\n\t });\n\n\t if (!ACCEPT_ITERABLES) {\n\t Constructor = wrapper(function (dummy, iterable) {\n\t anInstance$1(dummy, Constructor, CONSTRUCTOR_NAME);\n\t var that = inheritIfRequired$1(new NativeConstructor(), dummy, Constructor);\n\t if (iterable != undefined) iterate_1$1(iterable, that[ADDER], that, IS_MAP);\n\t return that;\n\t });\n\t Constructor.prototype = NativePrototype;\n\t NativePrototype.constructor = Constructor;\n\t }\n\n\t if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n\t fixMethod('delete');\n\t fixMethod('has');\n\t IS_MAP && fixMethod('get');\n\t }\n\n\t if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n\t // weak collections should not contains .clear method\n\t if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n\t }\n\n\t exported[CONSTRUCTOR_NAME] = Constructor;\n\t _export$1({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n\t setToStringTag$1(Constructor, CONSTRUCTOR_NAME);\n\n\t if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n\t return Constructor;\n\t};\n\n\tvar getWeakData$1 = internalMetadata$1.getWeakData;\n\n\n\n\n\n\n\n\n\tvar setInternalState$b = internalState$1.set;\n\tvar internalStateGetterFor$1 = internalState$1.getterFor;\n\tvar find$2 = arrayIteration$1.find;\n\tvar findIndex$1 = arrayIteration$1.findIndex;\n\tvar id$3 = 0;\n\n\t// fallback for uncaught frozen keys\n\tvar uncaughtFrozenStore$1 = function (store) {\n\t return store.frozen || (store.frozen = new UncaughtFrozenStore$1());\n\t};\n\n\tvar UncaughtFrozenStore$1 = function () {\n\t this.entries = [];\n\t};\n\n\tvar findUncaughtFrozen$1 = function (store, key) {\n\t return find$2(store.entries, function (it) {\n\t return it[0] === key;\n\t });\n\t};\n\n\tUncaughtFrozenStore$1.prototype = {\n\t get: function (key) {\n\t var entry = findUncaughtFrozen$1(this, key);\n\t if (entry) return entry[1];\n\t },\n\t has: function (key) {\n\t return !!findUncaughtFrozen$1(this, key);\n\t },\n\t set: function (key, value) {\n\t var entry = findUncaughtFrozen$1(this, key);\n\t if (entry) entry[1] = value;\n\t else this.entries.push([key, value]);\n\t },\n\t 'delete': function (key) {\n\t var index = findIndex$1(this.entries, function (it) {\n\t return it[0] === key;\n\t });\n\t if (~index) this.entries.splice(index, 1);\n\t return !!~index;\n\t }\n\t};\n\n\tvar collectionWeak$1 = {\n\t getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n\t var C = wrapper(function (that, iterable) {\n\t anInstance$1(that, C, CONSTRUCTOR_NAME);\n\t setInternalState$b(that, {\n\t type: CONSTRUCTOR_NAME,\n\t id: id$3++,\n\t frozen: undefined\n\t });\n\t if (iterable != undefined) iterate_1$1(iterable, that[ADDER], that, IS_MAP);\n\t });\n\n\t var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME);\n\n\t var define = function (that, key, value) {\n\t var state = getInternalState(that);\n\t var data = getWeakData$1(anObject$1(key), true);\n\t if (data === true) uncaughtFrozenStore$1(state).set(key, value);\n\t else data[state.id] = value;\n\t return that;\n\t };\n\n\t redefineAll$1(C.prototype, {\n\t // 23.3.3.2 WeakMap.prototype.delete(key)\n\t // 23.4.3.3 WeakSet.prototype.delete(value)\n\t 'delete': function (key) {\n\t var state = getInternalState(this);\n\t if (!isObject$2(key)) return false;\n\t var data = getWeakData$1(key);\n\t if (data === true) return uncaughtFrozenStore$1(state)['delete'](key);\n\t return data && has$2(data, state.id) && delete data[state.id];\n\t },\n\t // 23.3.3.4 WeakMap.prototype.has(key)\n\t // 23.4.3.4 WeakSet.prototype.has(value)\n\t has: function has(key) {\n\t var state = getInternalState(this);\n\t if (!isObject$2(key)) return false;\n\t var data = getWeakData$1(key);\n\t if (data === true) return uncaughtFrozenStore$1(state).has(key);\n\t return data && has$2(data, state.id);\n\t }\n\t });\n\n\t redefineAll$1(C.prototype, IS_MAP ? {\n\t // 23.3.3.3 WeakMap.prototype.get(key)\n\t get: function get(key) {\n\t var state = getInternalState(this);\n\t if (isObject$2(key)) {\n\t var data = getWeakData$1(key);\n\t if (data === true) return uncaughtFrozenStore$1(state).get(key);\n\t return data ? data[state.id] : undefined;\n\t }\n\t },\n\t // 23.3.3.5 WeakMap.prototype.set(key, value)\n\t set: function set(key, value) {\n\t return define(this, key, value);\n\t }\n\t } : {\n\t // 23.4.3.1 WeakSet.prototype.add(value)\n\t add: function add(value) {\n\t return define(this, value, true);\n\t }\n\t });\n\n\t return C;\n\t }\n\t};\n\n\tvar es_weakMap = createCommonjsModule(function (module) {\n\n\n\n\n\n\n\tvar enforceIternalState = internalState$1.enforce;\n\n\n\tvar IS_IE11 = !global_1$1.ActiveXObject && 'ActiveXObject' in global_1$1;\n\tvar isExtensible = Object.isExtensible;\n\tvar InternalWeakMap;\n\n\tvar wrapper = function (init) {\n\t return function WeakMap() {\n\t return init(this, arguments.length ? arguments[0] : undefined);\n\t };\n\t};\n\n\t// `WeakMap` constructor\n\t// https://tc39.github.io/ecma262/#sec-weakmap-constructor\n\tvar $WeakMap = module.exports = collection$1('WeakMap', wrapper, collectionWeak$1);\n\n\t// IE11 WeakMap frozen keys fix\n\t// We can't use feature detection because it crash some old IE builds\n\t// https://github.com/zloirock/core-js/issues/485\n\tif (nativeWeakMap$1 && IS_IE11) {\n\t InternalWeakMap = collectionWeak$1.getConstructor(wrapper, 'WeakMap', true);\n\t internalMetadata$1.REQUIRED = true;\n\t var WeakMapPrototype = $WeakMap.prototype;\n\t var nativeDelete = WeakMapPrototype['delete'];\n\t var nativeHas = WeakMapPrototype.has;\n\t var nativeGet = WeakMapPrototype.get;\n\t var nativeSet = WeakMapPrototype.set;\n\t redefineAll$1(WeakMapPrototype, {\n\t 'delete': function (key) {\n\t if (isObject$2(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t return nativeDelete.call(this, key) || state.frozen['delete'](key);\n\t } return nativeDelete.call(this, key);\n\t },\n\t has: function has(key) {\n\t if (isObject$2(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t return nativeHas.call(this, key) || state.frozen.has(key);\n\t } return nativeHas.call(this, key);\n\t },\n\t get: function get(key) {\n\t if (isObject$2(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n\t } return nativeGet.call(this, key);\n\t },\n\t set: function set(key, value) {\n\t if (isObject$2(key) && !isExtensible(key)) {\n\t var state = enforceIternalState(this);\n\t if (!state.frozen) state.frozen = new InternalWeakMap();\n\t nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n\t } else nativeSet.call(this, key, value);\n\t return this;\n\t }\n\t });\n\t}\n\t});\n\n\t// iterable DOM collections\n\t// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\n\tvar domIterables$1 = {\n\t CSSRuleList: 0,\n\t CSSStyleDeclaration: 0,\n\t CSSValueList: 0,\n\t ClientRectList: 0,\n\t DOMRectList: 0,\n\t DOMStringList: 0,\n\t DOMTokenList: 1,\n\t DataTransferItemList: 0,\n\t FileList: 0,\n\t HTMLAllCollection: 0,\n\t HTMLCollection: 0,\n\t HTMLFormElement: 0,\n\t HTMLSelectElement: 0,\n\t MediaList: 0,\n\t MimeTypeArray: 0,\n\t NamedNodeMap: 0,\n\t NodeList: 1,\n\t PaintRequestList: 0,\n\t Plugin: 0,\n\t PluginArray: 0,\n\t SVGLengthList: 0,\n\t SVGNumberList: 0,\n\t SVGPathSegList: 0,\n\t SVGPointList: 0,\n\t SVGStringList: 0,\n\t SVGTransformList: 0,\n\t SourceBufferList: 0,\n\t StyleSheetList: 0,\n\t TextTrackCueList: 0,\n\t TextTrackList: 0,\n\t TouchList: 0\n\t};\n\n\tvar ITERATOR$e = wellKnownSymbol$1('iterator');\n\tvar TO_STRING_TAG$8 = wellKnownSymbol$1('toStringTag');\n\tvar ArrayValues$1 = es_array_iterator$1.values;\n\n\tfor (var COLLECTION_NAME$2 in domIterables$1) {\n\t var Collection$2 = global_1$1[COLLECTION_NAME$2];\n\t var CollectionPrototype$2 = Collection$2 && Collection$2.prototype;\n\t if (CollectionPrototype$2) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$2[ITERATOR$e] !== ArrayValues$1) try {\n\t createNonEnumerableProperty$1(CollectionPrototype$2, ITERATOR$e, ArrayValues$1);\n\t } catch (error) {\n\t CollectionPrototype$2[ITERATOR$e] = ArrayValues$1;\n\t }\n\t if (!CollectionPrototype$2[TO_STRING_TAG$8]) {\n\t createNonEnumerableProperty$1(CollectionPrototype$2, TO_STRING_TAG$8, COLLECTION_NAME$2);\n\t }\n\t if (domIterables$1[COLLECTION_NAME$2]) for (var METHOD_NAME$1 in es_array_iterator$1) {\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$2[METHOD_NAME$1] !== es_array_iterator$1[METHOD_NAME$1]) try {\n\t createNonEnumerableProperty$1(CollectionPrototype$2, METHOD_NAME$1, es_array_iterator$1[METHOD_NAME$1]);\n\t } catch (error) {\n\t CollectionPrototype$2[METHOD_NAME$1] = es_array_iterator$1[METHOD_NAME$1];\n\t }\n\t }\n\t }\n\t}\n\n\tvar $every$1 = arrayIteration$1.every;\n\n\n\n\tvar STRICT_METHOD$6 = arrayMethodIsStrict$1('every');\n\tvar USES_TO_LENGTH$e = arrayMethodUsesToLength$1('every');\n\n\t// `Array.prototype.every` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.every\n\t_export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$6 || !USES_TO_LENGTH$e }, {\n\t every: function every(callbackfn /* , thisArg */) {\n\t return $every$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tvar $forEach$3 = arrayIteration$1.forEach;\n\n\n\n\tvar STRICT_METHOD$7 = arrayMethodIsStrict$1('forEach');\n\tvar USES_TO_LENGTH$f = arrayMethodUsesToLength$1('forEach');\n\n\t// `Array.prototype.forEach` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\tvar arrayForEach$1 = (!STRICT_METHOD$7 || !USES_TO_LENGTH$f) ? function forEach(callbackfn /* , thisArg */) {\n\t return $forEach$3(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t} : [].forEach;\n\n\t// `Array.prototype.forEach` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n\t_export$1({ target: 'Array', proto: true, forced: [].forEach != arrayForEach$1 }, {\n\t forEach: arrayForEach$1\n\t});\n\n\tvar $indexOf$2 = arrayIncludes$1.indexOf;\n\n\n\n\tvar nativeIndexOf$1 = [].indexOf;\n\n\tvar NEGATIVE_ZERO$2 = !!nativeIndexOf$1 && 1 / [1].indexOf(1, -0) < 0;\n\tvar STRICT_METHOD$8 = arrayMethodIsStrict$1('indexOf');\n\tvar USES_TO_LENGTH$g = arrayMethodUsesToLength$1('indexOf', { ACCESSORS: true, 1: 0 });\n\n\t// `Array.prototype.indexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\t_export$1({ target: 'Array', proto: true, forced: NEGATIVE_ZERO$2 || !STRICT_METHOD$8 || !USES_TO_LENGTH$g }, {\n\t indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n\t return NEGATIVE_ZERO$2\n\t // convert -0 to +0\n\t ? nativeIndexOf$1.apply(this, arguments) || 0\n\t : $indexOf$2(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tvar nativeAssign$1 = Object.assign;\n\tvar defineProperty$d = Object.defineProperty;\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\tvar objectAssign$1 = !nativeAssign$1 || fails$1(function () {\n\t // should have correct order of operations (Edge bug)\n\t if (descriptors$1 && nativeAssign$1({ b: 1 }, nativeAssign$1(defineProperty$d({}, 'a', {\n\t enumerable: true,\n\t get: function () {\n\t defineProperty$d(this, 'b', {\n\t value: 3,\n\t enumerable: false\n\t });\n\t }\n\t }), { b: 2 })).b !== 1) return true;\n\t // should work with symbols and should have deterministic property order (V8 bug)\n\t var A = {};\n\t var B = {};\n\t // eslint-disable-next-line no-undef\n\t var symbol = Symbol();\n\t var alphabet = 'abcdefghijklmnopqrst';\n\t A[symbol] = 7;\n\t alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n\t return nativeAssign$1({}, A)[symbol] != 7 || objectKeys$1(nativeAssign$1({}, B)).join('') != alphabet;\n\t}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n\t var T = toObject$1(target);\n\t var argumentsLength = arguments.length;\n\t var index = 1;\n\t var getOwnPropertySymbols = objectGetOwnPropertySymbols$1.f;\n\t var propertyIsEnumerable = objectPropertyIsEnumerable$1.f;\n\t while (argumentsLength > index) {\n\t var S = indexedObject$1(arguments[index++]);\n\t var keys = getOwnPropertySymbols ? objectKeys$1(S).concat(getOwnPropertySymbols(S)) : objectKeys$1(S);\n\t var length = keys.length;\n\t var j = 0;\n\t var key;\n\t while (length > j) {\n\t key = keys[j++];\n\t if (!descriptors$1 || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n\t }\n\t } return T;\n\t} : nativeAssign$1;\n\n\t// `Object.assign` method\n\t// https://tc39.github.io/ecma262/#sec-object.assign\n\t_export$1({ target: 'Object', stat: true, forced: Object.assign !== objectAssign$1 }, {\n\t assign: objectAssign$1\n\t});\n\n\tvar SPECIES$a = wellKnownSymbol$1('species');\n\n\t// `SpeciesConstructor` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-speciesconstructor\n\tvar speciesConstructor$1 = function (O, defaultConstructor) {\n\t var C = anObject$1(O).constructor;\n\t var S;\n\t return C === undefined || (S = anObject$1(C)[SPECIES$a]) == undefined ? defaultConstructor : aFunction$3(S);\n\t};\n\n\tvar charAt$3 = stringMultibyte$1.charAt;\n\n\t// `AdvanceStringIndex` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-advancestringindex\n\tvar advanceStringIndex$1 = function (S, index, unicode) {\n\t return index + (unicode ? charAt$3(S, index).length : 1);\n\t};\n\n\tvar arrayPush$1 = [].push;\n\tvar min$9 = Math.min;\n\tvar MAX_UINT32$1 = 0xFFFFFFFF;\n\n\t// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\n\tvar SUPPORTS_Y$1 = !fails$1(function () { return !RegExp(MAX_UINT32$1, 'y'); });\n\n\t// @@split logic\n\tfixRegexpWellKnownSymbolLogic$1('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n\t var internalSplit;\n\t if (\n\t 'abbc'.split(/(b)*/)[1] == 'c' ||\n\t 'test'.split(/(?:)/, -1).length != 4 ||\n\t 'ab'.split(/(?:ab)*/).length != 2 ||\n\t '.'.split(/(.?)(.?)/).length != 4 ||\n\t '.'.split(/()()/).length > 1 ||\n\t ''.split(/.?/).length\n\t ) {\n\t // based on es5-shim implementation, need to rework it\n\t internalSplit = function (separator, limit) {\n\t var string = String(requireObjectCoercible$1(this));\n\t var lim = limit === undefined ? MAX_UINT32$1 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (separator === undefined) return [string];\n\t // If `separator` is not a regex, use native split\n\t if (!isRegexp$1(separator)) {\n\t return nativeSplit.call(string, separator, lim);\n\t }\n\t var output = [];\n\t var flags = (separator.ignoreCase ? 'i' : '') +\n\t (separator.multiline ? 'm' : '') +\n\t (separator.unicode ? 'u' : '') +\n\t (separator.sticky ? 'y' : '');\n\t var lastLastIndex = 0;\n\t // Make `global` and avoid `lastIndex` issues by working with a copy\n\t var separatorCopy = new RegExp(separator.source, flags + 'g');\n\t var match, lastIndex, lastLength;\n\t while (match = regexpExec$1.call(separatorCopy, string)) {\n\t lastIndex = separatorCopy.lastIndex;\n\t if (lastIndex > lastLastIndex) {\n\t output.push(string.slice(lastLastIndex, match.index));\n\t if (match.length > 1 && match.index < string.length) arrayPush$1.apply(output, match.slice(1));\n\t lastLength = match[0].length;\n\t lastLastIndex = lastIndex;\n\t if (output.length >= lim) break;\n\t }\n\t if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n\t }\n\t if (lastLastIndex === string.length) {\n\t if (lastLength || !separatorCopy.test('')) output.push('');\n\t } else output.push(string.slice(lastLastIndex));\n\t return output.length > lim ? output.slice(0, lim) : output;\n\t };\n\t // Chakra, V8\n\t } else if ('0'.split(undefined, 0).length) {\n\t internalSplit = function (separator, limit) {\n\t return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n\t };\n\t } else internalSplit = nativeSplit;\n\n\t return [\n\t // `String.prototype.split` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.split\n\t function split(separator, limit) {\n\t var O = requireObjectCoercible$1(this);\n\t var splitter = separator == undefined ? undefined : separator[SPLIT];\n\t return splitter !== undefined\n\t ? splitter.call(separator, O, limit)\n\t : internalSplit.call(String(O), separator, limit);\n\t },\n\t // `RegExp.prototype[@@split]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n\t //\n\t // NOTE: This cannot be properly polyfilled in engines that don't support\n\t // the 'y' flag.\n\t function (regexp, limit) {\n\t var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n\t if (res.done) return res.value;\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\t var C = speciesConstructor$1(rx, RegExp);\n\n\t var unicodeMatching = rx.unicode;\n\t var flags = (rx.ignoreCase ? 'i' : '') +\n\t (rx.multiline ? 'm' : '') +\n\t (rx.unicode ? 'u' : '') +\n\t (SUPPORTS_Y$1 ? 'y' : 'g');\n\n\t // ^(? + rx + ) is needed, in combination with some S slicing, to\n\t // simulate the 'y' flag.\n\t var splitter = new C(SUPPORTS_Y$1 ? rx : '^(?:' + rx.source + ')', flags);\n\t var lim = limit === undefined ? MAX_UINT32$1 : limit >>> 0;\n\t if (lim === 0) return [];\n\t if (S.length === 0) return regexpExecAbstract$1(splitter, S) === null ? [S] : [];\n\t var p = 0;\n\t var q = 0;\n\t var A = [];\n\t while (q < S.length) {\n\t splitter.lastIndex = SUPPORTS_Y$1 ? q : 0;\n\t var z = regexpExecAbstract$1(splitter, SUPPORTS_Y$1 ? S : S.slice(q));\n\t var e;\n\t if (\n\t z === null ||\n\t (e = min$9(toLength$1(splitter.lastIndex + (SUPPORTS_Y$1 ? 0 : q)), S.length)) === p\n\t ) {\n\t q = advanceStringIndex$1(S, q, unicodeMatching);\n\t } else {\n\t A.push(S.slice(p, q));\n\t if (A.length === lim) return A;\n\t for (var i = 1; i <= z.length - 1; i++) {\n\t A.push(z[i]);\n\t if (A.length === lim) return A;\n\t }\n\t q = p = e;\n\t }\n\t }\n\t A.push(S.slice(p));\n\t return A;\n\t }\n\t ];\n\t}, !SUPPORTS_Y$1);\n\n\tvar non = '\\u200B\\u0085\\u180E';\n\n\t// check that a method works with the correct list\n\t// of whitespaces and has a correct name\n\tvar stringTrimForced = function (METHOD_NAME) {\n\t return fails$1(function () {\n\t return !!whitespaces$1[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces$1[METHOD_NAME].name !== METHOD_NAME;\n\t });\n\t};\n\n\tvar $trim = stringTrim$1.trim;\n\n\n\t// `String.prototype.trim` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n\t_export$1({ target: 'String', proto: true, forced: stringTrimForced('trim') }, {\n\t trim: function trim() {\n\t return $trim(this);\n\t }\n\t});\n\n\tfor (var COLLECTION_NAME$3 in domIterables$1) {\n\t var Collection$3 = global_1$1[COLLECTION_NAME$3];\n\t var CollectionPrototype$3 = Collection$3 && Collection$3.prototype;\n\t // some Chrome versions have non-configurable methods on DOMTokenList\n\t if (CollectionPrototype$3 && CollectionPrototype$3.forEach !== arrayForEach$1) try {\n\t createNonEnumerableProperty$1(CollectionPrototype$3, 'forEach', arrayForEach$1);\n\t } catch (error) {\n\t CollectionPrototype$3.forEach = arrayForEach$1;\n\t }\n\t}\n\n\tvar ITERATOR$f = wellKnownSymbol$1('iterator');\n\n\tvar nativeUrl$1 = !fails$1(function () {\n\t var url = new URL('b?a=1&b=2&c=3', 'http://a');\n\t var searchParams = url.searchParams;\n\t var result = '';\n\t url.pathname = 'c%20d';\n\t searchParams.forEach(function (value, key) {\n\t searchParams['delete']('b');\n\t result += key + value;\n\t });\n\t return (isPure$1 && !url.toJSON)\n\t || !searchParams.sort\n\t || url.href !== 'http://a/c%20d?a=1&c=3'\n\t || searchParams.get('c') !== '3'\n\t || String(new URLSearchParams('?a=1')) !== 'a=1'\n\t || !searchParams[ITERATOR$f]\n\t // throws in Edge\n\t || new URL('https://a@b').username !== 'a'\n\t || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n\t // not punycoded in Edge\n\t || new URL('http://тест').host !== 'xn--e1aybc'\n\t // not escaped in Chrome 62-\n\t || new URL('http://a#б').hash !== '#%D0%B1'\n\t // fails in Chrome 66-\n\t || result !== 'a1c3'\n\t // throws in Safari\n\t || new URL('http://x', undefined).host !== 'x';\n\t});\n\n\t// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\n\tvar maxInt$1 = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\tvar base$1 = 36;\n\tvar tMin$1 = 1;\n\tvar tMax$1 = 26;\n\tvar skew$1 = 38;\n\tvar damp$1 = 700;\n\tvar initialBias$1 = 72;\n\tvar initialN$1 = 128; // 0x80\n\tvar delimiter$1 = '-'; // '\\x2D'\n\tvar regexNonASCII$1 = /[^\\0-\\u007E]/; // non-ASCII chars\n\tvar regexSeparators$1 = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\tvar OVERFLOW_ERROR$1 = 'Overflow: input needs wider integers to process';\n\tvar baseMinusTMin$1 = base$1 - tMin$1;\n\tvar floor$7 = Math.floor;\n\tvar stringFromCharCode$1 = String.fromCharCode;\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t */\n\tvar ucs2decode$1 = function (string) {\n\t var output = [];\n\t var counter = 0;\n\t var length = string.length;\n\t while (counter < length) {\n\t var value = string.charCodeAt(counter++);\n\t if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t // It's a high surrogate, and there is a next character.\n\t var extra = string.charCodeAt(counter++);\n\t if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t } else {\n\t // It's an unmatched surrogate; only append this code unit, in case the\n\t // next code unit is the high surrogate of a surrogate pair.\n\t output.push(value);\n\t counter--;\n\t }\n\t } else {\n\t output.push(value);\n\t }\n\t }\n\t return output;\n\t};\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t */\n\tvar digitToBasic$1 = function (digit) {\n\t // 0..25 map to ASCII a..z or A..Z\n\t // 26..35 map to ASCII 0..9\n\t return digit + 22 + 75 * (digit < 26);\n\t};\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t */\n\tvar adapt$1 = function (delta, numPoints, firstTime) {\n\t var k = 0;\n\t delta = firstTime ? floor$7(delta / damp$1) : delta >> 1;\n\t delta += floor$7(delta / numPoints);\n\t for (; delta > baseMinusTMin$1 * tMax$1 >> 1; k += base$1) {\n\t delta = floor$7(delta / baseMinusTMin$1);\n\t }\n\t return floor$7(k + (baseMinusTMin$1 + 1) * delta / (delta + skew$1));\n\t};\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t */\n\t// eslint-disable-next-line max-statements\n\tvar encode$1 = function (input) {\n\t var output = [];\n\n\t // Convert the input in UCS-2 to an array of Unicode code points.\n\t input = ucs2decode$1(input);\n\n\t // Cache the length.\n\t var inputLength = input.length;\n\n\t // Initialize the state.\n\t var n = initialN$1;\n\t var delta = 0;\n\t var bias = initialBias$1;\n\t var i, currentValue;\n\n\t // Handle the basic code points.\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < 0x80) {\n\t output.push(stringFromCharCode$1(currentValue));\n\t }\n\t }\n\n\t var basicLength = output.length; // number of basic code points.\n\t var handledCPCount = basicLength; // number of code points that have been handled;\n\n\t // Finish the basic string with a delimiter unless it's empty.\n\t if (basicLength) {\n\t output.push(delimiter$1);\n\t }\n\n\t // Main encoding loop:\n\t while (handledCPCount < inputLength) {\n\t // All non-basic code points < n have been handled already. Find the next larger one:\n\t var m = maxInt$1;\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue >= n && currentValue < m) {\n\t m = currentValue;\n\t }\n\t }\n\n\t // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n\t var handledCPCountPlusOne = handledCPCount + 1;\n\t if (m - n > floor$7((maxInt$1 - delta) / handledCPCountPlusOne)) {\n\t throw RangeError(OVERFLOW_ERROR$1);\n\t }\n\n\t delta += (m - n) * handledCPCountPlusOne;\n\t n = m;\n\n\t for (i = 0; i < input.length; i++) {\n\t currentValue = input[i];\n\t if (currentValue < n && ++delta > maxInt$1) {\n\t throw RangeError(OVERFLOW_ERROR$1);\n\t }\n\t if (currentValue == n) {\n\t // Represent delta as a generalized variable-length integer.\n\t var q = delta;\n\t for (var k = base$1; /* no condition */; k += base$1) {\n\t var t = k <= bias ? tMin$1 : (k >= bias + tMax$1 ? tMax$1 : k - bias);\n\t if (q < t) break;\n\t var qMinusT = q - t;\n\t var baseMinusT = base$1 - t;\n\t output.push(stringFromCharCode$1(digitToBasic$1(t + qMinusT % baseMinusT)));\n\t q = floor$7(qMinusT / baseMinusT);\n\t }\n\n\t output.push(stringFromCharCode$1(digitToBasic$1(q)));\n\t bias = adapt$1(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t delta = 0;\n\t ++handledCPCount;\n\t }\n\t }\n\n\t ++delta;\n\t ++n;\n\t }\n\t return output.join('');\n\t};\n\n\tvar stringPunycodeToAscii$1 = function (input) {\n\t var encoded = [];\n\t var labels = input.toLowerCase().replace(regexSeparators$1, '\\u002E').split('.');\n\t var i, label;\n\t for (i = 0; i < labels.length; i++) {\n\t label = labels[i];\n\t encoded.push(regexNonASCII$1.test(label) ? 'xn--' + encode$1(label) : label);\n\t }\n\t return encoded.join('.');\n\t};\n\n\tvar getIterator$1 = function (it) {\n\t var iteratorMethod = getIteratorMethod$1(it);\n\t if (typeof iteratorMethod != 'function') {\n\t throw TypeError(String(it) + ' is not iterable');\n\t } return anObject$1(iteratorMethod.call(it));\n\t};\n\n\t// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tvar $fetch$2 = getBuiltIn$1('fetch');\n\tvar Headers$2 = getBuiltIn$1('Headers');\n\tvar ITERATOR$g = wellKnownSymbol$1('iterator');\n\tvar URL_SEARCH_PARAMS$1 = 'URLSearchParams';\n\tvar URL_SEARCH_PARAMS_ITERATOR$1 = URL_SEARCH_PARAMS$1 + 'Iterator';\n\tvar setInternalState$c = internalState$1.set;\n\tvar getInternalParamsState$1 = internalState$1.getterFor(URL_SEARCH_PARAMS$1);\n\tvar getInternalIteratorState$1 = internalState$1.getterFor(URL_SEARCH_PARAMS_ITERATOR$1);\n\n\tvar plus$1 = /\\+/g;\n\tvar sequences$1 = Array(4);\n\n\tvar percentSequence$1 = function (bytes) {\n\t return sequences$1[bytes - 1] || (sequences$1[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n\t};\n\n\tvar percentDecode$1 = function (sequence) {\n\t try {\n\t return decodeURIComponent(sequence);\n\t } catch (error) {\n\t return sequence;\n\t }\n\t};\n\n\tvar deserialize$1 = function (it) {\n\t var result = it.replace(plus$1, ' ');\n\t var bytes = 4;\n\t try {\n\t return decodeURIComponent(result);\n\t } catch (error) {\n\t while (bytes) {\n\t result = result.replace(percentSequence$1(bytes--), percentDecode$1);\n\t }\n\t return result;\n\t }\n\t};\n\n\tvar find$3 = /[!'()~]|%20/g;\n\n\tvar replace$1 = {\n\t '!': '%21',\n\t \"'\": '%27',\n\t '(': '%28',\n\t ')': '%29',\n\t '~': '%7E',\n\t '%20': '+'\n\t};\n\n\tvar replacer$1 = function (match) {\n\t return replace$1[match];\n\t};\n\n\tvar serialize$1 = function (it) {\n\t return encodeURIComponent(it).replace(find$3, replacer$1);\n\t};\n\n\tvar parseSearchParams$1 = function (result, query) {\n\t if (query) {\n\t var attributes = query.split('&');\n\t var index = 0;\n\t var attribute, entry;\n\t while (index < attributes.length) {\n\t attribute = attributes[index++];\n\t if (attribute.length) {\n\t entry = attribute.split('=');\n\t result.push({\n\t key: deserialize$1(entry.shift()),\n\t value: deserialize$1(entry.join('='))\n\t });\n\t }\n\t }\n\t }\n\t};\n\n\tvar updateSearchParams$1 = function (query) {\n\t this.entries.length = 0;\n\t parseSearchParams$1(this.entries, query);\n\t};\n\n\tvar validateArgumentsLength$1 = function (passed, required) {\n\t if (passed < required) throw TypeError('Not enough arguments');\n\t};\n\n\tvar URLSearchParamsIterator$1 = createIteratorConstructor$1(function Iterator(params, kind) {\n\t setInternalState$c(this, {\n\t type: URL_SEARCH_PARAMS_ITERATOR$1,\n\t iterator: getIterator$1(getInternalParamsState$1(params).entries),\n\t kind: kind\n\t });\n\t}, 'Iterator', function next() {\n\t var state = getInternalIteratorState$1(this);\n\t var kind = state.kind;\n\t var step = state.iterator.next();\n\t var entry = step.value;\n\t if (!step.done) {\n\t step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n\t } return step;\n\t});\n\n\t// `URLSearchParams` constructor\n\t// https://url.spec.whatwg.org/#interface-urlsearchparams\n\tvar URLSearchParamsConstructor$1 = function URLSearchParams(/* init */) {\n\t anInstance$1(this, URLSearchParamsConstructor$1, URL_SEARCH_PARAMS$1);\n\t var init = arguments.length > 0 ? arguments[0] : undefined;\n\t var that = this;\n\t var entries = [];\n\t var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n\t setInternalState$c(that, {\n\t type: URL_SEARCH_PARAMS$1,\n\t entries: entries,\n\t updateURL: function () { /* empty */ },\n\t updateSearchParams: updateSearchParams$1\n\t });\n\n\t if (init !== undefined) {\n\t if (isObject$2(init)) {\n\t iteratorMethod = getIteratorMethod$1(init);\n\t if (typeof iteratorMethod === 'function') {\n\t iterator = iteratorMethod.call(init);\n\t next = iterator.next;\n\t while (!(step = next.call(iterator)).done) {\n\t entryIterator = getIterator$1(anObject$1(step.value));\n\t entryNext = entryIterator.next;\n\t if (\n\t (first = entryNext.call(entryIterator)).done ||\n\t (second = entryNext.call(entryIterator)).done ||\n\t !entryNext.call(entryIterator).done\n\t ) throw TypeError('Expected sequence with length 2');\n\t entries.push({ key: first.value + '', value: second.value + '' });\n\t }\n\t } else for (key in init) if (has$2(init, key)) entries.push({ key: key, value: init[key] + '' });\n\t } else {\n\t parseSearchParams$1(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n\t }\n\t }\n\t};\n\n\tvar URLSearchParamsPrototype$1 = URLSearchParamsConstructor$1.prototype;\n\n\tredefineAll$1(URLSearchParamsPrototype$1, {\n\t // `URLSearchParams.prototype.appent` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n\t append: function append(name, value) {\n\t validateArgumentsLength$1(arguments.length, 2);\n\t var state = getInternalParamsState$1(this);\n\t state.entries.push({ key: name + '', value: value + '' });\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.delete` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n\t 'delete': function (name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var state = getInternalParamsState$1(this);\n\t var entries = state.entries;\n\t var key = name + '';\n\t var index = 0;\n\t while (index < entries.length) {\n\t if (entries[index].key === key) entries.splice(index, 1);\n\t else index++;\n\t }\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.get` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n\t get: function get(name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var entries = getInternalParamsState$1(this).entries;\n\t var key = name + '';\n\t var index = 0;\n\t for (; index < entries.length; index++) {\n\t if (entries[index].key === key) return entries[index].value;\n\t }\n\t return null;\n\t },\n\t // `URLSearchParams.prototype.getAll` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n\t getAll: function getAll(name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var entries = getInternalParamsState$1(this).entries;\n\t var key = name + '';\n\t var result = [];\n\t var index = 0;\n\t for (; index < entries.length; index++) {\n\t if (entries[index].key === key) result.push(entries[index].value);\n\t }\n\t return result;\n\t },\n\t // `URLSearchParams.prototype.has` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n\t has: function has(name) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var entries = getInternalParamsState$1(this).entries;\n\t var key = name + '';\n\t var index = 0;\n\t while (index < entries.length) {\n\t if (entries[index++].key === key) return true;\n\t }\n\t return false;\n\t },\n\t // `URLSearchParams.prototype.set` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n\t set: function set(name, value) {\n\t validateArgumentsLength$1(arguments.length, 1);\n\t var state = getInternalParamsState$1(this);\n\t var entries = state.entries;\n\t var found = false;\n\t var key = name + '';\n\t var val = value + '';\n\t var index = 0;\n\t var entry;\n\t for (; index < entries.length; index++) {\n\t entry = entries[index];\n\t if (entry.key === key) {\n\t if (found) entries.splice(index--, 1);\n\t else {\n\t found = true;\n\t entry.value = val;\n\t }\n\t }\n\t }\n\t if (!found) entries.push({ key: key, value: val });\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.sort` method\n\t // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n\t sort: function sort() {\n\t var state = getInternalParamsState$1(this);\n\t var entries = state.entries;\n\t // Array#sort is not stable in some engines\n\t var slice = entries.slice();\n\t var entry, entriesIndex, sliceIndex;\n\t entries.length = 0;\n\t for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n\t entry = slice[sliceIndex];\n\t for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n\t if (entries[entriesIndex].key > entry.key) {\n\t entries.splice(entriesIndex, 0, entry);\n\t break;\n\t }\n\t }\n\t if (entriesIndex === sliceIndex) entries.push(entry);\n\t }\n\t state.updateURL();\n\t },\n\t // `URLSearchParams.prototype.forEach` method\n\t forEach: function forEach(callback /* , thisArg */) {\n\t var entries = getInternalParamsState$1(this).entries;\n\t var boundFunction = functionBindContext$1(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n\t var index = 0;\n\t var entry;\n\t while (index < entries.length) {\n\t entry = entries[index++];\n\t boundFunction(entry.value, entry.key, this);\n\t }\n\t },\n\t // `URLSearchParams.prototype.keys` method\n\t keys: function keys() {\n\t return new URLSearchParamsIterator$1(this, 'keys');\n\t },\n\t // `URLSearchParams.prototype.values` method\n\t values: function values() {\n\t return new URLSearchParamsIterator$1(this, 'values');\n\t },\n\t // `URLSearchParams.prototype.entries` method\n\t entries: function entries() {\n\t return new URLSearchParamsIterator$1(this, 'entries');\n\t }\n\t}, { enumerable: true });\n\n\t// `URLSearchParams.prototype[@@iterator]` method\n\tredefine$1(URLSearchParamsPrototype$1, ITERATOR$g, URLSearchParamsPrototype$1.entries);\n\n\t// `URLSearchParams.prototype.toString` method\n\t// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\n\tredefine$1(URLSearchParamsPrototype$1, 'toString', function toString() {\n\t var entries = getInternalParamsState$1(this).entries;\n\t var result = [];\n\t var index = 0;\n\t var entry;\n\t while (index < entries.length) {\n\t entry = entries[index++];\n\t result.push(serialize$1(entry.key) + '=' + serialize$1(entry.value));\n\t } return result.join('&');\n\t}, { enumerable: true });\n\n\tsetToStringTag$1(URLSearchParamsConstructor$1, URL_SEARCH_PARAMS$1);\n\n\t_export$1({ global: true, forced: !nativeUrl$1 }, {\n\t URLSearchParams: URLSearchParamsConstructor$1\n\t});\n\n\t// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n\t// https://github.com/zloirock/core-js/issues/674\n\tif (!nativeUrl$1 && typeof $fetch$2 == 'function' && typeof Headers$2 == 'function') {\n\t _export$1({ global: true, enumerable: true, forced: true }, {\n\t fetch: function fetch(input /* , init */) {\n\t var args = [input];\n\t var init, body, headers;\n\t if (arguments.length > 1) {\n\t init = arguments[1];\n\t if (isObject$2(init)) {\n\t body = init.body;\n\t if (classof$1(body) === URL_SEARCH_PARAMS$1) {\n\t headers = init.headers ? new Headers$2(init.headers) : new Headers$2();\n\t if (!headers.has('content-type')) {\n\t headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n\t }\n\t init = objectCreate$1(init, {\n\t body: createPropertyDescriptor$1(0, String(body)),\n\t headers: createPropertyDescriptor$1(0, headers)\n\t });\n\t }\n\t }\n\t args.push(init);\n\t } return $fetch$2.apply(this, args);\n\t }\n\t });\n\t}\n\n\tvar web_urlSearchParams$1 = {\n\t URLSearchParams: URLSearchParamsConstructor$1,\n\t getState: getInternalParamsState$1\n\t};\n\n\t// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n\n\n\n\n\n\n\n\n\n\n\n\tvar codeAt$1 = stringMultibyte$1.codeAt;\n\n\n\n\n\n\tvar NativeURL$1 = global_1$1.URL;\n\tvar URLSearchParams$2 = web_urlSearchParams$1.URLSearchParams;\n\tvar getInternalSearchParamsState$1 = web_urlSearchParams$1.getState;\n\tvar setInternalState$d = internalState$1.set;\n\tvar getInternalURLState$1 = internalState$1.getterFor('URL');\n\tvar floor$8 = Math.floor;\n\tvar pow$2 = Math.pow;\n\n\tvar INVALID_AUTHORITY$1 = 'Invalid authority';\n\tvar INVALID_SCHEME$1 = 'Invalid scheme';\n\tvar INVALID_HOST$1 = 'Invalid host';\n\tvar INVALID_PORT$1 = 'Invalid port';\n\n\tvar ALPHA$1 = /[A-Za-z]/;\n\tvar ALPHANUMERIC$1 = /[\\d+-.A-Za-z]/;\n\tvar DIGIT$1 = /\\d/;\n\tvar HEX_START$1 = /^(0x|0X)/;\n\tvar OCT$1 = /^[0-7]+$/;\n\tvar DEC$1 = /^\\d+$/;\n\tvar HEX$1 = /^[\\dA-Fa-f]+$/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT$1 = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT$1 = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n\t// eslint-disable-next-line no-control-regex\n\tvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE$1 = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n\t// eslint-disable-next-line no-control-regex\n\tvar TAB_AND_NEW_LINE$1 = /[\\u0009\\u000A\\u000D]/g;\n\tvar EOF$1;\n\n\tvar parseHost$1 = function (url, input) {\n\t var result, codePoints, index;\n\t if (input.charAt(0) == '[') {\n\t if (input.charAt(input.length - 1) != ']') return INVALID_HOST$1;\n\t result = parseIPv6$1(input.slice(1, -1));\n\t if (!result) return INVALID_HOST$1;\n\t url.host = result;\n\t // opaque host\n\t } else if (!isSpecial$1(url)) {\n\t if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT$1.test(input)) return INVALID_HOST$1;\n\t result = '';\n\t codePoints = arrayFrom$1(input);\n\t for (index = 0; index < codePoints.length; index++) {\n\t result += percentEncode$1(codePoints[index], C0ControlPercentEncodeSet$1);\n\t }\n\t url.host = result;\n\t } else {\n\t input = stringPunycodeToAscii$1(input);\n\t if (FORBIDDEN_HOST_CODE_POINT$1.test(input)) return INVALID_HOST$1;\n\t result = parseIPv4$1(input);\n\t if (result === null) return INVALID_HOST$1;\n\t url.host = result;\n\t }\n\t};\n\n\tvar parseIPv4$1 = function (input) {\n\t var parts = input.split('.');\n\t var partsLength, numbers, index, part, radix, number, ipv4;\n\t if (parts.length && parts[parts.length - 1] == '') {\n\t parts.pop();\n\t }\n\t partsLength = parts.length;\n\t if (partsLength > 4) return input;\n\t numbers = [];\n\t for (index = 0; index < partsLength; index++) {\n\t part = parts[index];\n\t if (part == '') return input;\n\t radix = 10;\n\t if (part.length > 1 && part.charAt(0) == '0') {\n\t radix = HEX_START$1.test(part) ? 16 : 8;\n\t part = part.slice(radix == 8 ? 1 : 2);\n\t }\n\t if (part === '') {\n\t number = 0;\n\t } else {\n\t if (!(radix == 10 ? DEC$1 : radix == 8 ? OCT$1 : HEX$1).test(part)) return input;\n\t number = parseInt(part, radix);\n\t }\n\t numbers.push(number);\n\t }\n\t for (index = 0; index < partsLength; index++) {\n\t number = numbers[index];\n\t if (index == partsLength - 1) {\n\t if (number >= pow$2(256, 5 - partsLength)) return null;\n\t } else if (number > 255) return null;\n\t }\n\t ipv4 = numbers.pop();\n\t for (index = 0; index < numbers.length; index++) {\n\t ipv4 += numbers[index] * pow$2(256, 3 - index);\n\t }\n\t return ipv4;\n\t};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseIPv6$1 = function (input) {\n\t var address = [0, 0, 0, 0, 0, 0, 0, 0];\n\t var pieceIndex = 0;\n\t var compress = null;\n\t var pointer = 0;\n\t var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n\t var char = function () {\n\t return input.charAt(pointer);\n\t };\n\n\t if (char() == ':') {\n\t if (input.charAt(1) != ':') return;\n\t pointer += 2;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t }\n\t while (char()) {\n\t if (pieceIndex == 8) return;\n\t if (char() == ':') {\n\t if (compress !== null) return;\n\t pointer++;\n\t pieceIndex++;\n\t compress = pieceIndex;\n\t continue;\n\t }\n\t value = length = 0;\n\t while (length < 4 && HEX$1.test(char())) {\n\t value = value * 16 + parseInt(char(), 16);\n\t pointer++;\n\t length++;\n\t }\n\t if (char() == '.') {\n\t if (length == 0) return;\n\t pointer -= length;\n\t if (pieceIndex > 6) return;\n\t numbersSeen = 0;\n\t while (char()) {\n\t ipv4Piece = null;\n\t if (numbersSeen > 0) {\n\t if (char() == '.' && numbersSeen < 4) pointer++;\n\t else return;\n\t }\n\t if (!DIGIT$1.test(char())) return;\n\t while (DIGIT$1.test(char())) {\n\t number = parseInt(char(), 10);\n\t if (ipv4Piece === null) ipv4Piece = number;\n\t else if (ipv4Piece == 0) return;\n\t else ipv4Piece = ipv4Piece * 10 + number;\n\t if (ipv4Piece > 255) return;\n\t pointer++;\n\t }\n\t address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n\t numbersSeen++;\n\t if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n\t }\n\t if (numbersSeen != 4) return;\n\t break;\n\t } else if (char() == ':') {\n\t pointer++;\n\t if (!char()) return;\n\t } else if (char()) return;\n\t address[pieceIndex++] = value;\n\t }\n\t if (compress !== null) {\n\t swaps = pieceIndex - compress;\n\t pieceIndex = 7;\n\t while (pieceIndex != 0 && swaps > 0) {\n\t swap = address[pieceIndex];\n\t address[pieceIndex--] = address[compress + swaps - 1];\n\t address[compress + --swaps] = swap;\n\t }\n\t } else if (pieceIndex != 8) return;\n\t return address;\n\t};\n\n\tvar findLongestZeroSequence$1 = function (ipv6) {\n\t var maxIndex = null;\n\t var maxLength = 1;\n\t var currStart = null;\n\t var currLength = 0;\n\t var index = 0;\n\t for (; index < 8; index++) {\n\t if (ipv6[index] !== 0) {\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t currStart = null;\n\t currLength = 0;\n\t } else {\n\t if (currStart === null) currStart = index;\n\t ++currLength;\n\t }\n\t }\n\t if (currLength > maxLength) {\n\t maxIndex = currStart;\n\t maxLength = currLength;\n\t }\n\t return maxIndex;\n\t};\n\n\tvar serializeHost$1 = function (host) {\n\t var result, index, compress, ignore0;\n\t // ipv4\n\t if (typeof host == 'number') {\n\t result = [];\n\t for (index = 0; index < 4; index++) {\n\t result.unshift(host % 256);\n\t host = floor$8(host / 256);\n\t } return result.join('.');\n\t // ipv6\n\t } else if (typeof host == 'object') {\n\t result = '';\n\t compress = findLongestZeroSequence$1(host);\n\t for (index = 0; index < 8; index++) {\n\t if (ignore0 && host[index] === 0) continue;\n\t if (ignore0) ignore0 = false;\n\t if (compress === index) {\n\t result += index ? ':' : '::';\n\t ignore0 = true;\n\t } else {\n\t result += host[index].toString(16);\n\t if (index < 7) result += ':';\n\t }\n\t }\n\t return '[' + result + ']';\n\t } return host;\n\t};\n\n\tvar C0ControlPercentEncodeSet$1 = {};\n\tvar fragmentPercentEncodeSet$1 = objectAssign$1({}, C0ControlPercentEncodeSet$1, {\n\t ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n\t});\n\tvar pathPercentEncodeSet$1 = objectAssign$1({}, fragmentPercentEncodeSet$1, {\n\t '#': 1, '?': 1, '{': 1, '}': 1\n\t});\n\tvar userinfoPercentEncodeSet$1 = objectAssign$1({}, pathPercentEncodeSet$1, {\n\t '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n\t});\n\n\tvar percentEncode$1 = function (char, set) {\n\t var code = codeAt$1(char, 0);\n\t return code > 0x20 && code < 0x7F && !has$2(set, char) ? char : encodeURIComponent(char);\n\t};\n\n\tvar specialSchemes$1 = {\n\t ftp: 21,\n\t file: null,\n\t http: 80,\n\t https: 443,\n\t ws: 80,\n\t wss: 443\n\t};\n\n\tvar isSpecial$1 = function (url) {\n\t return has$2(specialSchemes$1, url.scheme);\n\t};\n\n\tvar includesCredentials$1 = function (url) {\n\t return url.username != '' || url.password != '';\n\t};\n\n\tvar cannotHaveUsernamePasswordPort$1 = function (url) {\n\t return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n\t};\n\n\tvar isWindowsDriveLetter$1 = function (string, normalized) {\n\t var second;\n\t return string.length == 2 && ALPHA$1.test(string.charAt(0))\n\t && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n\t};\n\n\tvar startsWithWindowsDriveLetter$1 = function (string) {\n\t var third;\n\t return string.length > 1 && isWindowsDriveLetter$1(string.slice(0, 2)) && (\n\t string.length == 2 ||\n\t ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n\t );\n\t};\n\n\tvar shortenURLsPath$1 = function (url) {\n\t var path = url.path;\n\t var pathSize = path.length;\n\t if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter$1(path[0], true))) {\n\t path.pop();\n\t }\n\t};\n\n\tvar isSingleDot$1 = function (segment) {\n\t return segment === '.' || segment.toLowerCase() === '%2e';\n\t};\n\n\tvar isDoubleDot$1 = function (segment) {\n\t segment = segment.toLowerCase();\n\t return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n\t};\n\n\t// States:\n\tvar SCHEME_START$1 = {};\n\tvar SCHEME$1 = {};\n\tvar NO_SCHEME$1 = {};\n\tvar SPECIAL_RELATIVE_OR_AUTHORITY$1 = {};\n\tvar PATH_OR_AUTHORITY$1 = {};\n\tvar RELATIVE$1 = {};\n\tvar RELATIVE_SLASH$1 = {};\n\tvar SPECIAL_AUTHORITY_SLASHES$1 = {};\n\tvar SPECIAL_AUTHORITY_IGNORE_SLASHES$1 = {};\n\tvar AUTHORITY$1 = {};\n\tvar HOST$1 = {};\n\tvar HOSTNAME$1 = {};\n\tvar PORT$1 = {};\n\tvar FILE$1 = {};\n\tvar FILE_SLASH$1 = {};\n\tvar FILE_HOST$1 = {};\n\tvar PATH_START$1 = {};\n\tvar PATH$1 = {};\n\tvar CANNOT_BE_A_BASE_URL_PATH$1 = {};\n\tvar QUERY$1 = {};\n\tvar FRAGMENT$1 = {};\n\n\t// eslint-disable-next-line max-statements\n\tvar parseURL$1 = function (url, input, stateOverride, base) {\n\t var state = stateOverride || SCHEME_START$1;\n\t var pointer = 0;\n\t var buffer = '';\n\t var seenAt = false;\n\t var seenBracket = false;\n\t var seenPasswordToken = false;\n\t var codePoints, char, bufferCodePoints, failure;\n\n\t if (!stateOverride) {\n\t url.scheme = '';\n\t url.username = '';\n\t url.password = '';\n\t url.host = null;\n\t url.port = null;\n\t url.path = [];\n\t url.query = null;\n\t url.fragment = null;\n\t url.cannotBeABaseURL = false;\n\t input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE$1, '');\n\t }\n\n\t input = input.replace(TAB_AND_NEW_LINE$1, '');\n\n\t codePoints = arrayFrom$1(input);\n\n\t while (pointer <= codePoints.length) {\n\t char = codePoints[pointer];\n\t switch (state) {\n\t case SCHEME_START$1:\n\t if (char && ALPHA$1.test(char)) {\n\t buffer += char.toLowerCase();\n\t state = SCHEME$1;\n\t } else if (!stateOverride) {\n\t state = NO_SCHEME$1;\n\t continue;\n\t } else return INVALID_SCHEME$1;\n\t break;\n\n\t case SCHEME$1:\n\t if (char && (ALPHANUMERIC$1.test(char) || char == '+' || char == '-' || char == '.')) {\n\t buffer += char.toLowerCase();\n\t } else if (char == ':') {\n\t if (stateOverride && (\n\t (isSpecial$1(url) != has$2(specialSchemes$1, buffer)) ||\n\t (buffer == 'file' && (includesCredentials$1(url) || url.port !== null)) ||\n\t (url.scheme == 'file' && !url.host)\n\t )) return;\n\t url.scheme = buffer;\n\t if (stateOverride) {\n\t if (isSpecial$1(url) && specialSchemes$1[url.scheme] == url.port) url.port = null;\n\t return;\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file') {\n\t state = FILE$1;\n\t } else if (isSpecial$1(url) && base && base.scheme == url.scheme) {\n\t state = SPECIAL_RELATIVE_OR_AUTHORITY$1;\n\t } else if (isSpecial$1(url)) {\n\t state = SPECIAL_AUTHORITY_SLASHES$1;\n\t } else if (codePoints[pointer + 1] == '/') {\n\t state = PATH_OR_AUTHORITY$1;\n\t pointer++;\n\t } else {\n\t url.cannotBeABaseURL = true;\n\t url.path.push('');\n\t state = CANNOT_BE_A_BASE_URL_PATH$1;\n\t }\n\t } else if (!stateOverride) {\n\t buffer = '';\n\t state = NO_SCHEME$1;\n\t pointer = 0;\n\t continue;\n\t } else return INVALID_SCHEME$1;\n\t break;\n\n\t case NO_SCHEME$1:\n\t if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME$1;\n\t if (base.cannotBeABaseURL && char == '#') {\n\t url.scheme = base.scheme;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t url.cannotBeABaseURL = true;\n\t state = FRAGMENT$1;\n\t break;\n\t }\n\t state = base.scheme == 'file' ? FILE$1 : RELATIVE$1;\n\t continue;\n\n\t case SPECIAL_RELATIVE_OR_AUTHORITY$1:\n\t if (char == '/' && codePoints[pointer + 1] == '/') {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES$1;\n\t pointer++;\n\t } else {\n\t state = RELATIVE$1;\n\t continue;\n\t } break;\n\n\t case PATH_OR_AUTHORITY$1:\n\t if (char == '/') {\n\t state = AUTHORITY$1;\n\t break;\n\t } else {\n\t state = PATH$1;\n\t continue;\n\t }\n\n\t case RELATIVE$1:\n\t url.scheme = base.scheme;\n\t if (char == EOF$1) {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '/' || (char == '\\\\' && isSpecial$1(url))) {\n\t state = RELATIVE_SLASH$1;\n\t } else if (char == '?') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t url.path = base.path.slice();\n\t url.path.pop();\n\t state = PATH$1;\n\t continue;\n\t } break;\n\n\t case RELATIVE_SLASH$1:\n\t if (isSpecial$1(url) && (char == '/' || char == '\\\\')) {\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES$1;\n\t } else if (char == '/') {\n\t state = AUTHORITY$1;\n\t } else {\n\t url.username = base.username;\n\t url.password = base.password;\n\t url.host = base.host;\n\t url.port = base.port;\n\t state = PATH$1;\n\t continue;\n\t } break;\n\n\t case SPECIAL_AUTHORITY_SLASHES$1:\n\t state = SPECIAL_AUTHORITY_IGNORE_SLASHES$1;\n\t if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n\t pointer++;\n\t break;\n\n\t case SPECIAL_AUTHORITY_IGNORE_SLASHES$1:\n\t if (char != '/' && char != '\\\\') {\n\t state = AUTHORITY$1;\n\t continue;\n\t } break;\n\n\t case AUTHORITY$1:\n\t if (char == '@') {\n\t if (seenAt) buffer = '%40' + buffer;\n\t seenAt = true;\n\t bufferCodePoints = arrayFrom$1(buffer);\n\t for (var i = 0; i < bufferCodePoints.length; i++) {\n\t var codePoint = bufferCodePoints[i];\n\t if (codePoint == ':' && !seenPasswordToken) {\n\t seenPasswordToken = true;\n\t continue;\n\t }\n\t var encodedCodePoints = percentEncode$1(codePoint, userinfoPercentEncodeSet$1);\n\t if (seenPasswordToken) url.password += encodedCodePoints;\n\t else url.username += encodedCodePoints;\n\t }\n\t buffer = '';\n\t } else if (\n\t char == EOF$1 || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial$1(url))\n\t ) {\n\t if (seenAt && buffer == '') return INVALID_AUTHORITY$1;\n\t pointer -= arrayFrom$1(buffer).length + 1;\n\t buffer = '';\n\t state = HOST$1;\n\t } else buffer += char;\n\t break;\n\n\t case HOST$1:\n\t case HOSTNAME$1:\n\t if (stateOverride && url.scheme == 'file') {\n\t state = FILE_HOST$1;\n\t continue;\n\t } else if (char == ':' && !seenBracket) {\n\t if (buffer == '') return INVALID_HOST$1;\n\t failure = parseHost$1(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PORT$1;\n\t if (stateOverride == HOSTNAME$1) return;\n\t } else if (\n\t char == EOF$1 || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial$1(url))\n\t ) {\n\t if (isSpecial$1(url) && buffer == '') return INVALID_HOST$1;\n\t if (stateOverride && buffer == '' && (includesCredentials$1(url) || url.port !== null)) return;\n\t failure = parseHost$1(url, buffer);\n\t if (failure) return failure;\n\t buffer = '';\n\t state = PATH_START$1;\n\t if (stateOverride) return;\n\t continue;\n\t } else {\n\t if (char == '[') seenBracket = true;\n\t else if (char == ']') seenBracket = false;\n\t buffer += char;\n\t } break;\n\n\t case PORT$1:\n\t if (DIGIT$1.test(char)) {\n\t buffer += char;\n\t } else if (\n\t char == EOF$1 || char == '/' || char == '?' || char == '#' ||\n\t (char == '\\\\' && isSpecial$1(url)) ||\n\t stateOverride\n\t ) {\n\t if (buffer != '') {\n\t var port = parseInt(buffer, 10);\n\t if (port > 0xFFFF) return INVALID_PORT$1;\n\t url.port = (isSpecial$1(url) && port === specialSchemes$1[url.scheme]) ? null : port;\n\t buffer = '';\n\t }\n\t if (stateOverride) return;\n\t state = PATH_START$1;\n\t continue;\n\t } else return INVALID_PORT$1;\n\t break;\n\n\t case FILE$1:\n\t url.scheme = 'file';\n\t if (char == '/' || char == '\\\\') state = FILE_SLASH$1;\n\t else if (base && base.scheme == 'file') {\n\t if (char == EOF$1) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t } else if (char == '?') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t url.query = base.query;\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else {\n\t if (!startsWithWindowsDriveLetter$1(codePoints.slice(pointer).join(''))) {\n\t url.host = base.host;\n\t url.path = base.path.slice();\n\t shortenURLsPath$1(url);\n\t }\n\t state = PATH$1;\n\t continue;\n\t }\n\t } else {\n\t state = PATH$1;\n\t continue;\n\t } break;\n\n\t case FILE_SLASH$1:\n\t if (char == '/' || char == '\\\\') {\n\t state = FILE_HOST$1;\n\t break;\n\t }\n\t if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter$1(codePoints.slice(pointer).join(''))) {\n\t if (isWindowsDriveLetter$1(base.path[0], true)) url.path.push(base.path[0]);\n\t else url.host = base.host;\n\t }\n\t state = PATH$1;\n\t continue;\n\n\t case FILE_HOST$1:\n\t if (char == EOF$1 || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n\t if (!stateOverride && isWindowsDriveLetter$1(buffer)) {\n\t state = PATH$1;\n\t } else if (buffer == '') {\n\t url.host = '';\n\t if (stateOverride) return;\n\t state = PATH_START$1;\n\t } else {\n\t failure = parseHost$1(url, buffer);\n\t if (failure) return failure;\n\t if (url.host == 'localhost') url.host = '';\n\t if (stateOverride) return;\n\t buffer = '';\n\t state = PATH_START$1;\n\t } continue;\n\t } else buffer += char;\n\t break;\n\n\t case PATH_START$1:\n\t if (isSpecial$1(url)) {\n\t state = PATH$1;\n\t if (char != '/' && char != '\\\\') continue;\n\t } else if (!stateOverride && char == '?') {\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else if (char != EOF$1) {\n\t state = PATH$1;\n\t if (char != '/') continue;\n\t } break;\n\n\t case PATH$1:\n\t if (\n\t char == EOF$1 || char == '/' ||\n\t (char == '\\\\' && isSpecial$1(url)) ||\n\t (!stateOverride && (char == '?' || char == '#'))\n\t ) {\n\t if (isDoubleDot$1(buffer)) {\n\t shortenURLsPath$1(url);\n\t if (char != '/' && !(char == '\\\\' && isSpecial$1(url))) {\n\t url.path.push('');\n\t }\n\t } else if (isSingleDot$1(buffer)) {\n\t if (char != '/' && !(char == '\\\\' && isSpecial$1(url))) {\n\t url.path.push('');\n\t }\n\t } else {\n\t if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter$1(buffer)) {\n\t if (url.host) url.host = '';\n\t buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n\t }\n\t url.path.push(buffer);\n\t }\n\t buffer = '';\n\t if (url.scheme == 'file' && (char == EOF$1 || char == '?' || char == '#')) {\n\t while (url.path.length > 1 && url.path[0] === '') {\n\t url.path.shift();\n\t }\n\t }\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t }\n\t } else {\n\t buffer += percentEncode$1(char, pathPercentEncodeSet$1);\n\t } break;\n\n\t case CANNOT_BE_A_BASE_URL_PATH$1:\n\t if (char == '?') {\n\t url.query = '';\n\t state = QUERY$1;\n\t } else if (char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else if (char != EOF$1) {\n\t url.path[0] += percentEncode$1(char, C0ControlPercentEncodeSet$1);\n\t } break;\n\n\t case QUERY$1:\n\t if (!stateOverride && char == '#') {\n\t url.fragment = '';\n\t state = FRAGMENT$1;\n\t } else if (char != EOF$1) {\n\t if (char == \"'\" && isSpecial$1(url)) url.query += '%27';\n\t else if (char == '#') url.query += '%23';\n\t else url.query += percentEncode$1(char, C0ControlPercentEncodeSet$1);\n\t } break;\n\n\t case FRAGMENT$1:\n\t if (char != EOF$1) url.fragment += percentEncode$1(char, fragmentPercentEncodeSet$1);\n\t break;\n\t }\n\n\t pointer++;\n\t }\n\t};\n\n\t// `URL` constructor\n\t// https://url.spec.whatwg.org/#url-class\n\tvar URLConstructor$1 = function URL(url /* , base */) {\n\t var that = anInstance$1(this, URLConstructor$1, 'URL');\n\t var base = arguments.length > 1 ? arguments[1] : undefined;\n\t var urlString = String(url);\n\t var state = setInternalState$d(that, { type: 'URL' });\n\t var baseState, failure;\n\t if (base !== undefined) {\n\t if (base instanceof URLConstructor$1) baseState = getInternalURLState$1(base);\n\t else {\n\t failure = parseURL$1(baseState = {}, String(base));\n\t if (failure) throw TypeError(failure);\n\t }\n\t }\n\t failure = parseURL$1(state, urlString, null, baseState);\n\t if (failure) throw TypeError(failure);\n\t var searchParams = state.searchParams = new URLSearchParams$2();\n\t var searchParamsState = getInternalSearchParamsState$1(searchParams);\n\t searchParamsState.updateSearchParams(state.query);\n\t searchParamsState.updateURL = function () {\n\t state.query = String(searchParams) || null;\n\t };\n\t if (!descriptors$1) {\n\t that.href = serializeURL$1.call(that);\n\t that.origin = getOrigin$1.call(that);\n\t that.protocol = getProtocol$1.call(that);\n\t that.username = getUsername$1.call(that);\n\t that.password = getPassword$1.call(that);\n\t that.host = getHost$1.call(that);\n\t that.hostname = getHostname$1.call(that);\n\t that.port = getPort$1.call(that);\n\t that.pathname = getPathname$1.call(that);\n\t that.search = getSearch$1.call(that);\n\t that.searchParams = getSearchParams$1.call(that);\n\t that.hash = getHash$1.call(that);\n\t }\n\t};\n\n\tvar URLPrototype$1 = URLConstructor$1.prototype;\n\n\tvar serializeURL$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var scheme = url.scheme;\n\t var username = url.username;\n\t var password = url.password;\n\t var host = url.host;\n\t var port = url.port;\n\t var path = url.path;\n\t var query = url.query;\n\t var fragment = url.fragment;\n\t var output = scheme + ':';\n\t if (host !== null) {\n\t output += '//';\n\t if (includesCredentials$1(url)) {\n\t output += username + (password ? ':' + password : '') + '@';\n\t }\n\t output += serializeHost$1(host);\n\t if (port !== null) output += ':' + port;\n\t } else if (scheme == 'file') output += '//';\n\t output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t if (query !== null) output += '?' + query;\n\t if (fragment !== null) output += '#' + fragment;\n\t return output;\n\t};\n\n\tvar getOrigin$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var scheme = url.scheme;\n\t var port = url.port;\n\t if (scheme == 'blob') try {\n\t return new URL(scheme.path[0]).origin;\n\t } catch (error) {\n\t return 'null';\n\t }\n\t if (scheme == 'file' || !isSpecial$1(url)) return 'null';\n\t return scheme + '://' + serializeHost$1(url.host) + (port !== null ? ':' + port : '');\n\t};\n\n\tvar getProtocol$1 = function () {\n\t return getInternalURLState$1(this).scheme + ':';\n\t};\n\n\tvar getUsername$1 = function () {\n\t return getInternalURLState$1(this).username;\n\t};\n\n\tvar getPassword$1 = function () {\n\t return getInternalURLState$1(this).password;\n\t};\n\n\tvar getHost$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var host = url.host;\n\t var port = url.port;\n\t return host === null ? ''\n\t : port === null ? serializeHost$1(host)\n\t : serializeHost$1(host) + ':' + port;\n\t};\n\n\tvar getHostname$1 = function () {\n\t var host = getInternalURLState$1(this).host;\n\t return host === null ? '' : serializeHost$1(host);\n\t};\n\n\tvar getPort$1 = function () {\n\t var port = getInternalURLState$1(this).port;\n\t return port === null ? '' : String(port);\n\t};\n\n\tvar getPathname$1 = function () {\n\t var url = getInternalURLState$1(this);\n\t var path = url.path;\n\t return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n\t};\n\n\tvar getSearch$1 = function () {\n\t var query = getInternalURLState$1(this).query;\n\t return query ? '?' + query : '';\n\t};\n\n\tvar getSearchParams$1 = function () {\n\t return getInternalURLState$1(this).searchParams;\n\t};\n\n\tvar getHash$1 = function () {\n\t var fragment = getInternalURLState$1(this).fragment;\n\t return fragment ? '#' + fragment : '';\n\t};\n\n\tvar accessorDescriptor$1 = function (getter, setter) {\n\t return { get: getter, set: setter, configurable: true, enumerable: true };\n\t};\n\n\tif (descriptors$1) {\n\t objectDefineProperties$1(URLPrototype$1, {\n\t // `URL.prototype.href` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-href\n\t href: accessorDescriptor$1(serializeURL$1, function (href) {\n\t var url = getInternalURLState$1(this);\n\t var urlString = String(href);\n\t var failure = parseURL$1(url, urlString);\n\t if (failure) throw TypeError(failure);\n\t getInternalSearchParamsState$1(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.origin` getter\n\t // https://url.spec.whatwg.org/#dom-url-origin\n\t origin: accessorDescriptor$1(getOrigin$1),\n\t // `URL.prototype.protocol` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-protocol\n\t protocol: accessorDescriptor$1(getProtocol$1, function (protocol) {\n\t var url = getInternalURLState$1(this);\n\t parseURL$1(url, String(protocol) + ':', SCHEME_START$1);\n\t }),\n\t // `URL.prototype.username` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-username\n\t username: accessorDescriptor$1(getUsername$1, function (username) {\n\t var url = getInternalURLState$1(this);\n\t var codePoints = arrayFrom$1(String(username));\n\t if (cannotHaveUsernamePasswordPort$1(url)) return;\n\t url.username = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.username += percentEncode$1(codePoints[i], userinfoPercentEncodeSet$1);\n\t }\n\t }),\n\t // `URL.prototype.password` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-password\n\t password: accessorDescriptor$1(getPassword$1, function (password) {\n\t var url = getInternalURLState$1(this);\n\t var codePoints = arrayFrom$1(String(password));\n\t if (cannotHaveUsernamePasswordPort$1(url)) return;\n\t url.password = '';\n\t for (var i = 0; i < codePoints.length; i++) {\n\t url.password += percentEncode$1(codePoints[i], userinfoPercentEncodeSet$1);\n\t }\n\t }),\n\t // `URL.prototype.host` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-host\n\t host: accessorDescriptor$1(getHost$1, function (host) {\n\t var url = getInternalURLState$1(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL$1(url, String(host), HOST$1);\n\t }),\n\t // `URL.prototype.hostname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hostname\n\t hostname: accessorDescriptor$1(getHostname$1, function (hostname) {\n\t var url = getInternalURLState$1(this);\n\t if (url.cannotBeABaseURL) return;\n\t parseURL$1(url, String(hostname), HOSTNAME$1);\n\t }),\n\t // `URL.prototype.port` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-port\n\t port: accessorDescriptor$1(getPort$1, function (port) {\n\t var url = getInternalURLState$1(this);\n\t if (cannotHaveUsernamePasswordPort$1(url)) return;\n\t port = String(port);\n\t if (port == '') url.port = null;\n\t else parseURL$1(url, port, PORT$1);\n\t }),\n\t // `URL.prototype.pathname` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-pathname\n\t pathname: accessorDescriptor$1(getPathname$1, function (pathname) {\n\t var url = getInternalURLState$1(this);\n\t if (url.cannotBeABaseURL) return;\n\t url.path = [];\n\t parseURL$1(url, pathname + '', PATH_START$1);\n\t }),\n\t // `URL.prototype.search` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-search\n\t search: accessorDescriptor$1(getSearch$1, function (search) {\n\t var url = getInternalURLState$1(this);\n\t search = String(search);\n\t if (search == '') {\n\t url.query = null;\n\t } else {\n\t if ('?' == search.charAt(0)) search = search.slice(1);\n\t url.query = '';\n\t parseURL$1(url, search, QUERY$1);\n\t }\n\t getInternalSearchParamsState$1(url.searchParams).updateSearchParams(url.query);\n\t }),\n\t // `URL.prototype.searchParams` getter\n\t // https://url.spec.whatwg.org/#dom-url-searchparams\n\t searchParams: accessorDescriptor$1(getSearchParams$1),\n\t // `URL.prototype.hash` accessors pair\n\t // https://url.spec.whatwg.org/#dom-url-hash\n\t hash: accessorDescriptor$1(getHash$1, function (hash) {\n\t var url = getInternalURLState$1(this);\n\t hash = String(hash);\n\t if (hash == '') {\n\t url.fragment = null;\n\t return;\n\t }\n\t if ('#' == hash.charAt(0)) hash = hash.slice(1);\n\t url.fragment = '';\n\t parseURL$1(url, hash, FRAGMENT$1);\n\t })\n\t });\n\t}\n\n\t// `URL.prototype.toJSON` method\n\t// https://url.spec.whatwg.org/#dom-url-tojson\n\tredefine$1(URLPrototype$1, 'toJSON', function toJSON() {\n\t return serializeURL$1.call(this);\n\t}, { enumerable: true });\n\n\t// `URL.prototype.toString` method\n\t// https://url.spec.whatwg.org/#URL-stringification-behavior\n\tredefine$1(URLPrototype$1, 'toString', function toString() {\n\t return serializeURL$1.call(this);\n\t}, { enumerable: true });\n\n\tif (NativeURL$1) {\n\t var nativeCreateObjectURL$1 = NativeURL$1.createObjectURL;\n\t var nativeRevokeObjectURL$1 = NativeURL$1.revokeObjectURL;\n\t // `URL.createObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeCreateObjectURL$1) redefine$1(URLConstructor$1, 'createObjectURL', function createObjectURL(blob) {\n\t return nativeCreateObjectURL$1.apply(NativeURL$1, arguments);\n\t });\n\t // `URL.revokeObjectURL` method\n\t // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n\t // eslint-disable-next-line no-unused-vars\n\t if (nativeRevokeObjectURL$1) redefine$1(URLConstructor$1, 'revokeObjectURL', function revokeObjectURL(url) {\n\t return nativeRevokeObjectURL$1.apply(NativeURL$1, arguments);\n\t });\n\t}\n\n\tsetToStringTag$1(URLConstructor$1, 'URL');\n\n\t_export$1({ global: true, forced: !nativeUrl$1, sham: !descriptors$1 }, {\n\t URL: URLConstructor$1\n\t});\n\n\tvar $some$2 = arrayIteration$1.some;\n\n\n\n\tvar STRICT_METHOD$9 = arrayMethodIsStrict$1('some');\n\tvar USES_TO_LENGTH$h = arrayMethodUsesToLength$1('some');\n\n\t// `Array.prototype.some` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.some\n\t_export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$9 || !USES_TO_LENGTH$h }, {\n\t some: function some(callbackfn /* , thisArg */) {\n\t return $some$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// `thisNumberValue` abstract operation\n\t// https://tc39.github.io/ecma262/#sec-thisnumbervalue\n\tvar thisNumberValue = function (value) {\n\t if (typeof value != 'number' && classofRaw$1(value) != 'Number') {\n\t throw TypeError('Incorrect invocation');\n\t }\n\t return +value;\n\t};\n\n\t// `String.prototype.repeat` method implementation\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\n\tvar stringRepeat = ''.repeat || function repeat(count) {\n\t var str = String(requireObjectCoercible$1(this));\n\t var result = '';\n\t var n = toInteger$1(count);\n\t if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n\t for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n\t return result;\n\t};\n\n\tvar nativeToFixed = 1.0.toFixed;\n\tvar floor$9 = Math.floor;\n\n\tvar pow$3 = function (x, n, acc) {\n\t return n === 0 ? acc : n % 2 === 1 ? pow$3(x, n - 1, acc * x) : pow$3(x * x, n / 2, acc);\n\t};\n\n\tvar log$1 = function (x) {\n\t var n = 0;\n\t var x2 = x;\n\t while (x2 >= 4096) {\n\t n += 12;\n\t x2 /= 4096;\n\t }\n\t while (x2 >= 2) {\n\t n += 1;\n\t x2 /= 2;\n\t } return n;\n\t};\n\n\tvar FORCED$9 = nativeToFixed && (\n\t 0.00008.toFixed(3) !== '0.000' ||\n\t 0.9.toFixed(0) !== '1' ||\n\t 1.255.toFixed(2) !== '1.25' ||\n\t 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n\t) || !fails$1(function () {\n\t // V8 ~ Android 4.3-\n\t nativeToFixed.call({});\n\t});\n\n\t// `Number.prototype.toFixed` method\n\t// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n\t_export$1({ target: 'Number', proto: true, forced: FORCED$9 }, {\n\t // eslint-disable-next-line max-statements\n\t toFixed: function toFixed(fractionDigits) {\n\t var number = thisNumberValue(this);\n\t var fractDigits = toInteger$1(fractionDigits);\n\t var data = [0, 0, 0, 0, 0, 0];\n\t var sign = '';\n\t var result = '0';\n\t var e, z, j, k;\n\n\t var multiply = function (n, c) {\n\t var index = -1;\n\t var c2 = c;\n\t while (++index < 6) {\n\t c2 += n * data[index];\n\t data[index] = c2 % 1e7;\n\t c2 = floor$9(c2 / 1e7);\n\t }\n\t };\n\n\t var divide = function (n) {\n\t var index = 6;\n\t var c = 0;\n\t while (--index >= 0) {\n\t c += data[index];\n\t data[index] = floor$9(c / n);\n\t c = (c % n) * 1e7;\n\t }\n\t };\n\n\t var dataToString = function () {\n\t var index = 6;\n\t var s = '';\n\t while (--index >= 0) {\n\t if (s !== '' || index === 0 || data[index] !== 0) {\n\t var t = String(data[index]);\n\t s = s === '' ? t : s + stringRepeat.call('0', 7 - t.length) + t;\n\t }\n\t } return s;\n\t };\n\n\t if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n\t // eslint-disable-next-line no-self-compare\n\t if (number != number) return 'NaN';\n\t if (number <= -1e21 || number >= 1e21) return String(number);\n\t if (number < 0) {\n\t sign = '-';\n\t number = -number;\n\t }\n\t if (number > 1e-21) {\n\t e = log$1(number * pow$3(2, 69, 1)) - 69;\n\t z = e < 0 ? number * pow$3(2, -e, 1) : number / pow$3(2, e, 1);\n\t z *= 0x10000000000000;\n\t e = 52 - e;\n\t if (e > 0) {\n\t multiply(0, z);\n\t j = fractDigits;\n\t while (j >= 7) {\n\t multiply(1e7, 0);\n\t j -= 7;\n\t }\n\t multiply(pow$3(10, j, 1), 0);\n\t j = e - 1;\n\t while (j >= 23) {\n\t divide(1 << 23);\n\t j -= 23;\n\t }\n\t divide(1 << j);\n\t multiply(1, 1);\n\t divide(2);\n\t result = dataToString();\n\t } else {\n\t multiply(0, z);\n\t multiply(1 << -e, 0);\n\t result = dataToString() + stringRepeat.call('0', fractDigits);\n\t }\n\t }\n\t if (fractDigits > 0) {\n\t k = result.length;\n\t result = sign + (k <= fractDigits\n\t ? '0.' + stringRepeat.call('0', fractDigits - k) + result\n\t : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n\t } else {\n\t result = sign + result;\n\t } return result;\n\t }\n\t});\n\n\tvar propertyIsEnumerable$1 = objectPropertyIsEnumerable$1.f;\n\n\t// `Object.{ entries, values }` methods implementation\n\tvar createMethod$a = function (TO_ENTRIES) {\n\t return function (it) {\n\t var O = toIndexedObject$1(it);\n\t var keys = objectKeys$1(O);\n\t var length = keys.length;\n\t var i = 0;\n\t var result = [];\n\t var key;\n\t while (length > i) {\n\t key = keys[i++];\n\t if (!descriptors$1 || propertyIsEnumerable$1.call(O, key)) {\n\t result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n\t }\n\t }\n\t return result;\n\t };\n\t};\n\n\tvar objectToArray$1 = {\n\t // `Object.entries` method\n\t // https://tc39.github.io/ecma262/#sec-object.entries\n\t entries: createMethod$a(true),\n\t // `Object.values` method\n\t // https://tc39.github.io/ecma262/#sec-object.values\n\t values: createMethod$a(false)\n\t};\n\n\tvar $entries$1 = objectToArray$1.entries;\n\n\t// `Object.entries` method\n\t// https://tc39.github.io/ecma262/#sec-object.entries\n\t_export$1({ target: 'Object', stat: true }, {\n\t entries: function entries(O) {\n\t return $entries$1(O);\n\t }\n\t});\n\n\tvar $values = objectToArray$1.values;\n\n\t// `Object.values` method\n\t// https://tc39.github.io/ecma262/#sec-object.values\n\t_export$1({ target: 'Object', stat: true }, {\n\t values: function values(O) {\n\t return $values(O);\n\t }\n\t});\n\n\tvar max$5 = Math.max;\n\tvar min$a = Math.min;\n\tvar floor$a = Math.floor;\n\tvar SUBSTITUTION_SYMBOLS$1 = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\n\tvar SUBSTITUTION_SYMBOLS_NO_NAMED$1 = /\\$([$&'`]|\\d\\d?)/g;\n\n\tvar maybeToString$1 = function (it) {\n\t return it === undefined ? it : String(it);\n\t};\n\n\t// @@replace logic\n\tfixRegexpWellKnownSymbolLogic$1('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n\t var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n\t var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n\t var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n\t return [\n\t // `String.prototype.replace` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n\t function replace(searchValue, replaceValue) {\n\t var O = requireObjectCoercible$1(this);\n\t var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n\t return replacer !== undefined\n\t ? replacer.call(searchValue, O, replaceValue)\n\t : nativeReplace.call(String(O), searchValue, replaceValue);\n\t },\n\t // `RegExp.prototype[@@replace]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n\t function (regexp, replaceValue) {\n\t if (\n\t (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n\t (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n\t ) {\n\t var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n\t if (res.done) return res.value;\n\t }\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\n\t var functionalReplace = typeof replaceValue === 'function';\n\t if (!functionalReplace) replaceValue = String(replaceValue);\n\n\t var global = rx.global;\n\t if (global) {\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t }\n\t var results = [];\n\t while (true) {\n\t var result = regexpExecAbstract$1(rx, S);\n\t if (result === null) break;\n\n\t results.push(result);\n\t if (!global) break;\n\n\t var matchStr = String(result[0]);\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$1(rx.lastIndex), fullUnicode);\n\t }\n\n\t var accumulatedResult = '';\n\t var nextSourcePosition = 0;\n\t for (var i = 0; i < results.length; i++) {\n\t result = results[i];\n\n\t var matched = String(result[0]);\n\t var position = max$5(min$a(toInteger$1(result.index), S.length), 0);\n\t var captures = [];\n\t // NOTE: This is equivalent to\n\t // captures = result.slice(1).map(maybeToString)\n\t // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n\t // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n\t // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\t for (var j = 1; j < result.length; j++) captures.push(maybeToString$1(result[j]));\n\t var namedCaptures = result.groups;\n\t if (functionalReplace) {\n\t var replacerArgs = [matched].concat(captures, position, S);\n\t if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n\t var replacement = String(replaceValue.apply(undefined, replacerArgs));\n\t } else {\n\t replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n\t }\n\t if (position >= nextSourcePosition) {\n\t accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n\t nextSourcePosition = position + matched.length;\n\t }\n\t }\n\t return accumulatedResult + S.slice(nextSourcePosition);\n\t }\n\t ];\n\n\t // https://tc39.github.io/ecma262/#sec-getsubstitution\n\t function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n\t var tailPos = position + matched.length;\n\t var m = captures.length;\n\t var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED$1;\n\t if (namedCaptures !== undefined) {\n\t namedCaptures = toObject$1(namedCaptures);\n\t symbols = SUBSTITUTION_SYMBOLS$1;\n\t }\n\t return nativeReplace.call(replacement, symbols, function (match, ch) {\n\t var capture;\n\t switch (ch.charAt(0)) {\n\t case '$': return '$';\n\t case '&': return matched;\n\t case '`': return str.slice(0, position);\n\t case \"'\": return str.slice(tailPos);\n\t case '<':\n\t capture = namedCaptures[ch.slice(1, -1)];\n\t break;\n\t default: // \\d\\d?\n\t var n = +ch;\n\t if (n === 0) return match;\n\t if (n > m) {\n\t var f = floor$a(n / 10);\n\t if (f === 0) return match;\n\t if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n\t return match;\n\t }\n\t capture = captures[n - 1];\n\t }\n\t return capture === undefined ? '' : capture;\n\t });\n\t }\n\t});\n\n\tvar nativeGetOwnPropertyNames$2 = objectGetOwnPropertyNames$1.f;\n\n\tvar toString$3 = {}.toString;\n\n\tvar windowNames$1 = typeof window == 'object' && window && Object.getOwnPropertyNames\n\t ? Object.getOwnPropertyNames(window) : [];\n\n\tvar getWindowNames$1 = function (it) {\n\t try {\n\t return nativeGetOwnPropertyNames$2(it);\n\t } catch (error) {\n\t return windowNames$1.slice();\n\t }\n\t};\n\n\t// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\tvar f$d = function getOwnPropertyNames(it) {\n\t return windowNames$1 && toString$3.call(it) == '[object Window]'\n\t ? getWindowNames$1(it)\n\t : nativeGetOwnPropertyNames$2(toIndexedObject$1(it));\n\t};\n\n\tvar objectGetOwnPropertyNamesExternal$1 = {\n\t\tf: f$d\n\t};\n\n\tvar f$e = wellKnownSymbol$1;\n\n\tvar wellKnownSymbolWrapped$1 = {\n\t\tf: f$e\n\t};\n\n\tvar defineProperty$e = objectDefineProperty$1.f;\n\n\tvar defineWellKnownSymbol$1 = function (NAME) {\n\t var Symbol = path$1.Symbol || (path$1.Symbol = {});\n\t if (!has$2(Symbol, NAME)) defineProperty$e(Symbol, NAME, {\n\t value: wellKnownSymbolWrapped$1.f(NAME)\n\t });\n\t};\n\n\tvar $forEach$4 = arrayIteration$1.forEach;\n\n\tvar HIDDEN$1 = sharedKey$1('hidden');\n\tvar SYMBOL$1 = 'Symbol';\n\tvar PROTOTYPE$4 = 'prototype';\n\tvar TO_PRIMITIVE$1 = wellKnownSymbol$1('toPrimitive');\n\tvar setInternalState$e = internalState$1.set;\n\tvar getInternalState$7 = internalState$1.getterFor(SYMBOL$1);\n\tvar ObjectPrototype$5 = Object[PROTOTYPE$4];\n\tvar $Symbol$1 = global_1$1.Symbol;\n\tvar $stringify$1 = getBuiltIn$1('JSON', 'stringify');\n\tvar nativeGetOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor$1.f;\n\tvar nativeDefineProperty$3 = objectDefineProperty$1.f;\n\tvar nativeGetOwnPropertyNames$3 = objectGetOwnPropertyNamesExternal$1.f;\n\tvar nativePropertyIsEnumerable$3 = objectPropertyIsEnumerable$1.f;\n\tvar AllSymbols$1 = shared$1('symbols');\n\tvar ObjectPrototypeSymbols$1 = shared$1('op-symbols');\n\tvar StringToSymbolRegistry$1 = shared$1('string-to-symbol-registry');\n\tvar SymbolToStringRegistry$1 = shared$1('symbol-to-string-registry');\n\tvar WellKnownSymbolsStore$3 = shared$1('wks');\n\tvar QObject$1 = global_1$1.QObject;\n\t// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\tvar USE_SETTER$1 = !QObject$1 || !QObject$1[PROTOTYPE$4] || !QObject$1[PROTOTYPE$4].findChild;\n\n\t// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\tvar setSymbolDescriptor$1 = descriptors$1 && fails$1(function () {\n\t return objectCreate$1(nativeDefineProperty$3({}, 'a', {\n\t get: function () { return nativeDefineProperty$3(this, 'a', { value: 7 }).a; }\n\t })).a != 7;\n\t}) ? function (O, P, Attributes) {\n\t var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$4(ObjectPrototype$5, P);\n\t if (ObjectPrototypeDescriptor) delete ObjectPrototype$5[P];\n\t nativeDefineProperty$3(O, P, Attributes);\n\t if (ObjectPrototypeDescriptor && O !== ObjectPrototype$5) {\n\t nativeDefineProperty$3(ObjectPrototype$5, P, ObjectPrototypeDescriptor);\n\t }\n\t} : nativeDefineProperty$3;\n\n\tvar wrap$3 = function (tag, description) {\n\t var symbol = AllSymbols$1[tag] = objectCreate$1($Symbol$1[PROTOTYPE$4]);\n\t setInternalState$e(symbol, {\n\t type: SYMBOL$1,\n\t tag: tag,\n\t description: description\n\t });\n\t if (!descriptors$1) symbol.description = description;\n\t return symbol;\n\t};\n\n\tvar isSymbol$1 = useSymbolAsUid$1 ? function (it) {\n\t return typeof it == 'symbol';\n\t} : function (it) {\n\t return Object(it) instanceof $Symbol$1;\n\t};\n\n\tvar $defineProperty$1 = function defineProperty(O, P, Attributes) {\n\t if (O === ObjectPrototype$5) $defineProperty$1(ObjectPrototypeSymbols$1, P, Attributes);\n\t anObject$1(O);\n\t var key = toPrimitive$1(P, true);\n\t anObject$1(Attributes);\n\t if (has$2(AllSymbols$1, key)) {\n\t if (!Attributes.enumerable) {\n\t if (!has$2(O, HIDDEN$1)) nativeDefineProperty$3(O, HIDDEN$1, createPropertyDescriptor$1(1, {}));\n\t O[HIDDEN$1][key] = true;\n\t } else {\n\t if (has$2(O, HIDDEN$1) && O[HIDDEN$1][key]) O[HIDDEN$1][key] = false;\n\t Attributes = objectCreate$1(Attributes, { enumerable: createPropertyDescriptor$1(0, false) });\n\t } return setSymbolDescriptor$1(O, key, Attributes);\n\t } return nativeDefineProperty$3(O, key, Attributes);\n\t};\n\n\tvar $defineProperties$1 = function defineProperties(O, Properties) {\n\t anObject$1(O);\n\t var properties = toIndexedObject$1(Properties);\n\t var keys = objectKeys$1(properties).concat($getOwnPropertySymbols$1(properties));\n\t $forEach$4(keys, function (key) {\n\t if (!descriptors$1 || $propertyIsEnumerable$1.call(properties, key)) $defineProperty$1(O, key, properties[key]);\n\t });\n\t return O;\n\t};\n\n\tvar $create$1 = function create(O, Properties) {\n\t return Properties === undefined ? objectCreate$1(O) : $defineProperties$1(objectCreate$1(O), Properties);\n\t};\n\n\tvar $propertyIsEnumerable$1 = function propertyIsEnumerable(V) {\n\t var P = toPrimitive$1(V, true);\n\t var enumerable = nativePropertyIsEnumerable$3.call(this, P);\n\t if (this === ObjectPrototype$5 && has$2(AllSymbols$1, P) && !has$2(ObjectPrototypeSymbols$1, P)) return false;\n\t return enumerable || !has$2(this, P) || !has$2(AllSymbols$1, P) || has$2(this, HIDDEN$1) && this[HIDDEN$1][P] ? enumerable : true;\n\t};\n\n\tvar $getOwnPropertyDescriptor$1 = function getOwnPropertyDescriptor(O, P) {\n\t var it = toIndexedObject$1(O);\n\t var key = toPrimitive$1(P, true);\n\t if (it === ObjectPrototype$5 && has$2(AllSymbols$1, key) && !has$2(ObjectPrototypeSymbols$1, key)) return;\n\t var descriptor = nativeGetOwnPropertyDescriptor$4(it, key);\n\t if (descriptor && has$2(AllSymbols$1, key) && !(has$2(it, HIDDEN$1) && it[HIDDEN$1][key])) {\n\t descriptor.enumerable = true;\n\t }\n\t return descriptor;\n\t};\n\n\tvar $getOwnPropertyNames$1 = function getOwnPropertyNames(O) {\n\t var names = nativeGetOwnPropertyNames$3(toIndexedObject$1(O));\n\t var result = [];\n\t $forEach$4(names, function (key) {\n\t if (!has$2(AllSymbols$1, key) && !has$2(hiddenKeys$2, key)) result.push(key);\n\t });\n\t return result;\n\t};\n\n\tvar $getOwnPropertySymbols$1 = function getOwnPropertySymbols(O) {\n\t var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$5;\n\t var names = nativeGetOwnPropertyNames$3(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols$1 : toIndexedObject$1(O));\n\t var result = [];\n\t $forEach$4(names, function (key) {\n\t if (has$2(AllSymbols$1, key) && (!IS_OBJECT_PROTOTYPE || has$2(ObjectPrototype$5, key))) {\n\t result.push(AllSymbols$1[key]);\n\t }\n\t });\n\t return result;\n\t};\n\n\t// `Symbol` constructor\n\t// https://tc39.github.io/ecma262/#sec-symbol-constructor\n\tif (!nativeSymbol$1) {\n\t $Symbol$1 = function Symbol() {\n\t if (this instanceof $Symbol$1) throw TypeError('Symbol is not a constructor');\n\t var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n\t var tag = uid$1(description);\n\t var setter = function (value) {\n\t if (this === ObjectPrototype$5) setter.call(ObjectPrototypeSymbols$1, value);\n\t if (has$2(this, HIDDEN$1) && has$2(this[HIDDEN$1], tag)) this[HIDDEN$1][tag] = false;\n\t setSymbolDescriptor$1(this, tag, createPropertyDescriptor$1(1, value));\n\t };\n\t if (descriptors$1 && USE_SETTER$1) setSymbolDescriptor$1(ObjectPrototype$5, tag, { configurable: true, set: setter });\n\t return wrap$3(tag, description);\n\t };\n\n\t redefine$1($Symbol$1[PROTOTYPE$4], 'toString', function toString() {\n\t return getInternalState$7(this).tag;\n\t });\n\n\t redefine$1($Symbol$1, 'withoutSetter', function (description) {\n\t return wrap$3(uid$1(description), description);\n\t });\n\n\t objectPropertyIsEnumerable$1.f = $propertyIsEnumerable$1;\n\t objectDefineProperty$1.f = $defineProperty$1;\n\t objectGetOwnPropertyDescriptor$1.f = $getOwnPropertyDescriptor$1;\n\t objectGetOwnPropertyNames$1.f = objectGetOwnPropertyNamesExternal$1.f = $getOwnPropertyNames$1;\n\t objectGetOwnPropertySymbols$1.f = $getOwnPropertySymbols$1;\n\n\t wellKnownSymbolWrapped$1.f = function (name) {\n\t return wrap$3(wellKnownSymbol$1(name), name);\n\t };\n\n\t if (descriptors$1) {\n\t // https://github.com/tc39/proposal-Symbol-description\n\t nativeDefineProperty$3($Symbol$1[PROTOTYPE$4], 'description', {\n\t configurable: true,\n\t get: function description() {\n\t return getInternalState$7(this).description;\n\t }\n\t });\n\t {\n\t redefine$1(ObjectPrototype$5, 'propertyIsEnumerable', $propertyIsEnumerable$1, { unsafe: true });\n\t }\n\t }\n\t}\n\n\t_export$1({ global: true, wrap: true, forced: !nativeSymbol$1, sham: !nativeSymbol$1 }, {\n\t Symbol: $Symbol$1\n\t});\n\n\t$forEach$4(objectKeys$1(WellKnownSymbolsStore$3), function (name) {\n\t defineWellKnownSymbol$1(name);\n\t});\n\n\t_export$1({ target: SYMBOL$1, stat: true, forced: !nativeSymbol$1 }, {\n\t // `Symbol.for` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.for\n\t 'for': function (key) {\n\t var string = String(key);\n\t if (has$2(StringToSymbolRegistry$1, string)) return StringToSymbolRegistry$1[string];\n\t var symbol = $Symbol$1(string);\n\t StringToSymbolRegistry$1[string] = symbol;\n\t SymbolToStringRegistry$1[symbol] = string;\n\t return symbol;\n\t },\n\t // `Symbol.keyFor` method\n\t // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n\t keyFor: function keyFor(sym) {\n\t if (!isSymbol$1(sym)) throw TypeError(sym + ' is not a symbol');\n\t if (has$2(SymbolToStringRegistry$1, sym)) return SymbolToStringRegistry$1[sym];\n\t },\n\t useSetter: function () { USE_SETTER$1 = true; },\n\t useSimple: function () { USE_SETTER$1 = false; }\n\t});\n\n\t_export$1({ target: 'Object', stat: true, forced: !nativeSymbol$1, sham: !descriptors$1 }, {\n\t // `Object.create` method\n\t // https://tc39.github.io/ecma262/#sec-object.create\n\t create: $create$1,\n\t // `Object.defineProperty` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperty\n\t defineProperty: $defineProperty$1,\n\t // `Object.defineProperties` method\n\t // https://tc39.github.io/ecma262/#sec-object.defineproperties\n\t defineProperties: $defineProperties$1,\n\t // `Object.getOwnPropertyDescriptor` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n\t getOwnPropertyDescriptor: $getOwnPropertyDescriptor$1\n\t});\n\n\t_export$1({ target: 'Object', stat: true, forced: !nativeSymbol$1 }, {\n\t // `Object.getOwnPropertyNames` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\t getOwnPropertyNames: $getOwnPropertyNames$1,\n\t // `Object.getOwnPropertySymbols` method\n\t // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n\t getOwnPropertySymbols: $getOwnPropertySymbols$1\n\t});\n\n\t// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n\t// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n\t_export$1({ target: 'Object', stat: true, forced: fails$1(function () { objectGetOwnPropertySymbols$1.f(1); }) }, {\n\t getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n\t return objectGetOwnPropertySymbols$1.f(toObject$1(it));\n\t }\n\t});\n\n\t// `JSON.stringify` method behavior with symbols\n\t// https://tc39.github.io/ecma262/#sec-json.stringify\n\tif ($stringify$1) {\n\t var FORCED_JSON_STRINGIFY$1 = !nativeSymbol$1 || fails$1(function () {\n\t var symbol = $Symbol$1();\n\t // MS Edge converts symbol values to JSON as {}\n\t return $stringify$1([symbol]) != '[null]'\n\t // WebKit converts symbol values to JSON as null\n\t || $stringify$1({ a: symbol }) != '{}'\n\t // V8 throws on boxed symbols\n\t || $stringify$1(Object(symbol)) != '{}';\n\t });\n\n\t _export$1({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY$1 }, {\n\t // eslint-disable-next-line no-unused-vars\n\t stringify: function stringify(it, replacer, space) {\n\t var args = [it];\n\t var index = 1;\n\t var $replacer;\n\t while (arguments.length > index) args.push(arguments[index++]);\n\t $replacer = replacer;\n\t if (!isObject$2(replacer) && it === undefined || isSymbol$1(it)) return; // IE8 returns string on undefined\n\t if (!isArray$2(replacer)) replacer = function (key, value) {\n\t if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n\t if (!isSymbol$1(value)) return value;\n\t };\n\t args[1] = replacer;\n\t return $stringify$1.apply(null, args);\n\t }\n\t });\n\t}\n\n\t// `Symbol.prototype[@@toPrimitive]` method\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\n\tif (!$Symbol$1[PROTOTYPE$4][TO_PRIMITIVE$1]) {\n\t createNonEnumerableProperty$1($Symbol$1[PROTOTYPE$4], TO_PRIMITIVE$1, $Symbol$1[PROTOTYPE$4].valueOf);\n\t}\n\t// `Symbol.prototype[@@toStringTag]` property\n\t// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\n\tsetToStringTag$1($Symbol$1, SYMBOL$1);\n\n\thiddenKeys$2[HIDDEN$1] = true;\n\n\t// `Number.isNaN` method\n\t// https://tc39.github.io/ecma262/#sec-number.isnan\n\t_export$1({ target: 'Number', stat: true }, {\n\t isNaN: function isNaN(number) {\n\t // eslint-disable-next-line no-self-compare\n\t return number != number;\n\t }\n\t});\n\n\tvar nativeGetOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor$1.f;\n\n\n\tvar FAILS_ON_PRIMITIVES$3 = fails$1(function () { nativeGetOwnPropertyDescriptor$5(1); });\n\tvar FORCED$a = !descriptors$1 || FAILS_ON_PRIMITIVES$3;\n\n\t// `Object.getOwnPropertyDescriptor` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\t_export$1({ target: 'Object', stat: true, forced: FORCED$a, sham: !descriptors$1 }, {\n\t getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n\t return nativeGetOwnPropertyDescriptor$5(toIndexedObject$1(it), key);\n\t }\n\t});\n\n\t// `Object.getOwnPropertyDescriptors` method\n\t// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n\t_export$1({ target: 'Object', stat: true, sham: !descriptors$1 }, {\n\t getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n\t var O = toIndexedObject$1(object);\n\t var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor$1.f;\n\t var keys = ownKeys$2(O);\n\t var result = {};\n\t var index = 0;\n\t var key, descriptor;\n\t while (keys.length > index) {\n\t descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n\t if (descriptor !== undefined) createProperty$1(result, key, descriptor);\n\t }\n\t return result;\n\t }\n\t});\n\n\t// @@match logic\n\tfixRegexpWellKnownSymbolLogic$1('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n\t return [\n\t // `String.prototype.match` method\n\t // https://tc39.github.io/ecma262/#sec-string.prototype.match\n\t function match(regexp) {\n\t var O = requireObjectCoercible$1(this);\n\t var matcher = regexp == undefined ? undefined : regexp[MATCH];\n\t return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n\t },\n\t // `RegExp.prototype[@@match]` method\n\t // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n\t function (regexp) {\n\t var res = maybeCallNative(nativeMatch, regexp, this);\n\t if (res.done) return res.value;\n\n\t var rx = anObject$1(regexp);\n\t var S = String(this);\n\n\t if (!rx.global) return regexpExecAbstract$1(rx, S);\n\n\t var fullUnicode = rx.unicode;\n\t rx.lastIndex = 0;\n\t var A = [];\n\t var n = 0;\n\t var result;\n\t while ((result = regexpExecAbstract$1(rx, S)) !== null) {\n\t var matchStr = String(result[0]);\n\t A[n] = matchStr;\n\t if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$1(rx.lastIndex), fullUnicode);\n\t n++;\n\t }\n\t return n === 0 ? null : A;\n\t }\n\t ];\n\t});\n\n\tfunction _classCallCheck$2(e, t) {\n\t if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n\t}\n\n\tfunction _defineProperties$2(e, t) {\n\t for (var n = 0; n < t.length; n++) {\n\t var r = t[n];\n\t r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n\t }\n\t}\n\n\tfunction _createClass$2(e, t, n) {\n\t return t && _defineProperties$2(e.prototype, t), n && _defineProperties$2(e, n), e;\n\t}\n\n\tfunction _defineProperty$2(e, t, n) {\n\t return t in e ? Object.defineProperty(e, t, {\n\t value: n,\n\t enumerable: !0,\n\t configurable: !0,\n\t writable: !0\n\t }) : e[t] = n, e;\n\t}\n\n\tfunction ownKeys$3(e, t) {\n\t var n = Object.keys(e);\n\n\t if (Object.getOwnPropertySymbols) {\n\t var r = Object.getOwnPropertySymbols(e);\n\t t && (r = r.filter(function (t) {\n\t return Object.getOwnPropertyDescriptor(e, t).enumerable;\n\t })), n.push.apply(n, r);\n\t }\n\n\t return n;\n\t}\n\n\tfunction _objectSpread2$1(e) {\n\t for (var t = 1; t < arguments.length; t++) {\n\t var n = null != arguments[t] ? arguments[t] : {};\n\t t % 2 ? ownKeys$3(Object(n), !0).forEach(function (t) {\n\t _defineProperty$2(e, t, n[t]);\n\t }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys$3(Object(n)).forEach(function (t) {\n\t Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n\t });\n\t }\n\n\t return e;\n\t}\n\n\tvar defaults$1 = {\n\t addCSS: !0,\n\t thumbWidth: 15,\n\t watch: !0\n\t};\n\n\tfunction matches$1(e, t) {\n\t return function () {\n\t return Array.from(document.querySelectorAll(t)).includes(this);\n\t }.call(e, t);\n\t}\n\n\tfunction trigger(e, t) {\n\t if (e && t) {\n\t var n = new Event(t, {\n\t bubbles: !0\n\t });\n\t e.dispatchEvent(n);\n\t }\n\t}\n\n\tvar getConstructor$1 = function getConstructor(e) {\n\t return null != e ? e.constructor : null;\n\t},\n\t instanceOf$1 = function instanceOf(e, t) {\n\t return !!(e && t && e instanceof t);\n\t},\n\t isNullOrUndefined$1 = function isNullOrUndefined(e) {\n\t return null == e;\n\t},\n\t isObject$3 = function isObject(e) {\n\t return getConstructor$1(e) === Object;\n\t},\n\t isNumber$1 = function isNumber(e) {\n\t return getConstructor$1(e) === Number && !Number.isNaN(e);\n\t},\n\t isString$2 = function isString(e) {\n\t return getConstructor$1(e) === String;\n\t},\n\t isBoolean$1 = function isBoolean(e) {\n\t return getConstructor$1(e) === Boolean;\n\t},\n\t isFunction$1 = function isFunction(e) {\n\t return getConstructor$1(e) === Function;\n\t},\n\t isArray$3 = function isArray(e) {\n\t return Array.isArray(e);\n\t},\n\t isNodeList$1 = function isNodeList(e) {\n\t return instanceOf$1(e, NodeList);\n\t},\n\t isElement$2 = function isElement(e) {\n\t return instanceOf$1(e, Element);\n\t},\n\t isEvent$2 = function isEvent(e) {\n\t return instanceOf$1(e, Event);\n\t},\n\t isEmpty$1 = function isEmpty(e) {\n\t return isNullOrUndefined$1(e) || (isString$2(e) || isArray$3(e) || isNodeList$1(e)) && !e.length || isObject$3(e) && !Object.keys(e).length;\n\t},\n\t is$1 = {\n\t nullOrUndefined: isNullOrUndefined$1,\n\t object: isObject$3,\n\t number: isNumber$1,\n\t string: isString$2,\n\t boolean: isBoolean$1,\n\t function: isFunction$1,\n\t array: isArray$3,\n\t nodeList: isNodeList$1,\n\t element: isElement$2,\n\t event: isEvent$2,\n\t empty: isEmpty$1\n\t};\n\n\tfunction getDecimalPlaces(e) {\n\t var t = \"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\t return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0;\n\t}\n\n\tfunction round(e, t) {\n\t if (1 > t) {\n\t var n = getDecimalPlaces(t);\n\t return parseFloat(e.toFixed(n));\n\t }\n\n\t return Math.round(e / t) * t;\n\t}\n\n\tvar RangeTouch = function () {\n\t function e(t, n) {\n\t _classCallCheck$2(this, e), is$1.element(t) ? this.element = t : is$1.string(t) && (this.element = document.querySelector(t)), is$1.element(this.element) && is$1.empty(this.element.rangeTouch) && (this.config = _objectSpread2$1({}, defaults$1, {}, n), this.init());\n\t }\n\n\t return _createClass$2(e, [{\n\t key: \"init\",\n\t value: function value() {\n\t e.enabled && (this.config.addCSS && (this.element.style.userSelect = \"none\", this.element.style.webKitUserSelect = \"none\", this.element.style.touchAction = \"manipulation\"), this.listeners(!0), this.element.rangeTouch = this);\n\t }\n\t }, {\n\t key: \"destroy\",\n\t value: function value() {\n\t e.enabled && (this.config.addCSS && (this.element.style.userSelect = \"\", this.element.style.webKitUserSelect = \"\", this.element.style.touchAction = \"\"), this.listeners(!1), this.element.rangeTouch = null);\n\t }\n\t }, {\n\t key: \"listeners\",\n\t value: function value(e) {\n\t var t = this,\n\t n = e ? \"addEventListener\" : \"removeEventListener\";\n\t [\"touchstart\", \"touchmove\", \"touchend\"].forEach(function (e) {\n\t t.element[n](e, function (e) {\n\t return t.set(e);\n\t }, !1);\n\t });\n\t }\n\t }, {\n\t key: \"get\",\n\t value: function value(t) {\n\t if (!e.enabled || !is$1.event(t)) return null;\n\t var n,\n\t r = t.target,\n\t i = t.changedTouches[0],\n\t o = parseFloat(r.getAttribute(\"min\")) || 0,\n\t s = parseFloat(r.getAttribute(\"max\")) || 100,\n\t u = parseFloat(r.getAttribute(\"step\")) || 1,\n\t c = r.getBoundingClientRect(),\n\t a = 100 / c.width * (this.config.thumbWidth / 2) / 100;\n\t return 0 > (n = 100 / c.width * (i.clientX - c.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), o + round(n / 100 * (s - o), u);\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function value(t) {\n\t e.enabled && is$1.event(t) && !t.target.disabled && (t.preventDefault(), t.target.value = this.get(t), trigger(t.target, \"touchend\" === t.type ? \"change\" : \"input\"));\n\t }\n\t }], [{\n\t key: \"setup\",\n\t value: function value(t) {\n\t var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},\n\t r = null;\n\t if (is$1.empty(t) || is$1.string(t) ? r = Array.from(document.querySelectorAll(is$1.string(t) ? t : 'input[type=\"range\"]')) : is$1.element(t) ? r = [t] : is$1.nodeList(t) ? r = Array.from(t) : is$1.array(t) && (r = t.filter(is$1.element)), is$1.empty(r)) return null;\n\n\t var i = _objectSpread2$1({}, defaults$1, {}, n);\n\n\t if (is$1.string(t) && i.watch) {\n\t var o = new MutationObserver(function (n) {\n\t Array.from(n).forEach(function (n) {\n\t Array.from(n.addedNodes).forEach(function (n) {\n\t is$1.element(n) && matches$1(n, t) && new e(n, i);\n\t });\n\t });\n\t });\n\t o.observe(document.body, {\n\t childList: !0,\n\t subtree: !0\n\t });\n\t }\n\n\t return r.map(function (t) {\n\t return new e(t, n);\n\t });\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t return \"ontouchstart\" in document.documentElement;\n\t }\n\t }]), e;\n\t}();\n\n\tvar nativePromiseConstructor$1 = global_1$1.Promise;\n\n\tvar SPECIES$b = wellKnownSymbol$1('species');\n\n\tvar setSpecies$1 = function (CONSTRUCTOR_NAME) {\n\t var Constructor = getBuiltIn$1(CONSTRUCTOR_NAME);\n\t var defineProperty = objectDefineProperty$1.f;\n\n\t if (descriptors$1 && Constructor && !Constructor[SPECIES$b]) {\n\t defineProperty(Constructor, SPECIES$b, {\n\t configurable: true,\n\t get: function () { return this; }\n\t });\n\t }\n\t};\n\n\tvar engineIsIos$1 = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent$1);\n\n\tvar location$1 = global_1$1.location;\n\tvar set$4 = global_1$1.setImmediate;\n\tvar clear$1 = global_1$1.clearImmediate;\n\tvar process$6 = global_1$1.process;\n\tvar MessageChannel$1 = global_1$1.MessageChannel;\n\tvar Dispatch$1 = global_1$1.Dispatch;\n\tvar counter$1 = 0;\n\tvar queue$1 = {};\n\tvar ONREADYSTATECHANGE$1 = 'onreadystatechange';\n\tvar defer$1, channel$1, port$1;\n\n\tvar run$1 = function (id) {\n\t // eslint-disable-next-line no-prototype-builtins\n\t if (queue$1.hasOwnProperty(id)) {\n\t var fn = queue$1[id];\n\t delete queue$1[id];\n\t fn();\n\t }\n\t};\n\n\tvar runner$1 = function (id) {\n\t return function () {\n\t run$1(id);\n\t };\n\t};\n\n\tvar listener$1 = function (event) {\n\t run$1(event.data);\n\t};\n\n\tvar post$1 = function (id) {\n\t // old engines have not location.origin\n\t global_1$1.postMessage(id + '', location$1.protocol + '//' + location$1.host);\n\t};\n\n\t// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\n\tif (!set$4 || !clear$1) {\n\t set$4 = function setImmediate(fn) {\n\t var args = [];\n\t var i = 1;\n\t while (arguments.length > i) args.push(arguments[i++]);\n\t queue$1[++counter$1] = function () {\n\t // eslint-disable-next-line no-new-func\n\t (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n\t };\n\t defer$1(counter$1);\n\t return counter$1;\n\t };\n\t clear$1 = function clearImmediate(id) {\n\t delete queue$1[id];\n\t };\n\t // Node.js 0.8-\n\t if (classofRaw$1(process$6) == 'process') {\n\t defer$1 = function (id) {\n\t process$6.nextTick(runner$1(id));\n\t };\n\t // Sphere (JS game engine) Dispatch API\n\t } else if (Dispatch$1 && Dispatch$1.now) {\n\t defer$1 = function (id) {\n\t Dispatch$1.now(runner$1(id));\n\t };\n\t // Browsers with MessageChannel, includes WebWorkers\n\t // except iOS - https://github.com/zloirock/core-js/issues/624\n\t } else if (MessageChannel$1 && !engineIsIos$1) {\n\t channel$1 = new MessageChannel$1();\n\t port$1 = channel$1.port2;\n\t channel$1.port1.onmessage = listener$1;\n\t defer$1 = functionBindContext$1(port$1.postMessage, port$1, 1);\n\t // Browsers with postMessage, skip WebWorkers\n\t // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n\t } else if (\n\t global_1$1.addEventListener &&\n\t typeof postMessage == 'function' &&\n\t !global_1$1.importScripts &&\n\t !fails$1(post$1) &&\n\t location$1.protocol !== 'file:'\n\t ) {\n\t defer$1 = post$1;\n\t global_1$1.addEventListener('message', listener$1, false);\n\t // IE8-\n\t } else if (ONREADYSTATECHANGE$1 in documentCreateElement$1('script')) {\n\t defer$1 = function (id) {\n\t html$1.appendChild(documentCreateElement$1('script'))[ONREADYSTATECHANGE$1] = function () {\n\t html$1.removeChild(this);\n\t run$1(id);\n\t };\n\t };\n\t // Rest old browsers\n\t } else {\n\t defer$1 = function (id) {\n\t setTimeout(runner$1(id), 0);\n\t };\n\t }\n\t}\n\n\tvar task$2 = {\n\t set: set$4,\n\t clear: clear$1\n\t};\n\n\tvar getOwnPropertyDescriptor$7 = objectGetOwnPropertyDescriptor$1.f;\n\n\tvar macrotask$1 = task$2.set;\n\n\n\tvar MutationObserver$2 = global_1$1.MutationObserver || global_1$1.WebKitMutationObserver;\n\tvar process$7 = global_1$1.process;\n\tvar Promise$2 = global_1$1.Promise;\n\tvar IS_NODE$2 = classofRaw$1(process$7) == 'process';\n\t// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\n\tvar queueMicrotaskDescriptor$1 = getOwnPropertyDescriptor$7(global_1$1, 'queueMicrotask');\n\tvar queueMicrotask$1 = queueMicrotaskDescriptor$1 && queueMicrotaskDescriptor$1.value;\n\n\tvar flush$1, head$1, last$1, notify$2, toggle$1, node$1, promise$1, then$1;\n\n\t// modern engines have queueMicrotask method\n\tif (!queueMicrotask$1) {\n\t flush$1 = function () {\n\t var parent, fn;\n\t if (IS_NODE$2 && (parent = process$7.domain)) parent.exit();\n\t while (head$1) {\n\t fn = head$1.fn;\n\t head$1 = head$1.next;\n\t try {\n\t fn();\n\t } catch (error) {\n\t if (head$1) notify$2();\n\t else last$1 = undefined;\n\t throw error;\n\t }\n\t } last$1 = undefined;\n\t if (parent) parent.enter();\n\t };\n\n\t // Node.js\n\t if (IS_NODE$2) {\n\t notify$2 = function () {\n\t process$7.nextTick(flush$1);\n\t };\n\t // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n\t } else if (MutationObserver$2 && !engineIsIos$1) {\n\t toggle$1 = true;\n\t node$1 = document.createTextNode('');\n\t new MutationObserver$2(flush$1).observe(node$1, { characterData: true });\n\t notify$2 = function () {\n\t node$1.data = toggle$1 = !toggle$1;\n\t };\n\t // environments with maybe non-completely correct, but existent Promise\n\t } else if (Promise$2 && Promise$2.resolve) {\n\t // Promise.resolve without an argument throws an error in LG WebOS 2\n\t promise$1 = Promise$2.resolve(undefined);\n\t then$1 = promise$1.then;\n\t notify$2 = function () {\n\t then$1.call(promise$1, flush$1);\n\t };\n\t // for other environments - macrotask based on:\n\t // - setImmediate\n\t // - MessageChannel\n\t // - window.postMessag\n\t // - onreadystatechange\n\t // - setTimeout\n\t } else {\n\t notify$2 = function () {\n\t // strange IE + webpack dev server bug - use .call(global)\n\t macrotask$1.call(global_1$1, flush$1);\n\t };\n\t }\n\t}\n\n\tvar microtask$1 = queueMicrotask$1 || function (fn) {\n\t var task = { fn: fn, next: undefined };\n\t if (last$1) last$1.next = task;\n\t if (!head$1) {\n\t head$1 = task;\n\t notify$2();\n\t } last$1 = task;\n\t};\n\n\tvar PromiseCapability$1 = function (C) {\n\t var resolve, reject;\n\t this.promise = new C(function ($$resolve, $$reject) {\n\t if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n\t resolve = $$resolve;\n\t reject = $$reject;\n\t });\n\t this.resolve = aFunction$3(resolve);\n\t this.reject = aFunction$3(reject);\n\t};\n\n\t// 25.4.1.5 NewPromiseCapability(C)\n\tvar f$f = function (C) {\n\t return new PromiseCapability$1(C);\n\t};\n\n\tvar newPromiseCapability$2 = {\n\t\tf: f$f\n\t};\n\n\tvar promiseResolve$1 = function (C, x) {\n\t anObject$1(C);\n\t if (isObject$2(x) && x.constructor === C) return x;\n\t var promiseCapability = newPromiseCapability$2.f(C);\n\t var resolve = promiseCapability.resolve;\n\t resolve(x);\n\t return promiseCapability.promise;\n\t};\n\n\tvar hostReportErrors$1 = function (a, b) {\n\t var console = global_1$1.console;\n\t if (console && console.error) {\n\t arguments.length === 1 ? console.error(a) : console.error(a, b);\n\t }\n\t};\n\n\tvar perform$1 = function (exec) {\n\t try {\n\t return { error: false, value: exec() };\n\t } catch (error) {\n\t return { error: true, value: error };\n\t }\n\t};\n\n\tvar task$3 = task$2.set;\n\n\n\n\n\n\n\n\n\n\n\tvar SPECIES$c = wellKnownSymbol$1('species');\n\tvar PROMISE$1 = 'Promise';\n\tvar getInternalState$8 = internalState$1.get;\n\tvar setInternalState$f = internalState$1.set;\n\tvar getInternalPromiseState$1 = internalState$1.getterFor(PROMISE$1);\n\tvar PromiseConstructor$1 = nativePromiseConstructor$1;\n\tvar TypeError$2 = global_1$1.TypeError;\n\tvar document$4 = global_1$1.document;\n\tvar process$8 = global_1$1.process;\n\tvar $fetch$3 = getBuiltIn$1('fetch');\n\tvar newPromiseCapability$3 = newPromiseCapability$2.f;\n\tvar newGenericPromiseCapability$1 = newPromiseCapability$3;\n\tvar IS_NODE$3 = classofRaw$1(process$8) == 'process';\n\tvar DISPATCH_EVENT$1 = !!(document$4 && document$4.createEvent && global_1$1.dispatchEvent);\n\tvar UNHANDLED_REJECTION$1 = 'unhandledrejection';\n\tvar REJECTION_HANDLED$1 = 'rejectionhandled';\n\tvar PENDING$1 = 0;\n\tvar FULFILLED$1 = 1;\n\tvar REJECTED$1 = 2;\n\tvar HANDLED$1 = 1;\n\tvar UNHANDLED$1 = 2;\n\tvar Internal$1, OwnPromiseCapability$1, PromiseWrapper$1, nativeThen$1;\n\n\tvar FORCED$b = isForced_1$1(PROMISE$1, function () {\n\t var GLOBAL_CORE_JS_PROMISE = inspectSource$1(PromiseConstructor$1) !== String(PromiseConstructor$1);\n\t if (!GLOBAL_CORE_JS_PROMISE) {\n\t // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n\t // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n\t // We can't detect it synchronously, so just check versions\n\t if (engineV8Version$1 === 66) return true;\n\t // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n\t if (!IS_NODE$3 && typeof PromiseRejectionEvent != 'function') return true;\n\t }\n\t // We can't use @@species feature detection in V8 since it causes\n\t // deoptimization and performance degradation\n\t // https://github.com/zloirock/core-js/issues/679\n\t if (engineV8Version$1 >= 51 && /native code/.test(PromiseConstructor$1)) return false;\n\t // Detect correctness of subclassing with @@species support\n\t var promise = PromiseConstructor$1.resolve(1);\n\t var FakePromise = function (exec) {\n\t exec(function () { /* empty */ }, function () { /* empty */ });\n\t };\n\t var constructor = promise.constructor = {};\n\t constructor[SPECIES$c] = FakePromise;\n\t return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n\t});\n\n\tvar INCORRECT_ITERATION$3 = FORCED$b || !checkCorrectnessOfIteration$1(function (iterable) {\n\t PromiseConstructor$1.all(iterable)['catch'](function () { /* empty */ });\n\t});\n\n\t// helpers\n\tvar isThenable$2 = function (it) {\n\t var then;\n\t return isObject$2(it) && typeof (then = it.then) == 'function' ? then : false;\n\t};\n\n\tvar notify$3 = function (promise, state, isReject) {\n\t if (state.notified) return;\n\t state.notified = true;\n\t var chain = state.reactions;\n\t microtask$1(function () {\n\t var value = state.value;\n\t var ok = state.state == FULFILLED$1;\n\t var index = 0;\n\t // variable length - can't use forEach\n\t while (chain.length > index) {\n\t var reaction = chain[index++];\n\t var handler = ok ? reaction.ok : reaction.fail;\n\t var resolve = reaction.resolve;\n\t var reject = reaction.reject;\n\t var domain = reaction.domain;\n\t var result, then, exited;\n\t try {\n\t if (handler) {\n\t if (!ok) {\n\t if (state.rejection === UNHANDLED$1) onHandleUnhandled$1(promise, state);\n\t state.rejection = HANDLED$1;\n\t }\n\t if (handler === true) result = value;\n\t else {\n\t if (domain) domain.enter();\n\t result = handler(value); // can throw\n\t if (domain) {\n\t domain.exit();\n\t exited = true;\n\t }\n\t }\n\t if (result === reaction.promise) {\n\t reject(TypeError$2('Promise-chain cycle'));\n\t } else if (then = isThenable$2(result)) {\n\t then.call(result, resolve, reject);\n\t } else resolve(result);\n\t } else reject(value);\n\t } catch (error) {\n\t if (domain && !exited) domain.exit();\n\t reject(error);\n\t }\n\t }\n\t state.reactions = [];\n\t state.notified = false;\n\t if (isReject && !state.rejection) onUnhandled$1(promise, state);\n\t });\n\t};\n\n\tvar dispatchEvent$1 = function (name, promise, reason) {\n\t var event, handler;\n\t if (DISPATCH_EVENT$1) {\n\t event = document$4.createEvent('Event');\n\t event.promise = promise;\n\t event.reason = reason;\n\t event.initEvent(name, false, true);\n\t global_1$1.dispatchEvent(event);\n\t } else event = { promise: promise, reason: reason };\n\t if (handler = global_1$1['on' + name]) handler(event);\n\t else if (name === UNHANDLED_REJECTION$1) hostReportErrors$1('Unhandled promise rejection', reason);\n\t};\n\n\tvar onUnhandled$1 = function (promise, state) {\n\t task$3.call(global_1$1, function () {\n\t var value = state.value;\n\t var IS_UNHANDLED = isUnhandled$1(state);\n\t var result;\n\t if (IS_UNHANDLED) {\n\t result = perform$1(function () {\n\t if (IS_NODE$3) {\n\t process$8.emit('unhandledRejection', value, promise);\n\t } else dispatchEvent$1(UNHANDLED_REJECTION$1, promise, value);\n\t });\n\t // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n\t state.rejection = IS_NODE$3 || isUnhandled$1(state) ? UNHANDLED$1 : HANDLED$1;\n\t if (result.error) throw result.value;\n\t }\n\t });\n\t};\n\n\tvar isUnhandled$1 = function (state) {\n\t return state.rejection !== HANDLED$1 && !state.parent;\n\t};\n\n\tvar onHandleUnhandled$1 = function (promise, state) {\n\t task$3.call(global_1$1, function () {\n\t if (IS_NODE$3) {\n\t process$8.emit('rejectionHandled', promise);\n\t } else dispatchEvent$1(REJECTION_HANDLED$1, promise, state.value);\n\t });\n\t};\n\n\tvar bind$1 = function (fn, promise, state, unwrap) {\n\t return function (value) {\n\t fn(promise, state, value, unwrap);\n\t };\n\t};\n\n\tvar internalReject$1 = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t state.value = value;\n\t state.state = REJECTED$1;\n\t notify$3(promise, state, true);\n\t};\n\n\tvar internalResolve$1 = function (promise, state, value, unwrap) {\n\t if (state.done) return;\n\t state.done = true;\n\t if (unwrap) state = unwrap;\n\t try {\n\t if (promise === value) throw TypeError$2(\"Promise can't be resolved itself\");\n\t var then = isThenable$2(value);\n\t if (then) {\n\t microtask$1(function () {\n\t var wrapper = { done: false };\n\t try {\n\t then.call(value,\n\t bind$1(internalResolve$1, promise, wrapper, state),\n\t bind$1(internalReject$1, promise, wrapper, state)\n\t );\n\t } catch (error) {\n\t internalReject$1(promise, wrapper, error, state);\n\t }\n\t });\n\t } else {\n\t state.value = value;\n\t state.state = FULFILLED$1;\n\t notify$3(promise, state, false);\n\t }\n\t } catch (error) {\n\t internalReject$1(promise, { done: false }, error, state);\n\t }\n\t};\n\n\t// constructor polyfill\n\tif (FORCED$b) {\n\t // 25.4.3.1 Promise(executor)\n\t PromiseConstructor$1 = function Promise(executor) {\n\t anInstance$1(this, PromiseConstructor$1, PROMISE$1);\n\t aFunction$3(executor);\n\t Internal$1.call(this);\n\t var state = getInternalState$8(this);\n\t try {\n\t executor(bind$1(internalResolve$1, this, state), bind$1(internalReject$1, this, state));\n\t } catch (error) {\n\t internalReject$1(this, state, error);\n\t }\n\t };\n\t // eslint-disable-next-line no-unused-vars\n\t Internal$1 = function Promise(executor) {\n\t setInternalState$f(this, {\n\t type: PROMISE$1,\n\t done: false,\n\t notified: false,\n\t parent: false,\n\t reactions: [],\n\t rejection: false,\n\t state: PENDING$1,\n\t value: undefined\n\t });\n\t };\n\t Internal$1.prototype = redefineAll$1(PromiseConstructor$1.prototype, {\n\t // `Promise.prototype.then` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n\t then: function then(onFulfilled, onRejected) {\n\t var state = getInternalPromiseState$1(this);\n\t var reaction = newPromiseCapability$3(speciesConstructor$1(this, PromiseConstructor$1));\n\t reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n\t reaction.fail = typeof onRejected == 'function' && onRejected;\n\t reaction.domain = IS_NODE$3 ? process$8.domain : undefined;\n\t state.parent = true;\n\t state.reactions.push(reaction);\n\t if (state.state != PENDING$1) notify$3(this, state, false);\n\t return reaction.promise;\n\t },\n\t // `Promise.prototype.catch` method\n\t // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n\t 'catch': function (onRejected) {\n\t return this.then(undefined, onRejected);\n\t }\n\t });\n\t OwnPromiseCapability$1 = function () {\n\t var promise = new Internal$1();\n\t var state = getInternalState$8(promise);\n\t this.promise = promise;\n\t this.resolve = bind$1(internalResolve$1, promise, state);\n\t this.reject = bind$1(internalReject$1, promise, state);\n\t };\n\t newPromiseCapability$2.f = newPromiseCapability$3 = function (C) {\n\t return C === PromiseConstructor$1 || C === PromiseWrapper$1\n\t ? new OwnPromiseCapability$1(C)\n\t : newGenericPromiseCapability$1(C);\n\t };\n\n\t if ( typeof nativePromiseConstructor$1 == 'function') {\n\t nativeThen$1 = nativePromiseConstructor$1.prototype.then;\n\n\t // wrap native Promise#then for native async functions\n\t redefine$1(nativePromiseConstructor$1.prototype, 'then', function then(onFulfilled, onRejected) {\n\t var that = this;\n\t return new PromiseConstructor$1(function (resolve, reject) {\n\t nativeThen$1.call(that, resolve, reject);\n\t }).then(onFulfilled, onRejected);\n\t // https://github.com/zloirock/core-js/issues/640\n\t }, { unsafe: true });\n\n\t // wrap fetch result\n\t if (typeof $fetch$3 == 'function') _export$1({ global: true, enumerable: true, forced: true }, {\n\t // eslint-disable-next-line no-unused-vars\n\t fetch: function fetch(input /* , init */) {\n\t return promiseResolve$1(PromiseConstructor$1, $fetch$3.apply(global_1$1, arguments));\n\t }\n\t });\n\t }\n\t}\n\n\t_export$1({ global: true, wrap: true, forced: FORCED$b }, {\n\t Promise: PromiseConstructor$1\n\t});\n\n\tsetToStringTag$1(PromiseConstructor$1, PROMISE$1, false);\n\tsetSpecies$1(PROMISE$1);\n\n\tPromiseWrapper$1 = getBuiltIn$1(PROMISE$1);\n\n\t// statics\n\t_export$1({ target: PROMISE$1, stat: true, forced: FORCED$b }, {\n\t // `Promise.reject` method\n\t // https://tc39.github.io/ecma262/#sec-promise.reject\n\t reject: function reject(r) {\n\t var capability = newPromiseCapability$3(this);\n\t capability.reject.call(undefined, r);\n\t return capability.promise;\n\t }\n\t});\n\n\t_export$1({ target: PROMISE$1, stat: true, forced: FORCED$b }, {\n\t // `Promise.resolve` method\n\t // https://tc39.github.io/ecma262/#sec-promise.resolve\n\t resolve: function resolve(x) {\n\t return promiseResolve$1( this, x);\n\t }\n\t});\n\n\t_export$1({ target: PROMISE$1, stat: true, forced: INCORRECT_ITERATION$3 }, {\n\t // `Promise.all` method\n\t // https://tc39.github.io/ecma262/#sec-promise.all\n\t all: function all(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$3(C);\n\t var resolve = capability.resolve;\n\t var reject = capability.reject;\n\t var result = perform$1(function () {\n\t var $promiseResolve = aFunction$3(C.resolve);\n\t var values = [];\n\t var counter = 0;\n\t var remaining = 1;\n\t iterate_1$1(iterable, function (promise) {\n\t var index = counter++;\n\t var alreadyCalled = false;\n\t values.push(undefined);\n\t remaining++;\n\t $promiseResolve.call(C, promise).then(function (value) {\n\t if (alreadyCalled) return;\n\t alreadyCalled = true;\n\t values[index] = value;\n\t --remaining || resolve(values);\n\t }, reject);\n\t });\n\t --remaining || resolve(values);\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t },\n\t // `Promise.race` method\n\t // https://tc39.github.io/ecma262/#sec-promise.race\n\t race: function race(iterable) {\n\t var C = this;\n\t var capability = newPromiseCapability$3(C);\n\t var reject = capability.reject;\n\t var result = perform$1(function () {\n\t var $promiseResolve = aFunction$3(C.resolve);\n\t iterate_1$1(iterable, function (promise) {\n\t $promiseResolve.call(C, promise).then(capability.resolve, reject);\n\t });\n\t });\n\t if (result.error) reject(result.value);\n\t return capability.promise;\n\t }\n\t});\n\n\tvar getOwnPropertyDescriptor$8 = objectGetOwnPropertyDescriptor$1.f;\n\n\n\n\n\n\n\tvar nativeStartsWith = ''.startsWith;\n\tvar min$b = Math.min;\n\n\tvar CORRECT_IS_REGEXP_LOGIC = correctIsRegexpLogic$1('startsWith');\n\t// https://github.com/zloirock/core-js/pull/702\n\tvar MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () {\n\t var descriptor = getOwnPropertyDescriptor$8(String.prototype, 'startsWith');\n\t return descriptor && !descriptor.writable;\n\t}();\n\n\t// `String.prototype.startsWith` method\n\t// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n\t_export$1({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n\t startsWith: function startsWith(searchString /* , position = 0 */) {\n\t var that = String(requireObjectCoercible$1(this));\n\t notARegexp$1(searchString);\n\t var index = toLength$1(min$b(arguments.length > 1 ? arguments[1] : undefined, that.length));\n\t var search = String(searchString);\n\t return nativeStartsWith\n\t ? nativeStartsWith.call(that, search, index)\n\t : that.slice(index, index + search.length) === search;\n\t }\n\t});\n\n\t// ==========================================================================\n\t// Type checking utils\n\t// ==========================================================================\n\tvar getConstructor$2 = function getConstructor(input) {\n\t return input !== null && typeof input !== 'undefined' ? input.constructor : null;\n\t};\n\n\tvar instanceOf$2 = function instanceOf(input, constructor) {\n\t return Boolean(input && constructor && input instanceof constructor);\n\t};\n\n\tvar isNullOrUndefined$2 = function isNullOrUndefined(input) {\n\t return input === null || typeof input === 'undefined';\n\t};\n\n\tvar isObject$4 = function isObject(input) {\n\t return getConstructor$2(input) === Object;\n\t};\n\n\tvar isNumber$2 = function isNumber(input) {\n\t return getConstructor$2(input) === Number && !Number.isNaN(input);\n\t};\n\n\tvar isString$3 = function isString(input) {\n\t return getConstructor$2(input) === String;\n\t};\n\n\tvar isBoolean$2 = function isBoolean(input) {\n\t return getConstructor$2(input) === Boolean;\n\t};\n\n\tvar isFunction$2 = function isFunction(input) {\n\t return getConstructor$2(input) === Function;\n\t};\n\n\tvar isArray$4 = function isArray(input) {\n\t return Array.isArray(input);\n\t};\n\n\tvar isWeakMap = function isWeakMap(input) {\n\t return instanceOf$2(input, WeakMap);\n\t};\n\n\tvar isNodeList$2 = function isNodeList(input) {\n\t return instanceOf$2(input, NodeList);\n\t};\n\n\tvar isElement$3 = function isElement(input) {\n\t return instanceOf$2(input, Element);\n\t};\n\n\tvar isTextNode = function isTextNode(input) {\n\t return getConstructor$2(input) === Text;\n\t};\n\n\tvar isEvent$3 = function isEvent(input) {\n\t return instanceOf$2(input, Event);\n\t};\n\n\tvar isKeyboardEvent = function isKeyboardEvent(input) {\n\t return instanceOf$2(input, KeyboardEvent);\n\t};\n\n\tvar isCue = function isCue(input) {\n\t return instanceOf$2(input, window.TextTrackCue) || instanceOf$2(input, window.VTTCue);\n\t};\n\n\tvar isTrack = function isTrack(input) {\n\t return instanceOf$2(input, TextTrack) || !isNullOrUndefined$2(input) && isString$3(input.kind);\n\t};\n\n\tvar isPromise = function isPromise(input) {\n\t return instanceOf$2(input, Promise) && isFunction$2(input.then);\n\t};\n\n\tvar isEmpty$2 = function isEmpty(input) {\n\t return isNullOrUndefined$2(input) || (isString$3(input) || isArray$4(input) || isNodeList$2(input)) && !input.length || isObject$4(input) && !Object.keys(input).length;\n\t};\n\n\tvar isUrl = function isUrl(input) {\n\t // Accept a URL object\n\t if (instanceOf$2(input, window.URL)) {\n\t return true;\n\t } // Must be string from here\n\n\n\t if (!isString$3(input)) {\n\t return false;\n\t } // Add the protocol if required\n\n\n\t var string = input;\n\n\t if (!input.startsWith('http://') || !input.startsWith('https://')) {\n\t string = \"http://\".concat(input);\n\t }\n\n\t try {\n\t return !isEmpty$2(new URL(string).hostname);\n\t } catch (e) {\n\t return false;\n\t }\n\t};\n\n\tvar is$2 = {\n\t nullOrUndefined: isNullOrUndefined$2,\n\t object: isObject$4,\n\t number: isNumber$2,\n\t string: isString$3,\n\t boolean: isBoolean$2,\n\t function: isFunction$2,\n\t array: isArray$4,\n\t weakMap: isWeakMap,\n\t nodeList: isNodeList$2,\n\t element: isElement$3,\n\t textNode: isTextNode,\n\t event: isEvent$3,\n\t keyboardEvent: isKeyboardEvent,\n\t cue: isCue,\n\t track: isTrack,\n\t promise: isPromise,\n\t url: isUrl,\n\t empty: isEmpty$2\n\t};\n\n\tvar transitionEndEvent = function () {\n\t var element = document.createElement('span');\n\t var events = {\n\t WebkitTransition: 'webkitTransitionEnd',\n\t MozTransition: 'transitionend',\n\t OTransition: 'oTransitionEnd otransitionend',\n\t transition: 'transitionend'\n\t };\n\t var type = Object.keys(events).find(function (event) {\n\t return element.style[event] !== undefined;\n\t });\n\t return is$2.string(type) ? events[type] : false;\n\t}(); // Force repaint of element\n\n\tfunction repaint(element, delay) {\n\t setTimeout(function () {\n\t try {\n\t // eslint-disable-next-line no-param-reassign\n\t element.hidden = true; // eslint-disable-next-line no-unused-expressions\n\n\t element.offsetHeight; // eslint-disable-next-line no-param-reassign\n\n\t element.hidden = false;\n\t } catch (e) {// Do nothing\n\t }\n\t }, delay);\n\t}\n\n\t// ==========================================================================\n\t// Browser sniffing\n\t// Unfortunately, due to mixed support, UA sniffing is required\n\t// ==========================================================================\n\tvar browser = {\n\t isIE:\n\t /* @cc_on!@ */\n\t !!document.documentMode,\n\t isEdge: window.navigator.userAgent.includes('Edge'),\n\t isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n\t isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n\t isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform)\n\t};\n\n\t// `Array.prototype.{ reduce, reduceRight }` methods implementation\n\tvar createMethod$b = function (IS_RIGHT) {\n\t return function (that, callbackfn, argumentsLength, memo) {\n\t aFunction$3(callbackfn);\n\t var O = toObject$1(that);\n\t var self = indexedObject$1(O);\n\t var length = toLength$1(O.length);\n\t var index = IS_RIGHT ? length - 1 : 0;\n\t var i = IS_RIGHT ? -1 : 1;\n\t if (argumentsLength < 2) while (true) {\n\t if (index in self) {\n\t memo = self[index];\n\t index += i;\n\t break;\n\t }\n\t index += i;\n\t if (IS_RIGHT ? index < 0 : length <= index) {\n\t throw TypeError('Reduce of empty array with no initial value');\n\t }\n\t }\n\t for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n\t memo = callbackfn(memo, self[index], index, O);\n\t }\n\t return memo;\n\t };\n\t};\n\n\tvar arrayReduce$1 = {\n\t // `Array.prototype.reduce` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t left: createMethod$b(false),\n\t // `Array.prototype.reduceRight` method\n\t // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n\t right: createMethod$b(true)\n\t};\n\n\tvar $reduce$1 = arrayReduce$1.left;\n\n\n\n\tvar STRICT_METHOD$a = arrayMethodIsStrict$1('reduce');\n\tvar USES_TO_LENGTH$i = arrayMethodUsesToLength$1('reduce', { 1: 0 });\n\n\t// `Array.prototype.reduce` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n\t_export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$a || !USES_TO_LENGTH$i }, {\n\t reduce: function reduce(callbackfn /* , initialValue */) {\n\t return $reduce$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\tfunction cloneDeep(object) {\n\t return JSON.parse(JSON.stringify(object));\n\t} // Get a nested value in an object\n\n\tfunction getDeep(object, path) {\n\t return path.split('.').reduce(function (obj, key) {\n\t return obj && obj[key];\n\t }, object);\n\t} // Deep extend destination object with N more objects\n\n\tfunction extend$1() {\n\t var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t sources[_key - 1] = arguments[_key];\n\t }\n\n\t if (!sources.length) {\n\t return target;\n\t }\n\n\t var source = sources.shift();\n\n\t if (!is$2.object(source)) {\n\t return target;\n\t }\n\n\t Object.keys(source).forEach(function (key) {\n\t if (is$2.object(source[key])) {\n\t if (!Object.keys(target).includes(key)) {\n\t Object.assign(target, _defineProperty({}, key, {}));\n\t }\n\n\t extend$1(target[key], source[key]);\n\t } else {\n\t Object.assign(target, _defineProperty({}, key, source[key]));\n\t }\n\t });\n\t return extend$1.apply(void 0, [target].concat(sources));\n\t}\n\n\tfunction wrap$4(elements, wrapper) {\n\t // Convert `elements` to an array, if necessary.\n\t var targets = elements.length ? elements : [elements]; // Loops backwards to prevent having to clone the wrapper on the\n\t // first element (see `child` below).\n\n\t Array.from(targets).reverse().forEach(function (element, index) {\n\t var child = index > 0 ? wrapper.cloneNode(true) : wrapper; // Cache the current parent and sibling.\n\n\t var parent = element.parentNode;\n\t var sibling = element.nextSibling; // Wrap the element (is automatically removed from its current\n\t // parent).\n\n\t child.appendChild(element); // If the element had a sibling, insert the wrapper before\n\t // the sibling to maintain the HTML structure; otherwise, just\n\t // append it to the parent.\n\n\t if (sibling) {\n\t parent.insertBefore(child, sibling);\n\t } else {\n\t parent.appendChild(child);\n\t }\n\t });\n\t} // Set attributes\n\n\tfunction setAttributes$1(element, attributes) {\n\t if (!is$2.element(element) || is$2.empty(attributes)) {\n\t return;\n\t } // Assume null and undefined attributes should be left out,\n\t // Setting them would otherwise convert them to \"null\" and \"undefined\"\n\n\n\t Object.entries(attributes).filter(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t value = _ref2[1];\n\n\t return !is$2.nullOrUndefined(value);\n\t }).forEach(function (_ref3) {\n\t var _ref4 = _slicedToArray(_ref3, 2),\n\t key = _ref4[0],\n\t value = _ref4[1];\n\n\t return element.setAttribute(key, value);\n\t });\n\t} // Create a DocumentFragment\n\n\tfunction createElement$1(type, attributes, text) {\n\t // Create a new <element>\n\t var element = document.createElement(type); // Set all passed attributes\n\n\t if (is$2.object(attributes)) {\n\t setAttributes$1(element, attributes);\n\t } // Add text node\n\n\n\t if (is$2.string(text)) {\n\t element.innerText = text;\n\t } // Return built element\n\n\n\t return element;\n\t} // Inaert an element after another\n\n\tfunction insertAfter(element, target) {\n\t if (!is$2.element(element) || !is$2.element(target)) {\n\t return;\n\t }\n\n\t target.parentNode.insertBefore(element, target.nextSibling);\n\t} // Insert a DocumentFragment\n\n\tfunction insertElement(type, parent, attributes, text) {\n\t if (!is$2.element(parent)) {\n\t return;\n\t }\n\n\t parent.appendChild(createElement$1(type, attributes, text));\n\t} // Remove element(s)\n\n\tfunction removeElement(element) {\n\t if (is$2.nodeList(element) || is$2.array(element)) {\n\t Array.from(element).forEach(removeElement);\n\t return;\n\t }\n\n\t if (!is$2.element(element) || !is$2.element(element.parentNode)) {\n\t return;\n\t }\n\n\t element.parentNode.removeChild(element);\n\t} // Remove all child elements\n\n\tfunction emptyElement(element) {\n\t if (!is$2.element(element)) {\n\t return;\n\t }\n\n\t var length = element.childNodes.length;\n\n\t while (length > 0) {\n\t element.removeChild(element.lastChild);\n\t length -= 1;\n\t }\n\t} // Replace element\n\n\tfunction replaceElement(newChild, oldChild) {\n\t if (!is$2.element(oldChild) || !is$2.element(oldChild.parentNode) || !is$2.element(newChild)) {\n\t return null;\n\t }\n\n\t oldChild.parentNode.replaceChild(newChild, oldChild);\n\t return newChild;\n\t} // Get an attribute object from a string selector\n\n\tfunction getAttributesFromSelector(sel, existingAttributes) {\n\t // For example:\n\t // '.test' to { class: 'test' }\n\t // '#test' to { id: 'test' }\n\t // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\t if (!is$2.string(sel) || is$2.empty(sel)) {\n\t return {};\n\t }\n\n\t var attributes = {};\n\t var existing = extend$1({}, existingAttributes);\n\t sel.split(',').forEach(function (s) {\n\t // Remove whitespace\n\t var selector = s.trim();\n\t var className = selector.replace('.', '');\n\t var stripped = selector.replace(/[[\\]]/g, ''); // Get the parts and value\n\n\t var parts = stripped.split('=');\n\n\t var _parts = _slicedToArray(parts, 1),\n\t key = _parts[0];\n\n\t var value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : ''; // Get the first character\n\n\t var start = selector.charAt(0);\n\n\t switch (start) {\n\t case '.':\n\t // Add to existing classname\n\t if (is$2.string(existing.class)) {\n\t attributes.class = \"\".concat(existing.class, \" \").concat(className);\n\t } else {\n\t attributes.class = className;\n\t }\n\n\t break;\n\n\t case '#':\n\t // ID selector\n\t attributes.id = selector.replace('#', '');\n\t break;\n\n\t case '[':\n\t // Attribute selector\n\t attributes[key] = value;\n\t break;\n\t }\n\t });\n\t return extend$1(existing, attributes);\n\t} // Toggle hidden\n\n\tfunction toggleHidden(element, hidden) {\n\t if (!is$2.element(element)) {\n\t return;\n\t }\n\n\t var hide = hidden;\n\n\t if (!is$2.boolean(hide)) {\n\t hide = !element.hidden;\n\t } // eslint-disable-next-line no-param-reassign\n\n\n\t element.hidden = hide;\n\t} // Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\n\n\tfunction toggleClass(element, className, force) {\n\t if (is$2.nodeList(element)) {\n\t return Array.from(element).map(function (e) {\n\t return toggleClass(e, className, force);\n\t });\n\t }\n\n\t if (is$2.element(element)) {\n\t var method = 'toggle';\n\n\t if (typeof force !== 'undefined') {\n\t method = force ? 'add' : 'remove';\n\t }\n\n\t element.classList[method](className);\n\t return element.classList.contains(className);\n\t }\n\n\t return false;\n\t} // Has class name\n\n\tfunction hasClass(element, className) {\n\t return is$2.element(element) && element.classList.contains(className);\n\t} // Element matches selector\n\n\tfunction matches$2(element, selector) {\n\t var _Element = Element,\n\t prototype = _Element.prototype;\n\n\t function match() {\n\t return Array.from(document.querySelectorAll(selector)).includes(this);\n\t }\n\n\t var method = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match;\n\t return method.call(element, selector);\n\t} // Closest ancestor element matching selector (also tests element itself)\n\n\tfunction closest(element, selector) {\n\t var _Element2 = Element,\n\t prototype = _Element2.prototype; // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n\n\t function closestElement() {\n\t var el = this;\n\n\t do {\n\t if (matches$2.matches(el, selector)) return el;\n\t el = el.parentElement || el.parentNode;\n\t } while (el !== null && el.nodeType === 1);\n\n\t return null;\n\t }\n\n\t var method = prototype.closest || closestElement;\n\t return method.call(element, selector);\n\t} // Find all elements\n\n\tfunction getElements(selector) {\n\t return this.elements.container.querySelectorAll(selector);\n\t} // Find a single element\n\n\tfunction getElement(selector) {\n\t return this.elements.container.querySelector(selector);\n\t} // Set focus and tab focus class\n\n\tfunction setFocus() {\n\t var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!is$2.element(element)) {\n\t return;\n\t } // Set regular focus\n\n\n\t element.focus({\n\t preventScroll: true\n\t }); // If we want to mimic keyboard focus via tab\n\n\t if (tabFocus) {\n\t toggleClass(element, this.config.classNames.tabFocus);\n\t }\n\t}\n\n\tvar defaultCodecs = {\n\t 'audio/ogg': 'vorbis',\n\t 'audio/wav': '1',\n\t 'video/webm': 'vp8, vorbis',\n\t 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n\t 'video/ogg': 'theora'\n\t}; // Check for feature support\n\n\tvar support = {\n\t // Basic support\n\t audio: 'canPlayType' in document.createElement('audio'),\n\t video: 'canPlayType' in document.createElement('video'),\n\t // Check for support\n\t // Basic functionality vs full UI\n\t check: function check(type, provider, playsinline) {\n\t var canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\t var api = support[type] || provider !== 'html5';\n\t var ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\t return {\n\t api: api,\n\t ui: ui\n\t };\n\t },\n\t // Picture-in-picture support\n\t // Safari & Chrome only currently\n\t pip: function () {\n\t if (browser.isIPhone) {\n\t return false;\n\t } // Safari\n\t // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n\n\n\t if (is$2.function(createElement$1('video').webkitSetPresentationMode)) {\n\t return true;\n\t } // Chrome\n\t // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n\n\n\t if (document.pictureInPictureEnabled && !createElement$1('video').disablePictureInPicture) {\n\t return true;\n\t }\n\n\t return false;\n\t }(),\n\t // Airplay support\n\t // Safari only currently\n\t airplay: is$2.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\t // Inline playback support\n\t // https://webkit.org/blog/6784/new-video-policies-for-ios/\n\t playsinline: 'playsInline' in document.createElement('video'),\n\t // Check for mime type support against a player instance\n\t // Credits: http://diveintohtml5.info/everything.html\n\t // Related: http://www.leanbackplayer.com/test/h5mt.html\n\t mime: function mime(input) {\n\t if (is$2.empty(input)) {\n\t return false;\n\t }\n\n\t var _input$split = input.split('/'),\n\t _input$split2 = _slicedToArray(_input$split, 1),\n\t mediaType = _input$split2[0];\n\n\t var type = input; // Verify we're using HTML5 and there's no media type mismatch\n\n\t if (!this.isHTML5 || mediaType !== this.type) {\n\t return false;\n\t } // Add codec if required\n\n\n\t if (Object.keys(defaultCodecs).includes(type)) {\n\t type += \"; codecs=\\\"\".concat(defaultCodecs[input], \"\\\"\");\n\t }\n\n\t try {\n\t return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n\t } catch (e) {\n\t return false;\n\t }\n\t },\n\t // Check for textTracks support\n\t textTracks: 'textTracks' in document.createElement('video'),\n\t // <input type=\"range\"> Sliders\n\t rangeInput: function () {\n\t var range = document.createElement('input');\n\t range.type = 'range';\n\t return range.type === 'range';\n\t }(),\n\t // Touch\n\t // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n\t touch: 'ontouchstart' in document.documentElement,\n\t // Detect transitions support\n\t transitions: transitionEndEvent !== false,\n\t // Reduced motion iOS & MacOS setting\n\t // https://webkit.org/blog/7551/responsive-design-for-motion/\n\t reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches\n\t};\n\n\t// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n\t// https://www.youtube.com/watch?v=NPM6172J22g\n\n\tvar supportsPassiveListeners = function () {\n\t // Test via a getter in the options object to see if the passive property is accessed\n\t var supported = false;\n\n\t try {\n\t var options = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supported = true;\n\t return null;\n\t }\n\t });\n\t window.addEventListener('test', null, options);\n\t window.removeEventListener('test', null, options);\n\t } catch (e) {// Do nothing\n\t }\n\n\t return supported;\n\t}(); // Toggle event listener\n\n\n\tfunction toggleListener(element, event, callback) {\n\t var _this = this;\n\n\t var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n\n\t // Bail if no element, event, or callback\n\t if (!element || !('addEventListener' in element) || is$2.empty(event) || !is$2.function(callback)) {\n\t return;\n\t } // Allow multiple events\n\n\n\t var events = event.split(' '); // Build options\n\t // Default to just the capture boolean for browsers with no passive listener support\n\n\t var options = capture; // If passive events listeners are supported\n\n\t if (supportsPassiveListeners) {\n\t options = {\n\t // Whether the listener can be passive (i.e. default never prevented)\n\t passive: passive,\n\t // Whether the listener is a capturing listener or not\n\t capture: capture\n\t };\n\t } // If a single node is passed, bind the event listener\n\n\n\t events.forEach(function (type) {\n\t if (_this && _this.eventListeners && toggle) {\n\t // Cache event listener\n\t _this.eventListeners.push({\n\t element: element,\n\t type: type,\n\t callback: callback,\n\t options: options\n\t });\n\t }\n\n\t element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n\t });\n\t} // Bind event handler\n\n\tfunction on(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, true, passive, capture);\n\t} // Unbind event handler\n\n\tfunction off(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, false, passive, capture);\n\t} // Bind once-only event handler\n\n\tfunction once(element) {\n\t var _this2 = this;\n\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t var onceCallback = function onceCallback() {\n\t off(element, events, onceCallback, passive, capture);\n\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t callback.apply(_this2, args);\n\t };\n\n\t toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n\t} // Trigger event\n\n\tfunction triggerEvent(element) {\n\t var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\t // Bail if no element\n\t if (!is$2.element(element) || is$2.empty(type)) {\n\t return;\n\t } // Create and dispatch the event\n\n\n\t var event = new CustomEvent(type, {\n\t bubbles: bubbles,\n\t detail: _objectSpread2({}, detail, {\n\t plyr: this\n\t })\n\t }); // Dispatch the event\n\n\t element.dispatchEvent(event);\n\t} // Unbind all cached event listeners\n\n\tfunction unbindListeners() {\n\t if (this && this.eventListeners) {\n\t this.eventListeners.forEach(function (item) {\n\t var element = item.element,\n\t type = item.type,\n\t callback = item.callback,\n\t options = item.options;\n\t element.removeEventListener(type, callback, options);\n\t });\n\t this.eventListeners = [];\n\t }\n\t} // Run method when / if player is ready\n\n\tfunction ready() {\n\t var _this3 = this;\n\n\t return new Promise(function (resolve) {\n\t return _this3.ready ? setTimeout(resolve, 0) : on.call(_this3, _this3.elements.container, 'ready', resolve);\n\t }).then(function () {});\n\t}\n\n\t/**\n\t * Silence a Promise-like object.\n\t * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n\t * play promise\" rejection error messages.\n\t * @param {Object} value An object that may or may not be `Promise`-like.\n\t */\n\n\tfunction silencePromise(value) {\n\t if (is$2.promise(value)) {\n\t value.then(null, function () {});\n\t }\n\t}\n\n\tfunction validateRatio(input) {\n\t if (!is$2.array(input) && (!is$2.string(input) || !input.includes(':'))) {\n\t return false;\n\t }\n\n\t var ratio = is$2.array(input) ? input : input.split(':');\n\t return ratio.map(Number).every(is$2.number);\n\t}\n\tfunction reduceAspectRatio(ratio) {\n\t if (!is$2.array(ratio) || !ratio.every(is$2.number)) {\n\t return null;\n\t }\n\n\t var _ratio = _slicedToArray(ratio, 2),\n\t width = _ratio[0],\n\t height = _ratio[1];\n\n\t var getDivider = function getDivider(w, h) {\n\t return h === 0 ? w : getDivider(h, w % h);\n\t };\n\n\t var divider = getDivider(width, height);\n\t return [width / divider, height / divider];\n\t}\n\tfunction getAspectRatio(input) {\n\t var parse = function parse(ratio) {\n\t return validateRatio(ratio) ? ratio.split(':').map(Number) : null;\n\t }; // Try provided ratio\n\n\n\t var ratio = parse(input); // Get from config\n\n\t if (ratio === null) {\n\t ratio = parse(this.config.ratio);\n\t } // Get from embed\n\n\n\t if (ratio === null && !is$2.empty(this.embed) && is$2.array(this.embed.ratio)) {\n\t ratio = this.embed.ratio;\n\t } // Get from HTML5 video\n\n\n\t if (ratio === null && this.isHTML5) {\n\t var _this$media = this.media,\n\t videoWidth = _this$media.videoWidth,\n\t videoHeight = _this$media.videoHeight;\n\t ratio = reduceAspectRatio([videoWidth, videoHeight]);\n\t }\n\n\t return ratio;\n\t} // Set aspect ratio for responsive container\n\n\tfunction setAspectRatio(input) {\n\t if (!this.isVideo) {\n\t return {};\n\t }\n\n\t var wrapper = this.elements.wrapper;\n\t var ratio = getAspectRatio.call(this, input);\n\n\t var _ref = is$2.array(ratio) ? ratio : [0, 0],\n\t _ref2 = _slicedToArray(_ref, 2),\n\t w = _ref2[0],\n\t h = _ref2[1];\n\n\t var padding = 100 / w * h;\n\t wrapper.style.paddingBottom = \"\".concat(padding, \"%\"); // For Vimeo we have an extra <div> to hide the standard controls and UI\n\n\t if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n\t var height = 100 / this.media.offsetWidth * parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n\t var offset = (height - padding) / (height / 50);\n\t this.media.style.transform = \"translateY(-\".concat(offset, \"%)\");\n\t } else if (this.isHTML5) {\n\t wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null);\n\t }\n\n\t return {\n\t padding: padding,\n\t ratio: ratio\n\t };\n\t}\n\n\tvar html5 = {\n\t getSources: function getSources() {\n\t var _this = this;\n\n\t if (!this.isHTML5) {\n\t return [];\n\t }\n\n\t var sources = Array.from(this.media.querySelectorAll('source')); // Filter out unsupported sources (if type is specified)\n\n\t return sources.filter(function (source) {\n\t var type = source.getAttribute('type');\n\n\t if (is$2.empty(type)) {\n\t return true;\n\t }\n\n\t return support.mime.call(_this, type);\n\t });\n\t },\n\t // Get quality levels\n\t getQualityOptions: function getQualityOptions() {\n\t // Whether we're forcing all options (e.g. for streaming)\n\t if (this.config.quality.forced) {\n\t return this.config.quality.options;\n\t } // Get sizes from <source> elements\n\n\n\t return html5.getSources.call(this).map(function (source) {\n\t return Number(source.getAttribute('size'));\n\t }).filter(Boolean);\n\t },\n\t setup: function setup() {\n\t if (!this.isHTML5) {\n\t return;\n\t }\n\n\t var player = this; // Set speed options from config\n\n\t player.options.speed = player.config.speed.options; // Set aspect ratio if fixed\n\n\t if (!is$2.empty(this.config.ratio)) {\n\t setAspectRatio.call(player);\n\t } // Quality\n\n\n\t Object.defineProperty(player.media, 'quality', {\n\t get: function get() {\n\t // Get sources\n\t var sources = html5.getSources.call(player);\n\t var source = sources.find(function (s) {\n\t return s.getAttribute('src') === player.source;\n\t }); // Return size, if match is found\n\n\t return source && Number(source.getAttribute('size'));\n\t },\n\t set: function set(input) {\n\t if (player.quality === input) {\n\t return;\n\t } // If we're using an an external handler...\n\n\n\t if (player.config.quality.forced && is$2.function(player.config.quality.onChange)) {\n\t player.config.quality.onChange(input);\n\t } else {\n\t // Get sources\n\t var sources = html5.getSources.call(player); // Get first match for requested size\n\n\t var source = sources.find(function (s) {\n\t return Number(s.getAttribute('size')) === input;\n\t }); // No matching source found\n\n\t if (!source) {\n\t return;\n\t } // Get current state\n\n\n\t var _player$media = player.media,\n\t currentTime = _player$media.currentTime,\n\t paused = _player$media.paused,\n\t preload = _player$media.preload,\n\t readyState = _player$media.readyState,\n\t playbackRate = _player$media.playbackRate; // Set new source\n\n\t player.media.src = source.getAttribute('src'); // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n\n\t if (preload !== 'none' || readyState) {\n\t // Restore time\n\t player.once('loadedmetadata', function () {\n\t player.speed = playbackRate;\n\t player.currentTime = currentTime; // Resume playing\n\n\t if (!paused) {\n\t silencePromise(player.play());\n\t }\n\t }); // Load new source\n\n\t player.media.load();\n\t }\n\t } // Trigger change event\n\n\n\t triggerEvent.call(player, player.media, 'qualitychange', false, {\n\t quality: input\n\t });\n\t }\n\t });\n\t },\n\t // Cancel current network requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\t cancelRequests: function cancelRequests() {\n\t if (!this.isHTML5) {\n\t return;\n\t } // Remove child sources\n\n\n\t removeElement(html5.getSources.call(this)); // Set blank video src attribute\n\t // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n\t // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n\n\t this.media.setAttribute('src', this.config.blankVideo); // Load the new empty source\n\t // This will cancel existing requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\n\t this.media.load(); // Debugging\n\n\t this.debug.log('Cancelled network requests');\n\t }\n\t};\n\n\tfunction dedupe(array) {\n\t if (!is$2.array(array)) {\n\t return array;\n\t }\n\n\t return array.filter(function (item, index) {\n\t return array.indexOf(item) === index;\n\t });\n\t} // Get the closest value in an array\n\n\tfunction closest$1(array, value) {\n\t if (!is$2.array(array) || !array.length) {\n\t return null;\n\t }\n\n\t return array.reduce(function (prev, curr) {\n\t return Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev;\n\t });\n\t}\n\n\tvar HAS_SPECIES_SUPPORT$6 = arrayMethodHasSpeciesSupport$1('slice');\n\tvar USES_TO_LENGTH$j = arrayMethodUsesToLength$1('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\n\tvar SPECIES$d = wellKnownSymbol$1('species');\n\tvar nativeSlice$1 = [].slice;\n\tvar max$6 = Math.max;\n\n\t// `Array.prototype.slice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n\t// fallback for not array-like ES3 strings and DOM objects\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$6 || !USES_TO_LENGTH$j }, {\n\t slice: function slice(start, end) {\n\t var O = toIndexedObject$1(this);\n\t var length = toLength$1(O.length);\n\t var k = toAbsoluteIndex$1(start, length);\n\t var fin = toAbsoluteIndex$1(end === undefined ? length : end, length);\n\t // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n\t var Constructor, result, n;\n\t if (isArray$2(O)) {\n\t Constructor = O.constructor;\n\t // cross-realm fallback\n\t if (typeof Constructor == 'function' && (Constructor === Array || isArray$2(Constructor.prototype))) {\n\t Constructor = undefined;\n\t } else if (isObject$2(Constructor)) {\n\t Constructor = Constructor[SPECIES$d];\n\t if (Constructor === null) Constructor = undefined;\n\t }\n\t if (Constructor === Array || Constructor === undefined) {\n\t return nativeSlice$1.call(O, k, fin);\n\t }\n\t }\n\t result = new (Constructor === undefined ? Array : Constructor)(max$6(fin - k, 0));\n\t for (n = 0; k < fin; k++, n++) if (k in O) createProperty$1(result, n, O[k]);\n\t result.length = n;\n\t return result;\n\t }\n\t});\n\n\tvar defineProperty$f = objectDefineProperty$1.f;\n\tvar getOwnPropertyNames$4 = objectGetOwnPropertyNames$1.f;\n\n\n\n\n\n\tvar setInternalState$g = internalState$1.set;\n\n\n\n\tvar MATCH$5 = wellKnownSymbol$1('match');\n\tvar NativeRegExp$1 = global_1$1.RegExp;\n\tvar RegExpPrototype$3 = NativeRegExp$1.prototype;\n\tvar re1$1 = /a/g;\n\tvar re2$1 = /a/g;\n\n\t// \"new\" should create a new object, old webkit bug\n\tvar CORRECT_NEW$1 = new NativeRegExp$1(re1$1) !== re1$1;\n\n\tvar UNSUPPORTED_Y$5 = regexpStickyHelpers$1.UNSUPPORTED_Y;\n\n\tvar FORCED$c = descriptors$1 && isForced_1$1('RegExp', (!CORRECT_NEW$1 || UNSUPPORTED_Y$5 || fails$1(function () {\n\t re2$1[MATCH$5] = false;\n\t // RegExp constructor can alter flags and IsRegExp works correct with @@match\n\t return NativeRegExp$1(re1$1) != re1$1 || NativeRegExp$1(re2$1) == re2$1 || NativeRegExp$1(re1$1, 'i') != '/a/i';\n\t})));\n\n\t// `RegExp` constructor\n\t// https://tc39.github.io/ecma262/#sec-regexp-constructor\n\tif (FORCED$c) {\n\t var RegExpWrapper$1 = function RegExp(pattern, flags) {\n\t var thisIsRegExp = this instanceof RegExpWrapper$1;\n\t var patternIsRegExp = isRegexp$1(pattern);\n\t var flagsAreUndefined = flags === undefined;\n\t var sticky;\n\n\t if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper$1 && flagsAreUndefined) {\n\t return pattern;\n\t }\n\n\t if (CORRECT_NEW$1) {\n\t if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n\t } else if (pattern instanceof RegExpWrapper$1) {\n\t if (flagsAreUndefined) flags = regexpFlags$1.call(pattern);\n\t pattern = pattern.source;\n\t }\n\n\t if (UNSUPPORTED_Y$5) {\n\t sticky = !!flags && flags.indexOf('y') > -1;\n\t if (sticky) flags = flags.replace(/y/g, '');\n\t }\n\n\t var result = inheritIfRequired$1(\n\t CORRECT_NEW$1 ? new NativeRegExp$1(pattern, flags) : NativeRegExp$1(pattern, flags),\n\t thisIsRegExp ? this : RegExpPrototype$3,\n\t RegExpWrapper$1\n\t );\n\n\t if (UNSUPPORTED_Y$5 && sticky) setInternalState$g(result, { sticky: sticky });\n\n\t return result;\n\t };\n\t var proxy$1 = function (key) {\n\t key in RegExpWrapper$1 || defineProperty$f(RegExpWrapper$1, key, {\n\t configurable: true,\n\t get: function () { return NativeRegExp$1[key]; },\n\t set: function (it) { NativeRegExp$1[key] = it; }\n\t });\n\t };\n\t var keys$6 = getOwnPropertyNames$4(NativeRegExp$1);\n\t var index$1 = 0;\n\t while (keys$6.length > index$1) proxy$1(keys$6[index$1++]);\n\t RegExpPrototype$3.constructor = RegExpWrapper$1;\n\t RegExpWrapper$1.prototype = RegExpPrototype$3;\n\t redefine$1(global_1$1, 'RegExp', RegExpWrapper$1);\n\t}\n\n\t// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\n\tsetSpecies$1('RegExp');\n\n\tfunction generateId(prefix) {\n\t return \"\".concat(prefix, \"-\").concat(Math.floor(Math.random() * 10000));\n\t} // Format string\n\n\tfunction format(input) {\n\t for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t if (is$2.empty(input)) {\n\t return input;\n\t }\n\n\t return input.toString().replace(/{(\\d+)}/g, function (match, i) {\n\t return args[i].toString();\n\t });\n\t} // Get percentage\n\n\tfunction getPercentage(current, max) {\n\t if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n\t return 0;\n\t }\n\n\t return (current / max * 100).toFixed(2);\n\t} // Replace all occurances of a string in a string\n\n\tvar replaceAll = function replaceAll() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var find = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var replace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\t return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n\t}; // Convert to title case\n\n\tvar toTitleCase = function toTitleCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t return input.toString().replace(/\\w\\S*/g, function (text) {\n\t return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase();\n\t });\n\t}; // Convert string to pascalCase\n\n\tfunction toPascalCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert kebab case\n\n\t string = replaceAll(string, '-', ' '); // Convert snake case\n\n\t string = replaceAll(string, '_', ' '); // Convert to title case\n\n\t string = toTitleCase(string); // Convert to pascal case\n\n\t return replaceAll(string, ' ', '');\n\t} // Convert string to pascalCase\n\n\tfunction toCamelCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert to pascal case\n\n\t string = toPascalCase(string); // Convert first character to lowercase\n\n\t return string.charAt(0).toLowerCase() + string.slice(1);\n\t} // Remove HTML from a string\n\n\tfunction stripHTML(source) {\n\t var fragment = document.createDocumentFragment();\n\t var element = document.createElement('div');\n\t fragment.appendChild(element);\n\t element.innerHTML = source;\n\t return fragment.firstChild.innerText;\n\t} // Like outerHTML, but also works for DocumentFragment\n\n\tfunction getHTML(element) {\n\t var wrapper = document.createElement('div');\n\t wrapper.appendChild(element);\n\t return wrapper.innerHTML;\n\t}\n\n\tvar resources = {\n\t pip: 'PIP',\n\t airplay: 'AirPlay',\n\t html5: 'HTML5',\n\t vimeo: 'Vimeo',\n\t youtube: 'YouTube'\n\t};\n\tvar i18n = {\n\t get: function get() {\n\t var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t if (is$2.empty(key) || is$2.empty(config)) {\n\t return '';\n\t }\n\n\t var string = getDeep(config.i18n, key);\n\n\t if (is$2.empty(string)) {\n\t if (Object.keys(resources).includes(key)) {\n\t return resources[key];\n\t }\n\n\t return '';\n\t }\n\n\t var replace = {\n\t '{seektime}': config.seekTime,\n\t '{title}': config.title\n\t };\n\t Object.entries(replace).forEach(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t k = _ref2[0],\n\t v = _ref2[1];\n\n\t string = replaceAll(string, k, v);\n\t });\n\t return string;\n\t }\n\t};\n\n\tvar Storage$1 = /*#__PURE__*/function () {\n\t function Storage(player) {\n\t _classCallCheck(this, Storage);\n\n\t this.enabled = player.config.storage.enabled;\n\t this.key = player.config.storage.key;\n\t } // Check for actual support (see if we can use it)\n\n\n\t _createClass(Storage, [{\n\t key: \"get\",\n\t value: function get(key) {\n\t if (!Storage.supported || !this.enabled) {\n\t return null;\n\t }\n\n\t var store = window.localStorage.getItem(this.key);\n\n\t if (is$2.empty(store)) {\n\t return null;\n\t }\n\n\t var json = JSON.parse(store);\n\t return is$2.string(key) && key.length ? json[key] : json;\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function set(object) {\n\t // Bail if we don't have localStorage support or it's disabled\n\t if (!Storage.supported || !this.enabled) {\n\t return;\n\t } // Can only store objectst\n\n\n\t if (!is$2.object(object)) {\n\t return;\n\t } // Get current storage\n\n\n\t var storage = this.get(); // Default to empty object\n\n\t if (is$2.empty(storage)) {\n\t storage = {};\n\t } // Update the working copy of the values\n\n\n\t extend$1(storage, object); // Update storage\n\n\t window.localStorage.setItem(this.key, JSON.stringify(storage));\n\t }\n\t }], [{\n\t key: \"supported\",\n\t get: function get() {\n\t try {\n\t if (!('localStorage' in window)) {\n\t return false;\n\t }\n\n\t var test = '___test'; // Try to use it (it might be disabled, e.g. user is in private mode)\n\t // see: https://github.com/sampotts/plyr/issues/131\n\n\t window.localStorage.setItem(test, test);\n\t window.localStorage.removeItem(test);\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\t }]);\n\n\t return Storage;\n\t}();\n\n\t// ==========================================================================\n\t// Fetch wrapper\n\t// Using XHR to avoid issues with older browsers\n\t// ==========================================================================\n\tfunction fetch(url) {\n\t var responseType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n\t return new Promise(function (resolve, reject) {\n\t try {\n\t var request = new XMLHttpRequest(); // Check for CORS support\n\n\t if (!('withCredentials' in request)) {\n\t return;\n\t }\n\n\t request.addEventListener('load', function () {\n\t if (responseType === 'text') {\n\t try {\n\t resolve(JSON.parse(request.responseText));\n\t } catch (e) {\n\t resolve(request.responseText);\n\t }\n\t } else {\n\t resolve(request.response);\n\t }\n\t });\n\t request.addEventListener('error', function () {\n\t throw new Error(request.status);\n\t });\n\t request.open('GET', url, true); // Set the required response type\n\n\t request.responseType = responseType;\n\t request.send();\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t}\n\n\t// ==========================================================================\n\n\tfunction loadSprite(url, id) {\n\t if (!is$2.string(url)) {\n\t return;\n\t }\n\n\t var prefix = 'cache';\n\t var hasId = is$2.string(id);\n\t var isCached = false;\n\n\t var exists = function exists() {\n\t return document.getElementById(id) !== null;\n\t };\n\n\t var update = function update(container, data) {\n\t // eslint-disable-next-line no-param-reassign\n\t container.innerHTML = data; // Check again incase of race condition\n\n\t if (hasId && exists()) {\n\t return;\n\t } // Inject the SVG to the body\n\n\n\t document.body.insertAdjacentElement('afterbegin', container);\n\t }; // Only load once if ID set\n\n\n\t if (!hasId || !exists()) {\n\t var useStorage = Storage$1.supported; // Create container\n\n\t var container = document.createElement('div');\n\t container.setAttribute('hidden', '');\n\n\t if (hasId) {\n\t container.setAttribute('id', id);\n\t } // Check in cache\n\n\n\t if (useStorage) {\n\t var cached = window.localStorage.getItem(\"\".concat(prefix, \"-\").concat(id));\n\t isCached = cached !== null;\n\n\t if (isCached) {\n\t var data = JSON.parse(cached);\n\t update(container, data.content);\n\t }\n\t } // Get the sprite\n\n\n\t fetch(url).then(function (result) {\n\t if (is$2.empty(result)) {\n\t return;\n\t }\n\n\t if (useStorage) {\n\t window.localStorage.setItem(\"\".concat(prefix, \"-\").concat(id), JSON.stringify({\n\t content: result\n\t }));\n\t }\n\n\t update(container, result);\n\t }).catch(function () {});\n\t }\n\t}\n\n\tvar ceil$2 = Math.ceil;\n\tvar floor$b = Math.floor;\n\n\t// `Math.trunc` method\n\t// https://tc39.github.io/ecma262/#sec-math.trunc\n\t_export$1({ target: 'Math', stat: true }, {\n\t trunc: function trunc(it) {\n\t return (it > 0 ? floor$b : ceil$2)(it);\n\t }\n\t});\n\n\tvar getHours = function getHours(value) {\n\t return Math.trunc(value / 60 / 60 % 60, 10);\n\t};\n\tvar getMinutes = function getMinutes(value) {\n\t return Math.trunc(value / 60 % 60, 10);\n\t};\n\tvar getSeconds = function getSeconds(value) {\n\t return Math.trunc(value % 60, 10);\n\t}; // Format time to UI friendly string\n\n\tfunction formatTime() {\n\t var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var displayHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var inverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t // Bail if the value isn't a number\n\t if (!is$2.number(time)) {\n\t return formatTime(undefined, displayHours, inverted);\n\t } // Format time component to add leading zero\n\n\n\t var format = function format(value) {\n\t return \"0\".concat(value).slice(-2);\n\t }; // Breakdown to hours, mins, secs\n\n\n\t var hours = getHours(time);\n\t var mins = getMinutes(time);\n\t var secs = getSeconds(time); // Do we need to display hours?\n\n\t if (displayHours || hours > 0) {\n\t hours = \"\".concat(hours, \":\");\n\t } else {\n\t hours = '';\n\t } // Render\n\n\n\t return \"\".concat(inverted && time > 0 ? '-' : '').concat(hours).concat(format(mins), \":\").concat(format(secs));\n\t}\n\n\tvar controls = {\n\t // Get icon URL\n\t getIconUrl: function getIconUrl() {\n\t var url = new URL(this.config.iconUrl, window.location);\n\t var cors = url.host !== window.location.host || browser.isIE && !window.svg4everybody;\n\t return {\n\t url: this.config.iconUrl,\n\t cors: cors\n\t };\n\t },\n\t // Find the UI controls\n\t findElements: function findElements() {\n\t try {\n\t this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper); // Buttons\n\n\t this.elements.buttons = {\n\t play: getElements.call(this, this.config.selectors.buttons.play),\n\t pause: getElement.call(this, this.config.selectors.buttons.pause),\n\t restart: getElement.call(this, this.config.selectors.buttons.restart),\n\t rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n\t fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n\t mute: getElement.call(this, this.config.selectors.buttons.mute),\n\t pip: getElement.call(this, this.config.selectors.buttons.pip),\n\t airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n\t settings: getElement.call(this, this.config.selectors.buttons.settings),\n\t captions: getElement.call(this, this.config.selectors.buttons.captions),\n\t fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen)\n\t }; // Progress\n\n\t this.elements.progress = getElement.call(this, this.config.selectors.progress); // Inputs\n\n\t this.elements.inputs = {\n\t seek: getElement.call(this, this.config.selectors.inputs.seek),\n\t volume: getElement.call(this, this.config.selectors.inputs.volume)\n\t }; // Display\n\n\t this.elements.display = {\n\t buffer: getElement.call(this, this.config.selectors.display.buffer),\n\t currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n\t duration: getElement.call(this, this.config.selectors.display.duration)\n\t }; // Seek tooltip\n\n\t if (is$2.element(this.elements.progress)) {\n\t this.elements.display.seekTooltip = this.elements.progress.querySelector(\".\".concat(this.config.classNames.tooltip));\n\t }\n\n\t return true;\n\t } catch (error) {\n\t // Log it\n\t this.debug.warn('It looks like there is a problem with your custom controls HTML', error); // Restore native video controls\n\n\t this.toggleNativeControls(true);\n\t return false;\n\t }\n\t },\n\t // Create <svg> icon\n\t createIcon: function createIcon(type, attributes) {\n\t var namespace = 'http://www.w3.org/2000/svg';\n\t var iconUrl = controls.getIconUrl.call(this);\n\t var iconPath = \"\".concat(!iconUrl.cors ? iconUrl.url : '', \"#\").concat(this.config.iconPrefix); // Create <svg>\n\n\t var icon = document.createElementNS(namespace, 'svg');\n\t setAttributes$1(icon, extend$1(attributes, {\n\t 'aria-hidden': 'true',\n\t focusable: 'false'\n\t })); // Create the <use> to reference sprite\n\n\t var use = document.createElementNS(namespace, 'use');\n\t var path = \"\".concat(iconPath, \"-\").concat(type); // Set `href` attributes\n\t // https://github.com/sampotts/plyr/issues/460\n\t // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n\n\t if ('href' in use) {\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\t } // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n\n\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path); // Add <use> to <svg>\n\n\t icon.appendChild(use);\n\t return icon;\n\t },\n\t // Create hidden text label\n\t createLabel: function createLabel(key) {\n\t var attr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var text = i18n.get(key, this.config);\n\n\t var attributes = _objectSpread2({}, attr, {\n\t class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ')\n\t });\n\n\t return createElement$1('span', attributes, text);\n\t },\n\t // Create a badge\n\t createBadge: function createBadge(text) {\n\t if (is$2.empty(text)) {\n\t return null;\n\t }\n\n\t var badge = createElement$1('span', {\n\t class: this.config.classNames.menu.value\n\t });\n\t badge.appendChild(createElement$1('span', {\n\t class: this.config.classNames.menu.badge\n\t }, text));\n\t return badge;\n\t },\n\t // Create a <button>\n\t createButton: function createButton(buttonType, attr) {\n\t var _this = this;\n\n\t var attributes = extend$1({}, attr);\n\t var type = toCamelCase(buttonType);\n\t var props = {\n\t element: 'button',\n\t toggle: false,\n\t label: null,\n\t icon: null,\n\t labelPressed: null,\n\t iconPressed: null\n\t };\n\t ['element', 'icon', 'label'].forEach(function (key) {\n\t if (Object.keys(attributes).includes(key)) {\n\t props[key] = attributes[key];\n\t delete attributes[key];\n\t }\n\t }); // Default to 'button' type to prevent form submission\n\n\t if (props.element === 'button' && !Object.keys(attributes).includes('type')) {\n\t attributes.type = 'button';\n\t } // Set class name\n\n\n\t if (Object.keys(attributes).includes('class')) {\n\t if (!attributes.class.split(' ').some(function (c) {\n\t return c === _this.config.classNames.control;\n\t })) {\n\t extend$1(attributes, {\n\t class: \"\".concat(attributes.class, \" \").concat(this.config.classNames.control)\n\t });\n\t }\n\t } else {\n\t attributes.class = this.config.classNames.control;\n\t } // Large play button\n\n\n\t switch (buttonType) {\n\t case 'play':\n\t props.toggle = true;\n\t props.label = 'play';\n\t props.labelPressed = 'pause';\n\t props.icon = 'play';\n\t props.iconPressed = 'pause';\n\t break;\n\n\t case 'mute':\n\t props.toggle = true;\n\t props.label = 'mute';\n\t props.labelPressed = 'unmute';\n\t props.icon = 'volume';\n\t props.iconPressed = 'muted';\n\t break;\n\n\t case 'captions':\n\t props.toggle = true;\n\t props.label = 'enableCaptions';\n\t props.labelPressed = 'disableCaptions';\n\t props.icon = 'captions-off';\n\t props.iconPressed = 'captions-on';\n\t break;\n\n\t case 'fullscreen':\n\t props.toggle = true;\n\t props.label = 'enterFullscreen';\n\t props.labelPressed = 'exitFullscreen';\n\t props.icon = 'enter-fullscreen';\n\t props.iconPressed = 'exit-fullscreen';\n\t break;\n\n\t case 'play-large':\n\t attributes.class += \" \".concat(this.config.classNames.control, \"--overlaid\");\n\t type = 'play';\n\t props.label = 'play';\n\t props.icon = 'play';\n\t break;\n\n\t default:\n\t if (is$2.empty(props.label)) {\n\t props.label = type;\n\t }\n\n\t if (is$2.empty(props.icon)) {\n\t props.icon = buttonType;\n\t }\n\n\t }\n\n\t var button = createElement$1(props.element); // Setup toggle icon and labels\n\n\t if (props.toggle) {\n\t // Icon\n\t button.appendChild(controls.createIcon.call(this, props.iconPressed, {\n\t class: 'icon--pressed'\n\t }));\n\t button.appendChild(controls.createIcon.call(this, props.icon, {\n\t class: 'icon--not-pressed'\n\t })); // Label/Tooltip\n\n\t button.appendChild(controls.createLabel.call(this, props.labelPressed, {\n\t class: 'label--pressed'\n\t }));\n\t button.appendChild(controls.createLabel.call(this, props.label, {\n\t class: 'label--not-pressed'\n\t }));\n\t } else {\n\t button.appendChild(controls.createIcon.call(this, props.icon));\n\t button.appendChild(controls.createLabel.call(this, props.label));\n\t } // Merge and set attributes\n\n\n\t extend$1(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n\t setAttributes$1(button, attributes); // We have multiple play buttons\n\n\t if (type === 'play') {\n\t if (!is$2.array(this.elements.buttons[type])) {\n\t this.elements.buttons[type] = [];\n\t }\n\n\t this.elements.buttons[type].push(button);\n\t } else {\n\t this.elements.buttons[type] = button;\n\t }\n\n\t return button;\n\t },\n\t // Create an <input type='range'>\n\t createRange: function createRange(type, attributes) {\n\t // Seek input\n\t var input = createElement$1('input', extend$1(getAttributesFromSelector(this.config.selectors.inputs[type]), {\n\t type: 'range',\n\t min: 0,\n\t max: 100,\n\t step: 0.01,\n\t value: 0,\n\t autocomplete: 'off',\n\t // A11y fixes for https://github.com/sampotts/plyr/issues/905\n\t role: 'slider',\n\t 'aria-label': i18n.get(type, this.config),\n\t 'aria-valuemin': 0,\n\t 'aria-valuemax': 100,\n\t 'aria-valuenow': 0\n\t }, attributes));\n\t this.elements.inputs[type] = input; // Set the fill for webkit now\n\n\t controls.updateRangeFill.call(this, input); // Improve support on touch devices\n\n\t RangeTouch.setup(input);\n\t return input;\n\t },\n\t // Create a <progress>\n\t createProgress: function createProgress(type, attributes) {\n\t var progress = createElement$1('progress', extend$1(getAttributesFromSelector(this.config.selectors.display[type]), {\n\t min: 0,\n\t max: 100,\n\t value: 0,\n\t role: 'progressbar',\n\t 'aria-hidden': true\n\t }, attributes)); // Create the label inside\n\n\t if (type !== 'volume') {\n\t progress.appendChild(createElement$1('span', null, '0'));\n\t var suffixKey = {\n\t played: 'played',\n\t buffer: 'buffered'\n\t }[type];\n\t var suffix = suffixKey ? i18n.get(suffixKey, this.config) : '';\n\t progress.innerText = \"% \".concat(suffix.toLowerCase());\n\t }\n\n\t this.elements.display[type] = progress;\n\t return progress;\n\t },\n\t // Create time display\n\t createTime: function createTime(type, attrs) {\n\t var attributes = getAttributesFromSelector(this.config.selectors.display[type], attrs);\n\t var container = createElement$1('div', extend$1(attributes, {\n\t class: \"\".concat(attributes.class ? attributes.class : '', \" \").concat(this.config.classNames.display.time, \" \").trim(),\n\t 'aria-label': i18n.get(type, this.config)\n\t }), '00:00'); // Reference for updates\n\n\t this.elements.display[type] = container;\n\t return container;\n\t },\n\t // Bind keyboard shortcuts for a menu item\n\t // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n\t bindMenuItemShortcuts: function bindMenuItemShortcuts(menuItem, type) {\n\t var _this2 = this;\n\n\t // Navigate through menus via arrow keys and space\n\t on.call(this, menuItem, 'keydown keyup', function (event) {\n\t // We only care about space and ⬆️ ⬇️️ ➡️\n\t if (![32, 38, 39, 40].includes(event.which)) {\n\t return;\n\t } // Prevent play / seek\n\n\n\t event.preventDefault();\n\t event.stopPropagation(); // We're just here to prevent the keydown bubbling\n\n\t if (event.type === 'keydown') {\n\t return;\n\t }\n\n\t var isRadioButton = matches$2(menuItem, '[role=\"menuitemradio\"]'); // Show the respective menu\n\n\t if (!isRadioButton && [32, 39].includes(event.which)) {\n\t controls.showMenuPanel.call(_this2, type, true);\n\t } else {\n\t var target;\n\n\t if (event.which !== 32) {\n\t if (event.which === 40 || isRadioButton && event.which === 39) {\n\t target = menuItem.nextElementSibling;\n\n\t if (!is$2.element(target)) {\n\t target = menuItem.parentNode.firstElementChild;\n\t }\n\t } else {\n\t target = menuItem.previousElementSibling;\n\n\t if (!is$2.element(target)) {\n\t target = menuItem.parentNode.lastElementChild;\n\t }\n\t }\n\n\t setFocus.call(_this2, target, true);\n\t }\n\t }\n\t }, false); // Enter will fire a `click` event but we still need to manage focus\n\t // So we bind to keyup which fires after and set focus here\n\n\t on.call(this, menuItem, 'keyup', function (event) {\n\t if (event.which !== 13) {\n\t return;\n\t }\n\n\t controls.focusFirstMenuItem.call(_this2, null, true);\n\t });\n\t },\n\t // Create a settings menu item\n\t createMenuItem: function createMenuItem(_ref) {\n\t var _this3 = this;\n\n\t var value = _ref.value,\n\t list = _ref.list,\n\t type = _ref.type,\n\t title = _ref.title,\n\t _ref$badge = _ref.badge,\n\t badge = _ref$badge === void 0 ? null : _ref$badge,\n\t _ref$checked = _ref.checked,\n\t checked = _ref$checked === void 0 ? false : _ref$checked;\n\t var attributes = getAttributesFromSelector(this.config.selectors.inputs[type]);\n\t var menuItem = createElement$1('button', extend$1(attributes, {\n\t type: 'button',\n\t role: 'menuitemradio',\n\t class: \"\".concat(this.config.classNames.control, \" \").concat(attributes.class ? attributes.class : '').trim(),\n\t 'aria-checked': checked,\n\t value: value\n\t }));\n\t var flex = createElement$1('span'); // We have to set as HTML incase of special characters\n\n\t flex.innerHTML = title;\n\n\t if (is$2.element(badge)) {\n\t flex.appendChild(badge);\n\t }\n\n\t menuItem.appendChild(flex); // Replicate radio button behaviour\n\n\t Object.defineProperty(menuItem, 'checked', {\n\t enumerable: true,\n\t get: function get() {\n\t return menuItem.getAttribute('aria-checked') === 'true';\n\t },\n\t set: function set(check) {\n\t // Ensure exclusivity\n\t if (check) {\n\t Array.from(menuItem.parentNode.children).filter(function (node) {\n\t return matches$2(node, '[role=\"menuitemradio\"]');\n\t }).forEach(function (node) {\n\t return node.setAttribute('aria-checked', 'false');\n\t });\n\t }\n\n\t menuItem.setAttribute('aria-checked', check ? 'true' : 'false');\n\t }\n\t });\n\t this.listeners.bind(menuItem, 'click keyup', function (event) {\n\t if (is$2.keyboardEvent(event) && event.which !== 32) {\n\t return;\n\t }\n\n\t event.preventDefault();\n\t event.stopPropagation();\n\t menuItem.checked = true;\n\n\t switch (type) {\n\t case 'language':\n\t _this3.currentTrack = Number(value);\n\t break;\n\n\t case 'quality':\n\t _this3.quality = value;\n\t break;\n\n\t case 'speed':\n\t _this3.speed = parseFloat(value);\n\t break;\n\t }\n\n\t controls.showMenuPanel.call(_this3, 'home', is$2.keyboardEvent(event));\n\t }, type, false);\n\t controls.bindMenuItemShortcuts.call(this, menuItem, type);\n\t list.appendChild(menuItem);\n\t },\n\t // Format a time for display\n\t formatTime: function formatTime$1() {\n\t var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t // Bail if the value isn't a number\n\t if (!is$2.number(time)) {\n\t return time;\n\t } // Always display hours if duration is over an hour\n\n\n\t var forceHours = getHours(this.duration) > 0;\n\t return formatTime(time, forceHours, inverted);\n\t },\n\t // Update the displayed time\n\t updateTimeDisplay: function updateTimeDisplay() {\n\t var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t var inverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t // Bail if there's no element to display or the value isn't a number\n\t if (!is$2.element(target) || !is$2.number(time)) {\n\t return;\n\t } // eslint-disable-next-line no-param-reassign\n\n\n\t target.innerText = controls.formatTime(time, inverted);\n\t },\n\t // Update volume UI and storage\n\t updateVolume: function updateVolume() {\n\t if (!this.supported.ui) {\n\t return;\n\t } // Update range\n\n\n\t if (is$2.element(this.elements.inputs.volume)) {\n\t controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n\t } // Update mute state\n\n\n\t if (is$2.element(this.elements.buttons.mute)) {\n\t this.elements.buttons.mute.pressed = this.muted || this.volume === 0;\n\t }\n\t },\n\t // Update seek value and lower fill\n\t setRange: function setRange(target) {\n\t var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t if (!is$2.element(target)) {\n\t return;\n\t } // eslint-disable-next-line\n\n\n\t target.value = value; // Webkit range fill\n\n\t controls.updateRangeFill.call(this, target);\n\t },\n\t // Update <progress> elements\n\t updateProgress: function updateProgress(event) {\n\t var _this4 = this;\n\n\t if (!this.supported.ui || !is$2.event(event)) {\n\t return;\n\t }\n\n\t var value = 0;\n\n\t var setProgress = function setProgress(target, input) {\n\t var val = is$2.number(input) ? input : 0;\n\t var progress = is$2.element(target) ? target : _this4.elements.display.buffer; // Update value and label\n\n\t if (is$2.element(progress)) {\n\t progress.value = val; // Update text label inside\n\n\t var label = progress.getElementsByTagName('span')[0];\n\n\t if (is$2.element(label)) {\n\t label.childNodes[0].nodeValue = val;\n\t }\n\t }\n\t };\n\n\t if (event) {\n\t switch (event.type) {\n\t // Video playing\n\t case 'timeupdate':\n\t case 'seeking':\n\t case 'seeked':\n\t value = getPercentage(this.currentTime, this.duration); // Set seek range value only if it's a 'natural' time event\n\n\t if (event.type === 'timeupdate') {\n\t controls.setRange.call(this, this.elements.inputs.seek, value);\n\t }\n\n\t break;\n\t // Check buffer status\n\n\t case 'playing':\n\t case 'progress':\n\t setProgress(this.elements.display.buffer, this.buffered * 100);\n\t break;\n\t }\n\t }\n\t },\n\t // Webkit polyfill for lower fill range\n\t updateRangeFill: function updateRangeFill(target) {\n\t // Get range from event if event passed\n\t var range = is$2.event(target) ? target.target : target; // Needs to be a valid <input type='range'>\n\n\t if (!is$2.element(range) || range.getAttribute('type') !== 'range') {\n\t return;\n\t } // Set aria values for https://github.com/sampotts/plyr/issues/905\n\n\n\t if (matches$2(range, this.config.selectors.inputs.seek)) {\n\t range.setAttribute('aria-valuenow', this.currentTime);\n\t var currentTime = controls.formatTime(this.currentTime);\n\t var duration = controls.formatTime(this.duration);\n\t var format = i18n.get('seekLabel', this.config);\n\t range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));\n\t } else if (matches$2(range, this.config.selectors.inputs.volume)) {\n\t var percent = range.value * 100;\n\t range.setAttribute('aria-valuenow', percent);\n\t range.setAttribute('aria-valuetext', \"\".concat(percent.toFixed(1), \"%\"));\n\t } else {\n\t range.setAttribute('aria-valuenow', range.value);\n\t } // WebKit only\n\n\n\t if (!browser.isWebkit) {\n\t return;\n\t } // Set CSS custom property\n\n\n\t range.style.setProperty('--value', \"\".concat(range.value / range.max * 100, \"%\"));\n\t },\n\t // Update hover tooltip for seeking\n\t updateSeekTooltip: function updateSeekTooltip(event) {\n\t var _this5 = this;\n\n\t // Bail if setting not true\n\t if (!this.config.tooltips.seek || !is$2.element(this.elements.inputs.seek) || !is$2.element(this.elements.display.seekTooltip) || this.duration === 0) {\n\t return;\n\t }\n\n\t var visible = \"\".concat(this.config.classNames.tooltip, \"--visible\");\n\n\t var toggle = function toggle(show) {\n\t return toggleClass(_this5.elements.display.seekTooltip, visible, show);\n\t }; // Hide on touch\n\n\n\t if (this.touch) {\n\t toggle(false);\n\t return;\n\t } // Determine percentage, if already visible\n\n\n\t var percent = 0;\n\t var clientRect = this.elements.progress.getBoundingClientRect();\n\n\t if (is$2.event(event)) {\n\t percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n\t } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n\t percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n\t } else {\n\t return;\n\t } // Set bounds\n\n\n\t if (percent < 0) {\n\t percent = 0;\n\t } else if (percent > 100) {\n\t percent = 100;\n\t } // Display the time a click would seek to\n\n\n\t controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, this.duration / 100 * percent); // Set position\n\n\t this.elements.display.seekTooltip.style.left = \"\".concat(percent, \"%\"); // Show/hide the tooltip\n\t // If the event is a moues in/out and percentage is inside bounds\n\n\t if (is$2.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n\t toggle(event.type === 'mouseenter');\n\t }\n\t },\n\t // Handle time change event\n\t timeUpdate: function timeUpdate(event) {\n\t // Only invert if only one time element is displayed and used for both duration and currentTime\n\t var invert = !is$2.element(this.elements.display.duration) && this.config.invertTime; // Duration\n\n\t controls.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert); // Ignore updates while seeking\n\n\t if (event && event.type === 'timeupdate' && this.media.seeking) {\n\t return;\n\t } // Playing progress\n\n\n\t controls.updateProgress.call(this, event);\n\t },\n\t // Show the duration on metadataloaded or durationchange events\n\t durationUpdate: function durationUpdate() {\n\t // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n\t if (!this.supported.ui || !this.config.invertTime && this.currentTime) {\n\t return;\n\t } // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n\t // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n\t // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n\t // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n\n\n\t if (this.duration >= Math.pow(2, 32)) {\n\t toggleHidden(this.elements.display.currentTime, true);\n\t toggleHidden(this.elements.progress, true);\n\t return;\n\t } // Update ARIA values\n\n\n\t if (is$2.element(this.elements.inputs.seek)) {\n\t this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n\t } // If there's a spot to display duration\n\n\n\t var hasDuration = is$2.element(this.elements.display.duration); // If there's only one time display, display duration there\n\n\t if (!hasDuration && this.config.displayDuration && this.paused) {\n\t controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n\t } // If there's a duration element, update content\n\n\n\t if (hasDuration) {\n\t controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n\t } // Update the tooltip (if visible)\n\n\n\t controls.updateSeekTooltip.call(this);\n\t },\n\t // Hide/show a tab\n\t toggleMenuButton: function toggleMenuButton(setting, toggle) {\n\t toggleHidden(this.elements.settings.buttons[setting], !toggle);\n\t },\n\t // Update the selected setting\n\t updateSetting: function updateSetting(setting, container, input) {\n\t var pane = this.elements.settings.panels[setting];\n\t var value = null;\n\t var list = container;\n\n\t if (setting === 'captions') {\n\t value = this.currentTrack;\n\t } else {\n\t value = !is$2.empty(input) ? input : this[setting]; // Get default\n\n\t if (is$2.empty(value)) {\n\t value = this.config[setting].default;\n\t } // Unsupported value\n\n\n\t if (!is$2.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n\t this.debug.warn(\"Unsupported value of '\".concat(value, \"' for \").concat(setting));\n\t return;\n\t } // Disabled value\n\n\n\t if (!this.config[setting].options.includes(value)) {\n\t this.debug.warn(\"Disabled value of '\".concat(value, \"' for \").concat(setting));\n\t return;\n\t }\n\t } // Get the list if we need to\n\n\n\t if (!is$2.element(list)) {\n\t list = pane && pane.querySelector('[role=\"menu\"]');\n\t } // If there's no list it means it's not been rendered...\n\n\n\t if (!is$2.element(list)) {\n\t return;\n\t } // Update the label\n\n\n\t var label = this.elements.settings.buttons[setting].querySelector(\".\".concat(this.config.classNames.menu.value));\n\t label.innerHTML = controls.getLabel.call(this, setting, value); // Find the radio option and check it\n\n\t var target = list && list.querySelector(\"[value=\\\"\".concat(value, \"\\\"]\"));\n\n\t if (is$2.element(target)) {\n\t target.checked = true;\n\t }\n\t },\n\t // Translate a value into a nice label\n\t getLabel: function getLabel(setting, value) {\n\t switch (setting) {\n\t case 'speed':\n\t return value === 1 ? i18n.get('normal', this.config) : \"\".concat(value, \"×\");\n\n\t case 'quality':\n\t if (is$2.number(value)) {\n\t var label = i18n.get(\"qualityLabel.\".concat(value), this.config);\n\n\t if (!label.length) {\n\t return \"\".concat(value, \"p\");\n\t }\n\n\t return label;\n\t }\n\n\t return toTitleCase(value);\n\n\t case 'captions':\n\t return captions.getLabel.call(this);\n\n\t default:\n\t return null;\n\t }\n\t },\n\t // Set the quality menu\n\t setQualityMenu: function setQualityMenu(options) {\n\t var _this6 = this;\n\n\t // Menu required\n\t if (!is$2.element(this.elements.settings.panels.quality)) {\n\t return;\n\t }\n\n\t var type = 'quality';\n\t var list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]'); // Set options if passed and filter based on uniqueness and config\n\n\t if (is$2.array(options)) {\n\t this.options.quality = dedupe(options).filter(function (quality) {\n\t return _this6.config.quality.options.includes(quality);\n\t });\n\t } // Toggle the pane and tab\n\n\n\t var toggle = !is$2.empty(this.options.quality) && this.options.quality.length > 1;\n\t controls.toggleMenuButton.call(this, type, toggle); // Empty the menu\n\n\t emptyElement(list); // Check if we need to toggle the parent\n\n\t controls.checkMenu.call(this); // If we're hiding, nothing more to do\n\n\t if (!toggle) {\n\t return;\n\t } // Get the badge HTML for HD, 4K etc\n\n\n\t var getBadge = function getBadge(quality) {\n\t var label = i18n.get(\"qualityBadge.\".concat(quality), _this6.config);\n\n\t if (!label.length) {\n\t return null;\n\t }\n\n\t return controls.createBadge.call(_this6, label);\n\t }; // Sort options by the config and then render options\n\n\n\t this.options.quality.sort(function (a, b) {\n\t var sorting = _this6.config.quality.options;\n\t return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n\t }).forEach(function (quality) {\n\t controls.createMenuItem.call(_this6, {\n\t value: quality,\n\t list: list,\n\t type: type,\n\t title: controls.getLabel.call(_this6, 'quality', quality),\n\t badge: getBadge(quality)\n\t });\n\t });\n\t controls.updateSetting.call(this, type, list);\n\t },\n\t // Set the looping options\n\n\t /* setLoopMenu() {\n\t // Menu required\n\t if (!is.element(this.elements.settings.panels.loop)) {\n\t return;\n\t }\n\t const options = ['start', 'end', 'all', 'reset'];\n\t const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\t // Show the pane and tab\n\t toggleHidden(this.elements.settings.buttons.loop, false);\n\t toggleHidden(this.elements.settings.panels.loop, false);\n\t // Toggle the pane and tab\n\t const toggle = !is.empty(this.loop.options);\n\t controls.toggleMenuButton.call(this, 'loop', toggle);\n\t // Empty the menu\n\t emptyElement(list);\n\t options.forEach(option => {\n\t const item = createElement('li');\n\t const button = createElement(\n\t 'button',\n\t extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n\t type: 'button',\n\t class: this.config.classNames.control,\n\t 'data-plyr-loop-action': option,\n\t }),\n\t i18n.get(option, this.config)\n\t );\n\t if (['start', 'end'].includes(option)) {\n\t const badge = controls.createBadge.call(this, '00:00');\n\t button.appendChild(badge);\n\t }\n\t item.appendChild(button);\n\t list.appendChild(item);\n\t });\n\t }, */\n\t // Get current selected caption language\n\t // TODO: rework this to user the getter in the API?\n\t // Set a list of available captions languages\n\t setCaptionsMenu: function setCaptionsMenu() {\n\t var _this7 = this;\n\n\t // Menu required\n\t if (!is$2.element(this.elements.settings.panels.captions)) {\n\t return;\n\t } // TODO: Captions or language? Currently it's mixed\n\n\n\t var type = 'captions';\n\t var list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n\t var tracks = captions.getTracks.call(this);\n\t var toggle = Boolean(tracks.length); // Toggle the pane and tab\n\n\t controls.toggleMenuButton.call(this, type, toggle); // Empty the menu\n\n\t emptyElement(list); // Check if we need to toggle the parent\n\n\t controls.checkMenu.call(this); // If there's no captions, bail\n\n\t if (!toggle) {\n\t return;\n\t } // Generate options data\n\n\n\t var options = tracks.map(function (track, value) {\n\t return {\n\t value: value,\n\t checked: _this7.captions.toggled && _this7.currentTrack === value,\n\t title: captions.getLabel.call(_this7, track),\n\t badge: track.language && controls.createBadge.call(_this7, track.language.toUpperCase()),\n\t list: list,\n\t type: 'language'\n\t };\n\t }); // Add the \"Disabled\" option to turn off captions\n\n\t options.unshift({\n\t value: -1,\n\t checked: !this.captions.toggled,\n\t title: i18n.get('disabled', this.config),\n\t list: list,\n\t type: 'language'\n\t }); // Generate options\n\n\t options.forEach(controls.createMenuItem.bind(this));\n\t controls.updateSetting.call(this, type, list);\n\t },\n\t // Set a list of available captions languages\n\t setSpeedMenu: function setSpeedMenu() {\n\t var _this8 = this;\n\n\t // Menu required\n\t if (!is$2.element(this.elements.settings.panels.speed)) {\n\t return;\n\t }\n\n\t var type = 'speed';\n\t var list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]'); // Filter out invalid speeds\n\n\t this.options.speed = this.options.speed.filter(function (o) {\n\t return o >= _this8.minimumSpeed && o <= _this8.maximumSpeed;\n\t }); // Toggle the pane and tab\n\n\t var toggle = !is$2.empty(this.options.speed) && this.options.speed.length > 1;\n\t controls.toggleMenuButton.call(this, type, toggle); // Empty the menu\n\n\t emptyElement(list); // Check if we need to toggle the parent\n\n\t controls.checkMenu.call(this); // If we're hiding, nothing more to do\n\n\t if (!toggle) {\n\t return;\n\t } // Create items\n\n\n\t this.options.speed.forEach(function (speed) {\n\t controls.createMenuItem.call(_this8, {\n\t value: speed,\n\t list: list,\n\t type: type,\n\t title: controls.getLabel.call(_this8, 'speed', speed)\n\t });\n\t });\n\t controls.updateSetting.call(this, type, list);\n\t },\n\t // Check if we need to hide/show the settings menu\n\t checkMenu: function checkMenu() {\n\t var buttons = this.elements.settings.buttons;\n\t var visible = !is$2.empty(buttons) && Object.values(buttons).some(function (button) {\n\t return !button.hidden;\n\t });\n\t toggleHidden(this.elements.settings.menu, !visible);\n\t },\n\t // Focus the first menu item in a given (or visible) menu\n\t focusFirstMenuItem: function focusFirstMenuItem(pane) {\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (this.elements.settings.popup.hidden) {\n\t return;\n\t }\n\n\t var target = pane;\n\n\t if (!is$2.element(target)) {\n\t target = Object.values(this.elements.settings.panels).find(function (p) {\n\t return !p.hidden;\n\t });\n\t }\n\n\t var firstItem = target.querySelector('[role^=\"menuitem\"]');\n\t setFocus.call(this, firstItem, tabFocus);\n\t },\n\t // Show/hide menu\n\t toggleMenu: function toggleMenu(input) {\n\t var popup = this.elements.settings.popup;\n\t var button = this.elements.buttons.settings; // Menu and button are required\n\n\t if (!is$2.element(popup) || !is$2.element(button)) {\n\t return;\n\t } // True toggle by default\n\n\n\t var hidden = popup.hidden;\n\t var show = hidden;\n\n\t if (is$2.boolean(input)) {\n\t show = input;\n\t } else if (is$2.keyboardEvent(input) && input.which === 27) {\n\t show = false;\n\t } else if (is$2.event(input)) {\n\t // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n\t // Element in the shadowDOM. The path, if available, is complete.\n\t var target = is$2.function(input.composedPath) ? input.composedPath()[0] : input.target;\n\t var isMenuItem = popup.contains(target); // If the click was inside the menu or if the click\n\t // wasn't the button or menu item and we're trying to\n\t // show the menu (a doc click shouldn't show the menu)\n\n\t if (isMenuItem || !isMenuItem && input.target !== button && show) {\n\t return;\n\t }\n\t } // Set button attributes\n\n\n\t button.setAttribute('aria-expanded', show); // Show the actual popup\n\n\t toggleHidden(popup, !show); // Add class hook\n\n\t toggleClass(this.elements.container, this.config.classNames.menu.open, show); // Focus the first item if key interaction\n\n\t if (show && is$2.keyboardEvent(input)) {\n\t controls.focusFirstMenuItem.call(this, null, true);\n\t } else if (!show && !hidden) {\n\t // If closing, re-focus the button\n\t setFocus.call(this, button, is$2.keyboardEvent(input));\n\t }\n\t },\n\t // Get the natural size of a menu panel\n\t getMenuSize: function getMenuSize(tab) {\n\t var clone = tab.cloneNode(true);\n\t clone.style.position = 'absolute';\n\t clone.style.opacity = 0;\n\t clone.removeAttribute('hidden'); // Append to parent so we get the \"real\" size\n\n\t tab.parentNode.appendChild(clone); // Get the sizes before we remove\n\n\t var width = clone.scrollWidth;\n\t var height = clone.scrollHeight; // Remove from the DOM\n\n\t removeElement(clone);\n\t return {\n\t width: width,\n\t height: height\n\t };\n\t },\n\t // Show a panel in the menu\n\t showMenuPanel: function showMenuPanel() {\n\t var _this9 = this;\n\n\t var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var target = this.elements.container.querySelector(\"#plyr-settings-\".concat(this.id, \"-\").concat(type)); // Nothing to show, bail\n\n\t if (!is$2.element(target)) {\n\t return;\n\t } // Hide all other panels\n\n\n\t var container = target.parentNode;\n\t var current = Array.from(container.children).find(function (node) {\n\t return !node.hidden;\n\t }); // If we can do fancy animations, we'll animate the height/width\n\n\t if (support.transitions && !support.reducedMotion) {\n\t // Set the current width as a base\n\t container.style.width = \"\".concat(current.scrollWidth, \"px\");\n\t container.style.height = \"\".concat(current.scrollHeight, \"px\"); // Get potential sizes\n\n\t var size = controls.getMenuSize.call(this, target); // Restore auto height/width\n\n\t var restore = function restore(event) {\n\t // We're only bothered about height and width on the container\n\t if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n\t return;\n\t } // Revert back to auto\n\n\n\t container.style.width = '';\n\t container.style.height = ''; // Only listen once\n\n\t off.call(_this9, container, transitionEndEvent, restore);\n\t }; // Listen for the transition finishing and restore auto height/width\n\n\n\t on.call(this, container, transitionEndEvent, restore); // Set dimensions to target\n\n\t container.style.width = \"\".concat(size.width, \"px\");\n\t container.style.height = \"\".concat(size.height, \"px\");\n\t } // Set attributes on current tab\n\n\n\t toggleHidden(current, true); // Set attributes on target\n\n\t toggleHidden(target, false); // Focus the first item\n\n\t controls.focusFirstMenuItem.call(this, target, tabFocus);\n\t },\n\t // Set the download URL\n\t setDownloadUrl: function setDownloadUrl() {\n\t var button = this.elements.buttons.download; // Bail if no button\n\n\t if (!is$2.element(button)) {\n\t return;\n\t } // Set attribute\n\n\n\t button.setAttribute('href', this.download);\n\t },\n\t // Build the default HTML\n\t create: function create(data) {\n\t var _this10 = this;\n\n\t var bindMenuItemShortcuts = controls.bindMenuItemShortcuts,\n\t createButton = controls.createButton,\n\t createProgress = controls.createProgress,\n\t createRange = controls.createRange,\n\t createTime = controls.createTime,\n\t setQualityMenu = controls.setQualityMenu,\n\t setSpeedMenu = controls.setSpeedMenu,\n\t showMenuPanel = controls.showMenuPanel;\n\t this.elements.controls = null; // Larger overlaid play button\n\n\t if (this.config.controls.includes('play-large')) {\n\t this.elements.container.appendChild(createButton.call(this, 'play-large'));\n\t } // Create the container\n\n\n\t var container = createElement$1('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n\t this.elements.controls = container; // Default item attributes\n\n\t var defaultAttributes = {\n\t class: 'plyr__controls__item'\n\t }; // Loop through controls in order\n\n\t dedupe(this.config.controls).forEach(function (control) {\n\t // Restart button\n\t if (control === 'restart') {\n\t container.appendChild(createButton.call(_this10, 'restart', defaultAttributes));\n\t } // Rewind button\n\n\n\t if (control === 'rewind') {\n\t container.appendChild(createButton.call(_this10, 'rewind', defaultAttributes));\n\t } // Play/Pause button\n\n\n\t if (control === 'play') {\n\t container.appendChild(createButton.call(_this10, 'play', defaultAttributes));\n\t } // Fast forward button\n\n\n\t if (control === 'fast-forward') {\n\t container.appendChild(createButton.call(_this10, 'fast-forward', defaultAttributes));\n\t } // Progress\n\n\n\t if (control === 'progress') {\n\t var progressContainer = createElement$1('div', {\n\t class: \"\".concat(defaultAttributes.class, \" plyr__progress__container\")\n\t });\n\t var progress = createElement$1('div', getAttributesFromSelector(_this10.config.selectors.progress)); // Seek range slider\n\n\t progress.appendChild(createRange.call(_this10, 'seek', {\n\t id: \"plyr-seek-\".concat(data.id)\n\t })); // Buffer progress\n\n\t progress.appendChild(createProgress.call(_this10, 'buffer')); // TODO: Add loop display indicator\n\t // Seek tooltip\n\n\t if (_this10.config.tooltips.seek) {\n\t var tooltip = createElement$1('span', {\n\t class: _this10.config.classNames.tooltip\n\t }, '00:00');\n\t progress.appendChild(tooltip);\n\t _this10.elements.display.seekTooltip = tooltip;\n\t }\n\n\t _this10.elements.progress = progress;\n\t progressContainer.appendChild(_this10.elements.progress);\n\t container.appendChild(progressContainer);\n\t } // Media current time display\n\n\n\t if (control === 'current-time') {\n\t container.appendChild(createTime.call(_this10, 'currentTime', defaultAttributes));\n\t } // Media duration display\n\n\n\t if (control === 'duration') {\n\t container.appendChild(createTime.call(_this10, 'duration', defaultAttributes));\n\t } // Volume controls\n\n\n\t if (control === 'mute' || control === 'volume') {\n\t var volume = _this10.elements.volume; // Create the volume container if needed\n\n\t if (!is$2.element(volume) || !container.contains(volume)) {\n\t volume = createElement$1('div', extend$1({}, defaultAttributes, {\n\t class: \"\".concat(defaultAttributes.class, \" plyr__volume\").trim()\n\t }));\n\t _this10.elements.volume = volume;\n\t container.appendChild(volume);\n\t } // Toggle mute button\n\n\n\t if (control === 'mute') {\n\t volume.appendChild(createButton.call(_this10, 'mute'));\n\t } // Volume range control\n\t // Ignored on iOS as it's handled globally\n\t // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n\n\n\t if (control === 'volume' && !browser.isIos) {\n\t // Set the attributes\n\t var attributes = {\n\t max: 1,\n\t step: 0.05,\n\t value: _this10.config.volume\n\t }; // Create the volume range slider\n\n\t volume.appendChild(createRange.call(_this10, 'volume', extend$1(attributes, {\n\t id: \"plyr-volume-\".concat(data.id)\n\t })));\n\t }\n\t } // Toggle captions button\n\n\n\t if (control === 'captions') {\n\t container.appendChild(createButton.call(_this10, 'captions', defaultAttributes));\n\t } // Settings button / menu\n\n\n\t if (control === 'settings' && !is$2.empty(_this10.config.settings)) {\n\t var wrapper = createElement$1('div', extend$1({}, defaultAttributes, {\n\t class: \"\".concat(defaultAttributes.class, \" plyr__menu\").trim(),\n\t hidden: ''\n\t }));\n\t wrapper.appendChild(createButton.call(_this10, 'settings', {\n\t 'aria-haspopup': true,\n\t 'aria-controls': \"plyr-settings-\".concat(data.id),\n\t 'aria-expanded': false\n\t }));\n\t var popup = createElement$1('div', {\n\t class: 'plyr__menu__container',\n\t id: \"plyr-settings-\".concat(data.id),\n\t hidden: ''\n\t });\n\t var inner = createElement$1('div');\n\t var home = createElement$1('div', {\n\t id: \"plyr-settings-\".concat(data.id, \"-home\")\n\t }); // Create the menu\n\n\t var menu = createElement$1('div', {\n\t role: 'menu'\n\t });\n\t home.appendChild(menu);\n\t inner.appendChild(home);\n\t _this10.elements.settings.panels.home = home; // Build the menu items\n\n\t _this10.config.settings.forEach(function (type) {\n\t // TODO: bundle this with the createMenuItem helper and bindings\n\t var menuItem = createElement$1('button', extend$1(getAttributesFromSelector(_this10.config.selectors.buttons.settings), {\n\t type: 'button',\n\t class: \"\".concat(_this10.config.classNames.control, \" \").concat(_this10.config.classNames.control, \"--forward\"),\n\t role: 'menuitem',\n\t 'aria-haspopup': true,\n\t hidden: ''\n\t })); // Bind menu shortcuts for keyboard users\n\n\t bindMenuItemShortcuts.call(_this10, menuItem, type); // Show menu on click\n\n\t on.call(_this10, menuItem, 'click', function () {\n\t showMenuPanel.call(_this10, type, false);\n\t });\n\t var flex = createElement$1('span', null, i18n.get(type, _this10.config));\n\t var value = createElement$1('span', {\n\t class: _this10.config.classNames.menu.value\n\t }); // Speed contains HTML entities\n\n\t value.innerHTML = data[type];\n\t flex.appendChild(value);\n\t menuItem.appendChild(flex);\n\t menu.appendChild(menuItem); // Build the panes\n\n\t var pane = createElement$1('div', {\n\t id: \"plyr-settings-\".concat(data.id, \"-\").concat(type),\n\t hidden: ''\n\t }); // Back button\n\n\t var backButton = createElement$1('button', {\n\t type: 'button',\n\t class: \"\".concat(_this10.config.classNames.control, \" \").concat(_this10.config.classNames.control, \"--back\")\n\t }); // Visible label\n\n\t backButton.appendChild(createElement$1('span', {\n\t 'aria-hidden': true\n\t }, i18n.get(type, _this10.config))); // Screen reader label\n\n\t backButton.appendChild(createElement$1('span', {\n\t class: _this10.config.classNames.hidden\n\t }, i18n.get('menuBack', _this10.config))); // Go back via keyboard\n\n\t on.call(_this10, pane, 'keydown', function (event) {\n\t // We only care about <-\n\t if (event.which !== 37) {\n\t return;\n\t } // Prevent seek\n\n\n\t event.preventDefault();\n\t event.stopPropagation(); // Show the respective menu\n\n\t showMenuPanel.call(_this10, 'home', true);\n\t }, false); // Go back via button click\n\n\t on.call(_this10, backButton, 'click', function () {\n\t showMenuPanel.call(_this10, 'home', false);\n\t }); // Add to pane\n\n\t pane.appendChild(backButton); // Menu\n\n\t pane.appendChild(createElement$1('div', {\n\t role: 'menu'\n\t }));\n\t inner.appendChild(pane);\n\t _this10.elements.settings.buttons[type] = menuItem;\n\t _this10.elements.settings.panels[type] = pane;\n\t });\n\n\t popup.appendChild(inner);\n\t wrapper.appendChild(popup);\n\t container.appendChild(wrapper);\n\t _this10.elements.settings.popup = popup;\n\t _this10.elements.settings.menu = wrapper;\n\t } // Picture in picture button\n\n\n\t if (control === 'pip' && support.pip) {\n\t container.appendChild(createButton.call(_this10, 'pip', defaultAttributes));\n\t } // Airplay button\n\n\n\t if (control === 'airplay' && support.airplay) {\n\t container.appendChild(createButton.call(_this10, 'airplay', defaultAttributes));\n\t } // Download button\n\n\n\t if (control === 'download') {\n\t var _attributes = extend$1({}, defaultAttributes, {\n\t element: 'a',\n\t href: _this10.download,\n\t target: '_blank'\n\t }); // Set download attribute for HTML5 only\n\n\n\t if (_this10.isHTML5) {\n\t _attributes.download = '';\n\t }\n\n\t var download = _this10.config.urls.download;\n\n\t if (!is$2.url(download) && _this10.isEmbed) {\n\t extend$1(_attributes, {\n\t icon: \"logo-\".concat(_this10.provider),\n\t label: _this10.provider\n\t });\n\t }\n\n\t container.appendChild(createButton.call(_this10, 'download', _attributes));\n\t } // Toggle fullscreen button\n\n\n\t if (control === 'fullscreen') {\n\t container.appendChild(createButton.call(_this10, 'fullscreen', defaultAttributes));\n\t }\n\t }); // Set available quality levels\n\n\t if (this.isHTML5) {\n\t setQualityMenu.call(this, html5.getQualityOptions.call(this));\n\t }\n\n\t setSpeedMenu.call(this);\n\t return container;\n\t },\n\t // Insert controls\n\t inject: function inject() {\n\t var _this11 = this;\n\n\t // Sprite\n\t if (this.config.loadSprite) {\n\t var icon = controls.getIconUrl.call(this); // Only load external sprite using AJAX\n\n\t if (icon.cors) {\n\t loadSprite(icon.url, 'sprite-plyr');\n\t }\n\t } // Create a unique ID\n\n\n\t this.id = Math.floor(Math.random() * 10000); // Null by default\n\n\t var container = null;\n\t this.elements.controls = null; // Set template properties\n\n\t var props = {\n\t id: this.id,\n\t seektime: this.config.seekTime,\n\t title: this.config.title\n\t };\n\t var update = true; // If function, run it and use output\n\n\t if (is$2.function(this.config.controls)) {\n\t this.config.controls = this.config.controls.call(this, props);\n\t } // Convert falsy controls to empty array (primarily for empty strings)\n\n\n\t if (!this.config.controls) {\n\t this.config.controls = [];\n\t }\n\n\t if (is$2.element(this.config.controls) || is$2.string(this.config.controls)) {\n\t // HTMLElement or Non-empty string passed as the option\n\t container = this.config.controls;\n\t } else {\n\t // Create controls\n\t container = controls.create.call(this, {\n\t id: this.id,\n\t seektime: this.config.seekTime,\n\t speed: this.speed,\n\t quality: this.quality,\n\t captions: captions.getLabel.call(this) // TODO: Looping\n\t // loop: 'None',\n\n\t });\n\t update = false;\n\t } // Replace props with their value\n\n\n\t var replace = function replace(input) {\n\t var result = input;\n\t Object.entries(props).forEach(function (_ref2) {\n\t var _ref3 = _slicedToArray(_ref2, 2),\n\t key = _ref3[0],\n\t value = _ref3[1];\n\n\t result = replaceAll(result, \"{\".concat(key, \"}\"), value);\n\t });\n\t return result;\n\t }; // Update markup\n\n\n\t if (update) {\n\t if (is$2.string(this.config.controls)) {\n\t container = replace(container);\n\t } else if (is$2.element(container)) {\n\t container.innerHTML = replace(container.innerHTML);\n\t }\n\t } // Controls container\n\n\n\t var target; // Inject to custom location\n\n\t if (is$2.string(this.config.selectors.controls.container)) {\n\t target = document.querySelector(this.config.selectors.controls.container);\n\t } // Inject into the container by default\n\n\n\t if (!is$2.element(target)) {\n\t target = this.elements.container;\n\t } // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n\n\n\t var insertMethod = is$2.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n\t target[insertMethod]('afterbegin', container); // Find the elements if need be\n\n\t if (!is$2.element(this.elements.controls)) {\n\t controls.findElements.call(this);\n\t } // Add pressed property to buttons\n\n\n\t if (!is$2.empty(this.elements.buttons)) {\n\t var addProperty = function addProperty(button) {\n\t var className = _this11.config.classNames.controlPressed;\n\t Object.defineProperty(button, 'pressed', {\n\t enumerable: true,\n\t get: function get() {\n\t return hasClass(button, className);\n\t },\n\t set: function set() {\n\t var pressed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t toggleClass(button, className, pressed);\n\t }\n\t });\n\t }; // Toggle classname when pressed property is set\n\n\n\t Object.values(this.elements.buttons).filter(Boolean).forEach(function (button) {\n\t if (is$2.array(button) || is$2.nodeList(button)) {\n\t Array.from(button).filter(Boolean).forEach(addProperty);\n\t } else {\n\t addProperty(button);\n\t }\n\t });\n\t } // Edge sometimes doesn't finish the paint so force a repaint\n\n\n\t if (browser.isEdge) {\n\t repaint(target);\n\t } // Setup tooltips\n\n\n\t if (this.config.tooltips.controls) {\n\t var _this$config = this.config,\n\t classNames = _this$config.classNames,\n\t selectors = _this$config.selectors;\n\t var selector = \"\".concat(selectors.controls.wrapper, \" \").concat(selectors.labels, \" .\").concat(classNames.hidden);\n\t var labels = getElements.call(this, selector);\n\t Array.from(labels).forEach(function (label) {\n\t toggleClass(label, _this11.config.classNames.hidden, false);\n\t toggleClass(label, _this11.config.classNames.tooltip, true);\n\t });\n\t }\n\t }\n\t};\n\n\t/**\n\t * Parse a string to a URL object\n\t * @param {String} input - the URL to be parsed\n\t * @param {Boolean} safe - failsafe parsing\n\t */\n\n\tfunction parseUrl$1(input) {\n\t var safe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t var url = input;\n\n\t if (safe) {\n\t var parser = document.createElement('a');\n\t parser.href = url;\n\t url = parser.href;\n\t }\n\n\t try {\n\t return new URL(url);\n\t } catch (e) {\n\t return null;\n\t }\n\t} // Convert object to URLSearchParams\n\n\tfunction buildUrlParams(input) {\n\t var params = new URLSearchParams();\n\n\t if (is$2.object(input)) {\n\t Object.entries(input).forEach(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t key = _ref2[0],\n\t value = _ref2[1];\n\n\t params.set(key, value);\n\t });\n\t }\n\n\t return params;\n\t}\n\n\tvar captions = {\n\t // Setup captions\n\t setup: function setup() {\n\t // Requires UI support\n\t if (!this.supported.ui) {\n\t return;\n\t } // Only Vimeo and HTML5 video supported at this point\n\n\n\t if (!this.isVideo || this.isYouTube || this.isHTML5 && !support.textTracks) {\n\t // Clear menu and hide\n\t if (is$2.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {\n\t controls.setCaptionsMenu.call(this);\n\t }\n\n\t return;\n\t } // Inject the container\n\n\n\t if (!is$2.element(this.elements.captions)) {\n\t this.elements.captions = createElement$1('div', getAttributesFromSelector(this.config.selectors.captions));\n\t insertAfter(this.elements.captions, this.elements.wrapper);\n\t } // Fix IE captions if CORS is used\n\t // Fetch captions and inject as blobs instead (data URIs not supported!)\n\n\n\t if (browser.isIE && window.URL) {\n\t var elements = this.media.querySelectorAll('track');\n\t Array.from(elements).forEach(function (track) {\n\t var src = track.getAttribute('src');\n\t var url = parseUrl$1(src);\n\n\t if (url !== null && url.hostname !== window.location.href.hostname && ['http:', 'https:'].includes(url.protocol)) {\n\t fetch(src, 'blob').then(function (blob) {\n\t track.setAttribute('src', window.URL.createObjectURL(blob));\n\t }).catch(function () {\n\t removeElement(track);\n\t });\n\t }\n\t });\n\t } // Get and set initial data\n\t // The \"preferred\" options are not realized unless / until the wanted language has a match\n\t // * languages: Array of user's browser languages.\n\t // * language: The language preferred by user settings or config\n\t // * active: The state preferred by user settings or config\n\t // * toggled: The real captions state\n\n\n\t var browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n\t var languages = dedupe(browserLanguages.map(function (language) {\n\t return language.split('-')[0];\n\t }));\n\t var language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase(); // Use first browser language when language is 'auto'\n\n\t if (language === 'auto') {\n\t var _languages = _slicedToArray(languages, 1);\n\n\t language = _languages[0];\n\t }\n\n\t var active = this.storage.get('captions');\n\n\t if (!is$2.boolean(active)) {\n\t active = this.config.captions.active;\n\t }\n\n\t Object.assign(this.captions, {\n\t toggled: false,\n\t active: active,\n\t language: language,\n\t languages: languages\n\t }); // Watch changes to textTracks and update captions menu\n\n\t if (this.isHTML5) {\n\t var trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n\t on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n\t } // Update available languages in list next tick (the event must not be triggered before the listeners)\n\n\n\t setTimeout(captions.update.bind(this), 0);\n\t },\n\t // Update available language options in settings based on tracks\n\t update: function update() {\n\t var _this = this;\n\n\t var tracks = captions.getTracks.call(this, true); // Get the wanted language\n\n\t var _this$captions = this.captions,\n\t active = _this$captions.active,\n\t language = _this$captions.language,\n\t meta = _this$captions.meta,\n\t currentTrackNode = _this$captions.currentTrackNode;\n\t var languageExists = Boolean(tracks.find(function (track) {\n\t return track.language === language;\n\t })); // Handle tracks (add event listener and \"pseudo\"-default)\n\n\t if (this.isHTML5 && this.isVideo) {\n\t tracks.filter(function (track) {\n\t return !meta.get(track);\n\t }).forEach(function (track) {\n\t _this.debug.log('Track added', track); // Attempt to store if the original dom element was \"default\"\n\n\n\t meta.set(track, {\n\t default: track.mode === 'showing'\n\t }); // Turn off native caption rendering to avoid double captions\n\t // Note: mode='hidden' forces a track to download. To ensure every track\n\t // isn't downloaded at once, only 'showing' tracks should be reassigned\n\t // eslint-disable-next-line no-param-reassign\n\n\t if (track.mode === 'showing') {\n\t // eslint-disable-next-line no-param-reassign\n\t track.mode = 'hidden';\n\t } // Add event listener for cue changes\n\n\n\t on.call(_this, track, 'cuechange', function () {\n\t return captions.updateCues.call(_this);\n\t });\n\t });\n\t } // Update language first time it matches, or if the previous matching track was removed\n\n\n\t if (languageExists && this.language !== language || !tracks.includes(currentTrackNode)) {\n\t captions.setLanguage.call(this, language);\n\t captions.toggle.call(this, active && languageExists);\n\t } // Enable or disable captions based on track length\n\n\n\t toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is$2.empty(tracks)); // Update available languages in list\n\n\t if (is$2.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {\n\t controls.setCaptionsMenu.call(this);\n\t }\n\t },\n\t // Toggle captions display\n\t // Used internally for the toggleCaptions method, with the passive option forced to false\n\t toggle: function toggle(input) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t // If there's no full support\n\t if (!this.supported.ui) {\n\t return;\n\t }\n\n\t var toggled = this.captions.toggled; // Current state\n\n\t var activeClass = this.config.classNames.captions.active; // Get the next state\n\t // If the method is called without parameter, toggle based on current value\n\n\t var active = is$2.nullOrUndefined(input) ? !toggled : input; // Update state and trigger event\n\n\t if (active !== toggled) {\n\t // When passive, don't override user preferences\n\t if (!passive) {\n\t this.captions.active = active;\n\t this.storage.set({\n\t captions: active\n\t });\n\t } // Force language if the call isn't passive and there is no matching language to toggle to\n\n\n\t if (!this.language && active && !passive) {\n\t var tracks = captions.getTracks.call(this);\n\t var track = captions.findTrack.call(this, [this.captions.language].concat(_toConsumableArray(this.captions.languages)), true); // Override user preferences to avoid switching languages if a matching track is added\n\n\t this.captions.language = track.language; // Set caption, but don't store in localStorage as user preference\n\n\t captions.set.call(this, tracks.indexOf(track));\n\t return;\n\t } // Toggle button if it's enabled\n\n\n\t if (this.elements.buttons.captions) {\n\t this.elements.buttons.captions.pressed = active;\n\t } // Add class hook\n\n\n\t toggleClass(this.elements.container, activeClass, active);\n\t this.captions.toggled = active; // Update settings menu\n\n\t controls.updateSetting.call(this, 'captions'); // Trigger event (not used internally)\n\n\t triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n\t } // Wait for the call stack to clear before setting mode='hidden'\n\t // on the active track - forcing the browser to download it\n\n\n\t setTimeout(function () {\n\t if (active && _this2.captions.toggled) {\n\t _this2.captions.currentTrackNode.mode = 'hidden';\n\t }\n\t });\n\t },\n\t // Set captions by track index\n\t // Used internally for the currentTrack setter with the passive option forced to false\n\t set: function set(index) {\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t var tracks = captions.getTracks.call(this); // Disable captions if setting to -1\n\n\t if (index === -1) {\n\t captions.toggle.call(this, false, passive);\n\t return;\n\t }\n\n\t if (!is$2.number(index)) {\n\t this.debug.warn('Invalid caption argument', index);\n\t return;\n\t }\n\n\t if (!(index in tracks)) {\n\t this.debug.warn('Track not found', index);\n\t return;\n\t }\n\n\t if (this.captions.currentTrack !== index) {\n\t this.captions.currentTrack = index;\n\t var track = tracks[index];\n\n\t var _ref = track || {},\n\t language = _ref.language; // Store reference to node for invalidation on remove\n\n\n\t this.captions.currentTrackNode = track; // Update settings menu\n\n\t controls.updateSetting.call(this, 'captions'); // When passive, don't override user preferences\n\n\t if (!passive) {\n\t this.captions.language = language;\n\t this.storage.set({\n\t language: language\n\t });\n\t } // Handle Vimeo captions\n\n\n\t if (this.isVimeo) {\n\t this.embed.enableTextTrack(language);\n\t } // Trigger event\n\n\n\t triggerEvent.call(this, this.media, 'languagechange');\n\t } // Show captions\n\n\n\t captions.toggle.call(this, true, passive);\n\n\t if (this.isHTML5 && this.isVideo) {\n\t // If we change the active track while a cue is already displayed we need to update it\n\t captions.updateCues.call(this);\n\t }\n\t },\n\t // Set captions by language\n\t // Used internally for the language setter with the passive option forced to false\n\t setLanguage: function setLanguage(input) {\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t if (!is$2.string(input)) {\n\t this.debug.warn('Invalid language argument', input);\n\t return;\n\t } // Normalize\n\n\n\t var language = input.toLowerCase();\n\t this.captions.language = language; // Set currentTrack\n\n\t var tracks = captions.getTracks.call(this);\n\t var track = captions.findTrack.call(this, [language]);\n\t captions.set.call(this, tracks.indexOf(track), passive);\n\t },\n\t // Get current valid caption tracks\n\t // If update is false it will also ignore tracks without metadata\n\t // This is used to \"freeze\" the language options when captions.update is false\n\t getTracks: function getTracks() {\n\t var _this3 = this;\n\n\t var update = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t // Handle media or textTracks missing or null\n\t var tracks = Array.from((this.media || {}).textTracks || []); // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n\t // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n\n\t return tracks.filter(function (track) {\n\t return !_this3.isHTML5 || update || _this3.captions.meta.has(track);\n\t }).filter(function (track) {\n\t return ['captions', 'subtitles'].includes(track.kind);\n\t });\n\t },\n\t // Match tracks based on languages and get the first\n\t findTrack: function findTrack(languages) {\n\t var _this4 = this;\n\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var tracks = captions.getTracks.call(this);\n\n\t var sortIsDefault = function sortIsDefault(track) {\n\t return Number((_this4.captions.meta.get(track) || {}).default);\n\t };\n\n\t var sorted = Array.from(tracks).sort(function (a, b) {\n\t return sortIsDefault(b) - sortIsDefault(a);\n\t });\n\t var track;\n\t languages.every(function (language) {\n\t track = sorted.find(function (t) {\n\t return t.language === language;\n\t });\n\t return !track; // Break iteration if there is a match\n\t }); // If no match is found but is required, get first\n\n\t return track || (force ? sorted[0] : undefined);\n\t },\n\t // Get the current track\n\t getCurrentTrack: function getCurrentTrack() {\n\t return captions.getTracks.call(this)[this.currentTrack];\n\t },\n\t // Get UI label for track\n\t getLabel: function getLabel(track) {\n\t var currentTrack = track;\n\n\t if (!is$2.track(currentTrack) && support.textTracks && this.captions.toggled) {\n\t currentTrack = captions.getCurrentTrack.call(this);\n\t }\n\n\t if (is$2.track(currentTrack)) {\n\t if (!is$2.empty(currentTrack.label)) {\n\t return currentTrack.label;\n\t }\n\n\t if (!is$2.empty(currentTrack.language)) {\n\t return track.language.toUpperCase();\n\t }\n\n\t return i18n.get('enabled', this.config);\n\t }\n\n\t return i18n.get('disabled', this.config);\n\t },\n\t // Update captions using current track's active cues\n\t // Also optional array argument in case there isn't any track (ex: vimeo)\n\t updateCues: function updateCues(input) {\n\t // Requires UI\n\t if (!this.supported.ui) {\n\t return;\n\t }\n\n\t if (!is$2.element(this.elements.captions)) {\n\t this.debug.warn('No captions element to render to');\n\t return;\n\t } // Only accept array or empty input\n\n\n\t if (!is$2.nullOrUndefined(input) && !Array.isArray(input)) {\n\t this.debug.warn('updateCues: Invalid input', input);\n\t return;\n\t }\n\n\t var cues = input; // Get cues from track\n\n\t if (!cues) {\n\t var track = captions.getCurrentTrack.call(this);\n\t cues = Array.from((track || {}).activeCues || []).map(function (cue) {\n\t return cue.getCueAsHTML();\n\t }).map(getHTML);\n\t } // Set new caption text\n\n\n\t var content = cues.map(function (cueText) {\n\t return cueText.trim();\n\t }).join('\\n');\n\t var changed = content !== this.elements.captions.innerHTML;\n\n\t if (changed) {\n\t // Empty the container and create a new child element\n\t emptyElement(this.elements.captions);\n\t var caption = createElement$1('span', getAttributesFromSelector(this.config.selectors.caption));\n\t caption.innerHTML = content;\n\t this.elements.captions.appendChild(caption); // Trigger event\n\n\t triggerEvent.call(this, this.media, 'cuechange');\n\t }\n\t }\n\t};\n\n\t// ==========================================================================\n\t// Plyr default config\n\t// ==========================================================================\n\tvar defaults$2 = {\n\t // Disable\n\t enabled: true,\n\t // Custom media title\n\t title: '',\n\t // Logging to console\n\t debug: false,\n\t // Auto play (if supported)\n\t autoplay: false,\n\t // Only allow one media playing at once (vimeo only)\n\t autopause: true,\n\t // Allow inline playback on iOS (this effects YouTube/Vimeo - HTML5 requires the attribute present)\n\t // TODO: Remove iosNative fullscreen option in favour of this (logic needs work)\n\t playsinline: true,\n\t // Default time to skip when rewind/fast forward\n\t seekTime: 10,\n\t // Default volume\n\t volume: 1,\n\t muted: false,\n\t // Pass a custom duration\n\t duration: null,\n\t // Display the media duration on load in the current time position\n\t // If you have opted to display both duration and currentTime, this is ignored\n\t displayDuration: true,\n\t // Invert the current time to be a countdown\n\t invertTime: true,\n\t // Clicking the currentTime inverts it's value to show time left rather than elapsed\n\t toggleInvert: true,\n\t // Force an aspect ratio\n\t // The format must be `'w:h'` (e.g. `'16:9'`)\n\t ratio: null,\n\t // Click video container to play/pause\n\t clickToPlay: true,\n\t // Auto hide the controls\n\t hideControls: true,\n\t // Reset to start when playback ended\n\t resetOnEnd: false,\n\t // Disable the standard context menu\n\t disableContextMenu: true,\n\t // Sprite (for icons)\n\t loadSprite: true,\n\t iconPrefix: 'plyr',\n\t iconUrl: 'https://cdn.plyr.io/3.6.1/plyr.svg',\n\t // Blank video (used to prevent errors on source change)\n\t blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\t // Quality default\n\t quality: {\n\t default: 576,\n\t // The options to display in the UI, if available for the source media\n\t options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n\t forced: false,\n\t onChange: null\n\t },\n\t // Set loops\n\t loop: {\n\t active: false // start: null,\n\t // end: null,\n\n\t },\n\t // Speed default and options to display\n\t speed: {\n\t selected: 1,\n\t // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n\t options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4]\n\t },\n\t // Keyboard shortcut settings\n\t keyboard: {\n\t focused: true,\n\t global: false\n\t },\n\t // Display tooltips\n\t tooltips: {\n\t controls: false,\n\t seek: true\n\t },\n\t // Captions settings\n\t captions: {\n\t active: false,\n\t language: 'auto',\n\t // Listen to new tracks added after Plyr is initialized.\n\t // This is needed for streaming captions, but may result in unselectable options\n\t update: false\n\t },\n\t // Fullscreen settings\n\t fullscreen: {\n\t enabled: true,\n\t // Allow fullscreen?\n\t fallback: true,\n\t // Fallback using full viewport/window\n\t iosNative: false // Use the native fullscreen in iOS (disables custom controls)\n\t // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode\n\t // Non-ancestors of the player element will be ignored\n\t // container: null, // defaults to the player element\n\n\t },\n\t // Local storage\n\t storage: {\n\t enabled: true,\n\t key: 'plyr'\n\t },\n\t // Default controls\n\t controls: ['play-large', // 'restart',\n\t // 'rewind',\n\t 'play', // 'fast-forward',\n\t 'progress', 'current-time', // 'duration',\n\t 'mute', 'volume', 'captions', 'settings', 'pip', 'airplay', // 'download',\n\t 'fullscreen'],\n\t settings: ['captions', 'quality', 'speed'],\n\t // Localisation\n\t i18n: {\n\t restart: 'Restart',\n\t rewind: 'Rewind {seektime}s',\n\t play: 'Play',\n\t pause: 'Pause',\n\t fastForward: 'Forward {seektime}s',\n\t seek: 'Seek',\n\t seekLabel: '{currentTime} of {duration}',\n\t played: 'Played',\n\t buffered: 'Buffered',\n\t currentTime: 'Current time',\n\t duration: 'Duration',\n\t volume: 'Volume',\n\t mute: 'Mute',\n\t unmute: 'Unmute',\n\t enableCaptions: 'Enable captions',\n\t disableCaptions: 'Disable captions',\n\t download: 'Download',\n\t enterFullscreen: 'Enter fullscreen',\n\t exitFullscreen: 'Exit fullscreen',\n\t frameTitle: 'Player for {title}',\n\t captions: 'Captions',\n\t settings: 'Settings',\n\t pip: 'PIP',\n\t menuBack: 'Go back to previous menu',\n\t speed: 'Speed',\n\t normal: 'Normal',\n\t quality: 'Quality',\n\t loop: 'Loop',\n\t start: 'Start',\n\t end: 'End',\n\t all: 'All',\n\t reset: 'Reset',\n\t disabled: 'Disabled',\n\t enabled: 'Enabled',\n\t advertisement: 'Ad',\n\t qualityBadge: {\n\t 2160: '4K',\n\t 1440: 'HD',\n\t 1080: 'HD',\n\t 720: 'HD',\n\t 576: 'SD',\n\t 480: 'SD'\n\t }\n\t },\n\t // URLs\n\t urls: {\n\t download: null,\n\t vimeo: {\n\t sdk: 'https://player.vimeo.com/api/player.js',\n\t iframe: 'https://player.vimeo.com/video/{0}?{1}',\n\t api: 'https://vimeo.com/api/v2/video/{0}.json'\n\t },\n\t youtube: {\n\t sdk: 'https://www.youtube.com/iframe_api',\n\t api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}'\n\t },\n\t googleIMA: {\n\t sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js'\n\t }\n\t },\n\t // Custom control listeners\n\t listeners: {\n\t seek: null,\n\t play: null,\n\t pause: null,\n\t restart: null,\n\t rewind: null,\n\t fastForward: null,\n\t mute: null,\n\t volume: null,\n\t captions: null,\n\t download: null,\n\t fullscreen: null,\n\t pip: null,\n\t airplay: null,\n\t speed: null,\n\t quality: null,\n\t loop: null,\n\t language: null\n\t },\n\t // Events to watch and bubble\n\t events: [// Events to watch on HTML5 media elements and bubble\n\t // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n\t 'ended', 'progress', 'stalled', 'playing', 'waiting', 'canplay', 'canplaythrough', 'loadstart', 'loadeddata', 'loadedmetadata', 'timeupdate', 'volumechange', 'play', 'pause', 'error', 'seeking', 'seeked', 'emptied', 'ratechange', 'cuechange', // Custom events\n\t 'download', 'enterfullscreen', 'exitfullscreen', 'captionsenabled', 'captionsdisabled', 'languagechange', 'controlshidden', 'controlsshown', 'ready', // YouTube\n\t 'statechange', // Quality\n\t 'qualitychange', // Ads\n\t 'adsloaded', 'adscontentpause', 'adscontentresume', 'adstarted', 'adsmidpoint', 'adscomplete', 'adsallcomplete', 'adsimpression', 'adsclick'],\n\t // Selectors\n\t // Change these to match your template if using custom HTML\n\t selectors: {\n\t editable: 'input, textarea, select, [contenteditable]',\n\t container: '.plyr',\n\t controls: {\n\t container: null,\n\t wrapper: '.plyr__controls'\n\t },\n\t labels: '[data-plyr]',\n\t buttons: {\n\t play: '[data-plyr=\"play\"]',\n\t pause: '[data-plyr=\"pause\"]',\n\t restart: '[data-plyr=\"restart\"]',\n\t rewind: '[data-plyr=\"rewind\"]',\n\t fastForward: '[data-plyr=\"fast-forward\"]',\n\t mute: '[data-plyr=\"mute\"]',\n\t captions: '[data-plyr=\"captions\"]',\n\t download: '[data-plyr=\"download\"]',\n\t fullscreen: '[data-plyr=\"fullscreen\"]',\n\t pip: '[data-plyr=\"pip\"]',\n\t airplay: '[data-plyr=\"airplay\"]',\n\t settings: '[data-plyr=\"settings\"]',\n\t loop: '[data-plyr=\"loop\"]'\n\t },\n\t inputs: {\n\t seek: '[data-plyr=\"seek\"]',\n\t volume: '[data-plyr=\"volume\"]',\n\t speed: '[data-plyr=\"speed\"]',\n\t language: '[data-plyr=\"language\"]',\n\t quality: '[data-plyr=\"quality\"]'\n\t },\n\t display: {\n\t currentTime: '.plyr__time--current',\n\t duration: '.plyr__time--duration',\n\t buffer: '.plyr__progress__buffer',\n\t loop: '.plyr__progress__loop',\n\t // Used later\n\t volume: '.plyr__volume--display'\n\t },\n\t progress: '.plyr__progress',\n\t captions: '.plyr__captions',\n\t caption: '.plyr__caption'\n\t },\n\t // Class hooks added to the player in different states\n\t classNames: {\n\t type: 'plyr--{0}',\n\t provider: 'plyr--{0}',\n\t video: 'plyr__video-wrapper',\n\t embed: 'plyr__video-embed',\n\t videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n\t embedContainer: 'plyr__video-embed__container',\n\t poster: 'plyr__poster',\n\t posterEnabled: 'plyr__poster-enabled',\n\t ads: 'plyr__ads',\n\t control: 'plyr__control',\n\t controlPressed: 'plyr__control--pressed',\n\t playing: 'plyr--playing',\n\t paused: 'plyr--paused',\n\t stopped: 'plyr--stopped',\n\t loading: 'plyr--loading',\n\t hover: 'plyr--hover',\n\t tooltip: 'plyr__tooltip',\n\t cues: 'plyr__cues',\n\t hidden: 'plyr__sr-only',\n\t hideControls: 'plyr--hide-controls',\n\t isIos: 'plyr--is-ios',\n\t isTouch: 'plyr--is-touch',\n\t uiSupported: 'plyr--full-ui',\n\t noTransition: 'plyr--no-transition',\n\t display: {\n\t time: 'plyr__time'\n\t },\n\t menu: {\n\t value: 'plyr__menu__value',\n\t badge: 'plyr__badge',\n\t open: 'plyr--menu-open'\n\t },\n\t captions: {\n\t enabled: 'plyr--captions-enabled',\n\t active: 'plyr--captions-active'\n\t },\n\t fullscreen: {\n\t enabled: 'plyr--fullscreen-enabled',\n\t fallback: 'plyr--fullscreen-fallback'\n\t },\n\t pip: {\n\t supported: 'plyr--pip-supported',\n\t active: 'plyr--pip-active'\n\t },\n\t airplay: {\n\t supported: 'plyr--airplay-supported',\n\t active: 'plyr--airplay-active'\n\t },\n\t tabFocus: 'plyr__tab-focus',\n\t previewThumbnails: {\n\t // Tooltip thumbs\n\t thumbContainer: 'plyr__preview-thumb',\n\t thumbContainerShown: 'plyr__preview-thumb--is-shown',\n\t imageContainer: 'plyr__preview-thumb__image-container',\n\t timeContainer: 'plyr__preview-thumb__time-container',\n\t // Scrubbing\n\t scrubbingContainer: 'plyr__preview-scrubbing',\n\t scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown'\n\t }\n\t },\n\t // Embed attributes\n\t attributes: {\n\t embed: {\n\t provider: 'data-plyr-provider',\n\t id: 'data-plyr-embed-id'\n\t }\n\t },\n\t // Advertisements plugin\n\t // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n\t ads: {\n\t enabled: false,\n\t publisherId: '',\n\t tagUrl: ''\n\t },\n\t // Preview Thumbnails plugin\n\t previewThumbnails: {\n\t enabled: false,\n\t src: ''\n\t },\n\t // Vimeo plugin\n\t vimeo: {\n\t byline: false,\n\t portrait: false,\n\t title: false,\n\t speed: true,\n\t transparent: false,\n\t // Whether the owner of the video has a Pro or Business account\n\t // (which allows us to properly hide controls without CSS hacks, etc)\n\t premium: false,\n\t // Custom settings from Plyr\n\t referrerPolicy: null // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n\n\t },\n\t // YouTube plugin\n\t youtube: {\n\t noCookie: true,\n\t // Whether to use an alternative version of YouTube without cookies\n\t rel: 0,\n\t // No related vids\n\t showinfo: 0,\n\t // Hide info\n\t iv_load_policy: 3,\n\t // Hide annotations\n\t modestbranding: 1 // Hide logos as much as possible (they still show one in the corner when paused)\n\n\t }\n\t};\n\n\t// ==========================================================================\n\t// Plyr states\n\t// ==========================================================================\n\tvar pip = {\n\t active: 'picture-in-picture',\n\t inactive: 'inline'\n\t};\n\n\t// ==========================================================================\n\t// Plyr supported types and providers\n\t// ==========================================================================\n\tvar providers = {\n\t html5: 'html5',\n\t youtube: 'youtube',\n\t vimeo: 'vimeo'\n\t};\n\tvar types = {\n\t audio: 'audio',\n\t video: 'video'\n\t};\n\t/**\n\t * Get provider by URL\n\t * @param {String} url\n\t */\n\n\tfunction getProviderByUrl(url) {\n\t // YouTube\n\t if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n\t return providers.youtube;\n\t } // Vimeo\n\n\n\t if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n\t return providers.vimeo;\n\t }\n\n\t return null;\n\t}\n\n\t// ==========================================================================\n\t// Console wrapper\n\t// ==========================================================================\n\tvar noop$1 = function noop() {};\n\n\tvar Console$1 = /*#__PURE__*/function () {\n\t function Console() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t _classCallCheck(this, Console);\n\n\t this.enabled = window.console && enabled;\n\n\t if (this.enabled) {\n\t this.log('Debugging enabled');\n\t }\n\t }\n\n\t _createClass(Console, [{\n\t key: \"log\",\n\t get: function get() {\n\t // eslint-disable-next-line no-console\n\t return this.enabled ? Function.prototype.bind.call(console.log, console) : noop$1;\n\t }\n\t }, {\n\t key: \"warn\",\n\t get: function get() {\n\t // eslint-disable-next-line no-console\n\t return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop$1;\n\t }\n\t }, {\n\t key: \"error\",\n\t get: function get() {\n\t // eslint-disable-next-line no-console\n\t return this.enabled ? Function.prototype.bind.call(console.error, console) : noop$1;\n\t }\n\t }]);\n\n\t return Console;\n\t}();\n\n\tvar Fullscreen = /*#__PURE__*/function () {\n\t function Fullscreen(player) {\n\t var _this = this;\n\n\t _classCallCheck(this, Fullscreen);\n\n\t // Keep reference to parent\n\t this.player = player; // Get prefix\n\n\t this.prefix = Fullscreen.prefix;\n\t this.property = Fullscreen.property; // Scroll position\n\n\t this.scrollPosition = {\n\t x: 0,\n\t y: 0\n\t }; // Force the use of 'full window/browser' rather than fullscreen\n\n\t this.forceFallback = player.config.fullscreen.fallback === 'force'; // Get the fullscreen element\n\t // Checks container is an ancestor, defaults to null\n\n\t this.player.elements.fullscreen = player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container); // Register event listeners\n\t // Handle event (incase user presses escape etc)\n\n\t on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : \"\".concat(this.prefix, \"fullscreenchange\"), function () {\n\t // TODO: Filter for target??\n\t _this.onChange();\n\t }); // Fullscreen toggle on double click\n\n\t on.call(this.player, this.player.elements.container, 'dblclick', function (event) {\n\t // Ignore double click in controls\n\t if (is$2.element(_this.player.elements.controls) && _this.player.elements.controls.contains(event.target)) {\n\t return;\n\t }\n\n\t _this.toggle();\n\t }); // Tap focus when in fullscreen\n\n\t on.call(this, this.player.elements.container, 'keydown', function (event) {\n\t return _this.trapFocus(event);\n\t }); // Update the UI\n\n\t this.update();\n\t } // Determine if native supported\n\n\n\t _createClass(Fullscreen, [{\n\t key: \"onChange\",\n\t value: function onChange() {\n\t if (!this.enabled) {\n\t return;\n\t } // Update toggle button\n\n\n\t var button = this.player.elements.buttons.fullscreen;\n\n\t if (is$2.element(button)) {\n\t button.pressed = this.active;\n\t } // Trigger an event\n\n\n\t triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n\t }\n\t }, {\n\t key: \"toggleFallback\",\n\t value: function toggleFallback() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t // Store or restore scroll position\n\t if (toggle) {\n\t this.scrollPosition = {\n\t x: window.scrollX || 0,\n\t y: window.scrollY || 0\n\t };\n\t } else {\n\t window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n\t } // Toggle scroll\n\n\n\t document.body.style.overflow = toggle ? 'hidden' : ''; // Toggle class hook\n\n\t toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle); // Force full viewport on iPhone X+\n\n\t if (browser.isIos) {\n\t var viewport = document.head.querySelector('meta[name=\"viewport\"]');\n\t var property = 'viewport-fit=cover'; // Inject the viewport meta if required\n\n\t if (!viewport) {\n\t viewport = document.createElement('meta');\n\t viewport.setAttribute('name', 'viewport');\n\t } // Check if the property already exists\n\n\n\t var hasProperty = is$2.string(viewport.content) && viewport.content.includes(property);\n\n\t if (toggle) {\n\t this.cleanupViewport = !hasProperty;\n\n\t if (!hasProperty) {\n\t viewport.content += \",\".concat(property);\n\t }\n\t } else if (this.cleanupViewport) {\n\t viewport.content = viewport.content.split(',').filter(function (part) {\n\t return part.trim() !== property;\n\t }).join(',');\n\t }\n\t } // Toggle button and fire events\n\n\n\t this.onChange();\n\t } // Trap focus inside container\n\n\t }, {\n\t key: \"trapFocus\",\n\t value: function trapFocus(event) {\n\t // Bail if iOS, not active, not the tab key\n\t if (browser.isIos || !this.active || event.key !== 'Tab' || event.keyCode !== 9) {\n\t return;\n\t } // Get the current focused element\n\n\n\t var focused = document.activeElement;\n\t var focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n\n\t var _focusable = _slicedToArray(focusable, 1),\n\t first = _focusable[0];\n\n\t var last = focusable[focusable.length - 1];\n\n\t if (focused === last && !event.shiftKey) {\n\t // Move focus to first element that can be tabbed if Shift isn't used\n\t first.focus();\n\t event.preventDefault();\n\t } else if (focused === first && event.shiftKey) {\n\t // Move focus to last element that can be tabbed if Shift is used\n\t last.focus();\n\t event.preventDefault();\n\t }\n\t } // Update UI\n\n\t }, {\n\t key: \"update\",\n\t value: function update() {\n\t if (this.enabled) {\n\t var mode;\n\n\t if (this.forceFallback) {\n\t mode = 'Fallback (forced)';\n\t } else if (Fullscreen.native) {\n\t mode = 'Native';\n\t } else {\n\t mode = 'Fallback';\n\t }\n\n\t this.player.debug.log(\"\".concat(mode, \" fullscreen enabled\"));\n\t } else {\n\t this.player.debug.log('Fullscreen not supported and fallback disabled');\n\t } // Add styling hook to show button\n\n\n\t toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n\t } // Make an element fullscreen\n\n\t }, {\n\t key: \"enter\",\n\t value: function enter() {\n\t if (!this.enabled) {\n\t return;\n\t } // iOS native fullscreen doesn't need the request step\n\n\n\t if (browser.isIos && this.player.config.fullscreen.iosNative) {\n\t this.target.webkitEnterFullscreen();\n\t } else if (!Fullscreen.native || this.forceFallback) {\n\t this.toggleFallback(true);\n\t } else if (!this.prefix) {\n\t this.target.requestFullscreen({\n\t navigationUI: 'hide'\n\t });\n\t } else if (!is$2.empty(this.prefix)) {\n\t this.target[\"\".concat(this.prefix, \"Request\").concat(this.property)]();\n\t }\n\t } // Bail from fullscreen\n\n\t }, {\n\t key: \"exit\",\n\t value: function exit() {\n\t if (!this.enabled) {\n\t return;\n\t } // iOS native fullscreen\n\n\n\t if (browser.isIos && this.player.config.fullscreen.iosNative) {\n\t this.target.webkitExitFullscreen();\n\t silencePromise(this.player.play());\n\t } else if (!Fullscreen.native || this.forceFallback) {\n\t this.toggleFallback(false);\n\t } else if (!this.prefix) {\n\t (document.cancelFullScreen || document.exitFullscreen).call(document);\n\t } else if (!is$2.empty(this.prefix)) {\n\t var action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n\t document[\"\".concat(this.prefix).concat(action).concat(this.property)]();\n\t }\n\t } // Toggle state\n\n\t }, {\n\t key: \"toggle\",\n\t value: function toggle() {\n\t if (!this.active) {\n\t this.enter();\n\t } else {\n\t this.exit();\n\t }\n\t }\n\t }, {\n\t key: \"usingNative\",\n\t // If we're actually using native\n\t get: function get() {\n\t return Fullscreen.native && !this.forceFallback;\n\t } // Get the prefix for handlers\n\n\t }, {\n\t key: \"enabled\",\n\t // Determine if fullscreen is enabled\n\t get: function get() {\n\t return (Fullscreen.native || this.player.config.fullscreen.fallback) && this.player.config.fullscreen.enabled && this.player.supported.ui && this.player.isVideo;\n\t } // Get active state\n\n\t }, {\n\t key: \"active\",\n\t get: function get() {\n\t if (!this.enabled) {\n\t return false;\n\t } // Fallback using classname\n\n\n\t if (!Fullscreen.native || this.forceFallback) {\n\t return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n\t }\n\n\t var element = !this.prefix ? document.fullscreenElement : document[\"\".concat(this.prefix).concat(this.property, \"Element\")];\n\t return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n\t } // Get target element\n\n\t }, {\n\t key: \"target\",\n\t get: function get() {\n\t return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.fullscreen || this.player.elements.container;\n\t }\n\t }], [{\n\t key: \"native\",\n\t get: function get() {\n\t return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n\t }\n\t }, {\n\t key: \"prefix\",\n\t get: function get() {\n\t // No prefix\n\t if (is$2.function(document.exitFullscreen)) {\n\t return '';\n\t } // Check for fullscreen support by vendor prefix\n\n\n\t var value = '';\n\t var prefixes = ['webkit', 'moz', 'ms'];\n\t prefixes.some(function (pre) {\n\t if (is$2.function(document[\"\".concat(pre, \"ExitFullscreen\")]) || is$2.function(document[\"\".concat(pre, \"CancelFullScreen\")])) {\n\t value = pre;\n\t return true;\n\t }\n\n\t return false;\n\t });\n\t return value;\n\t }\n\t }, {\n\t key: \"property\",\n\t get: function get() {\n\t return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n\t }\n\t }]);\n\n\t return Fullscreen;\n\t}();\n\n\t// `Math.sign` method implementation\n\t// https://tc39.github.io/ecma262/#sec-math.sign\n\tvar mathSign = Math.sign || function sign(x) {\n\t // eslint-disable-next-line no-self-compare\n\t return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n\t};\n\n\t// `Math.sign` method\n\t// https://tc39.github.io/ecma262/#sec-math.sign\n\t_export$1({ target: 'Math', stat: true }, {\n\t sign: mathSign\n\t});\n\n\t// ==========================================================================\n\t// Load image avoiding xhr/fetch CORS issues\n\t// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n\t// By default it checks if it is at least 1px, but you can add a second argument to change this\n\t// ==========================================================================\n\tfunction loadImage(src) {\n\t var minWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\t return new Promise(function (resolve, reject) {\n\t var image = new Image();\n\n\t var handler = function handler() {\n\t delete image.onload;\n\t delete image.onerror;\n\t (image.naturalWidth >= minWidth ? resolve : reject)(image);\n\t };\n\n\t Object.assign(image, {\n\t onload: handler,\n\t onerror: handler,\n\t src: src\n\t });\n\t });\n\t}\n\n\tvar ui = {\n\t addStyleHook: function addStyleHook() {\n\t toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n\t toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n\t },\n\t // Toggle native HTML5 media controls\n\t toggleNativeControls: function toggleNativeControls() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t if (toggle && this.isHTML5) {\n\t this.media.setAttribute('controls', '');\n\t } else {\n\t this.media.removeAttribute('controls');\n\t }\n\t },\n\t // Setup the UI\n\t build: function build() {\n\t var _this = this;\n\n\t // Re-attach media element listeners\n\t // TODO: Use event bubbling?\n\t this.listeners.media(); // Don't setup interface if no support\n\n\t if (!this.supported.ui) {\n\t this.debug.warn(\"Basic support only for \".concat(this.provider, \" \").concat(this.type)); // Restore native controls\n\n\t ui.toggleNativeControls.call(this, true); // Bail\n\n\t return;\n\t } // Inject custom controls if not present\n\n\n\t if (!is$2.element(this.elements.controls)) {\n\t // Inject custom controls\n\t controls.inject.call(this); // Re-attach control listeners\n\n\t this.listeners.controls();\n\t } // Remove native controls\n\n\n\t ui.toggleNativeControls.call(this); // Setup captions for HTML5\n\n\t if (this.isHTML5) {\n\t captions.setup.call(this);\n\t } // Reset volume\n\n\n\t this.volume = null; // Reset mute state\n\n\t this.muted = null; // Reset loop state\n\n\t this.loop = null; // Reset quality setting\n\n\t this.quality = null; // Reset speed\n\n\t this.speed = null; // Reset volume display\n\n\t controls.updateVolume.call(this); // Reset time display\n\n\t controls.timeUpdate.call(this); // Update the UI\n\n\t ui.checkPlaying.call(this); // Check for picture-in-picture support\n\n\t toggleClass(this.elements.container, this.config.classNames.pip.supported, support.pip && this.isHTML5 && this.isVideo); // Check for airplay support\n\n\t toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5); // Add iOS class\n\n\t toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos); // Add touch class\n\n\t toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch); // Ready for API calls\n\n\t this.ready = true; // Ready event at end of execution stack\n\n\t setTimeout(function () {\n\t triggerEvent.call(_this, _this.media, 'ready');\n\t }, 0); // Set the title\n\n\t ui.setTitle.call(this); // Assure the poster image is set, if the property was added before the element was created\n\n\t if (this.poster) {\n\t ui.setPoster.call(this, this.poster, false).catch(function () {});\n\t } // Manually set the duration if user has overridden it.\n\t // The event listeners for it doesn't get called if preload is disabled (#701)\n\n\n\t if (this.config.duration) {\n\t controls.durationUpdate.call(this);\n\t }\n\t },\n\t // Setup aria attribute for play and iframe title\n\t setTitle: function setTitle() {\n\t // Find the current text\n\t var label = i18n.get('play', this.config); // If there's a media title set, use that for the label\n\n\t if (is$2.string(this.config.title) && !is$2.empty(this.config.title)) {\n\t label += \", \".concat(this.config.title);\n\t } // If there's a play button, set label\n\n\n\t Array.from(this.elements.buttons.play || []).forEach(function (button) {\n\t button.setAttribute('aria-label', label);\n\t }); // Set iframe title\n\t // https://github.com/sampotts/plyr/issues/124\n\n\t if (this.isEmbed) {\n\t var iframe = getElement.call(this, 'iframe');\n\n\t if (!is$2.element(iframe)) {\n\t return;\n\t } // Default to media type\n\n\n\t var title = !is$2.empty(this.config.title) ? this.config.title : 'video';\n\t var format = i18n.get('frameTitle', this.config);\n\t iframe.setAttribute('title', format.replace('{title}', title));\n\t }\n\t },\n\t // Toggle poster\n\t togglePoster: function togglePoster(enable) {\n\t toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n\t },\n\t // Set the poster image (async)\n\t // Used internally for the poster setter, with the passive option forced to false\n\t setPoster: function setPoster(poster) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t // Don't override if call is passive\n\t if (passive && this.poster) {\n\t return Promise.reject(new Error('Poster already set'));\n\t } // Set property synchronously to respect the call order\n\n\n\t this.media.setAttribute('data-poster', poster); // Wait until ui is ready\n\n\t return ready.call(this) // Load image\n\t .then(function () {\n\t return loadImage(poster);\n\t }).catch(function (err) {\n\t // Hide poster on error unless it's been set by another call\n\t if (poster === _this2.poster) {\n\t ui.togglePoster.call(_this2, false);\n\t } // Rethrow\n\n\n\t throw err;\n\t }).then(function () {\n\t // Prevent race conditions\n\t if (poster !== _this2.poster) {\n\t throw new Error('setPoster cancelled by later call to setPoster');\n\t }\n\t }).then(function () {\n\t Object.assign(_this2.elements.poster.style, {\n\t backgroundImage: \"url('\".concat(poster, \"')\"),\n\t // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n\t backgroundSize: ''\n\t });\n\t ui.togglePoster.call(_this2, true);\n\t return poster;\n\t });\n\t },\n\t // Check playing state\n\t checkPlaying: function checkPlaying(event) {\n\t var _this3 = this;\n\n\t // Class hooks\n\t toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n\t toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n\t toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped); // Set state\n\n\t Array.from(this.elements.buttons.play || []).forEach(function (target) {\n\t Object.assign(target, {\n\t pressed: _this3.playing\n\t });\n\t target.setAttribute('aria-label', i18n.get(_this3.playing ? 'pause' : 'play', _this3.config));\n\t }); // Only update controls on non timeupdate events\n\n\t if (is$2.event(event) && event.type === 'timeupdate') {\n\t return;\n\t } // Toggle controls\n\n\n\t ui.toggleControls.call(this);\n\t },\n\t // Check if media is loading\n\t checkLoading: function checkLoading(event) {\n\t var _this4 = this;\n\n\t this.loading = ['stalled', 'waiting'].includes(event.type); // Clear timer\n\n\t clearTimeout(this.timers.loading); // Timer to prevent flicker when seeking\n\n\t this.timers.loading = setTimeout(function () {\n\t // Update progress bar loading class state\n\t toggleClass(_this4.elements.container, _this4.config.classNames.loading, _this4.loading); // Update controls visibility\n\n\t ui.toggleControls.call(_this4);\n\t }, this.loading ? 250 : 0);\n\t },\n\t // Toggle controls based on state and `force` argument\n\t toggleControls: function toggleControls(force) {\n\t var controlsElement = this.elements.controls;\n\n\t if (controlsElement && this.config.hideControls) {\n\t // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n\t var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n\n\t this.toggleControls(Boolean(force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek));\n\t }\n\t },\n\t // Migrate any custom properties from the media to the parent\n\t migrateStyles: function migrateStyles() {\n\t var _this5 = this;\n\n\t // Loop through values (as they are the keys when the object is spread 🤔)\n\t Object.values(_objectSpread2({}, this.media.style)) // We're only fussed about Plyr specific properties\n\t .filter(function (key) {\n\t return !is$2.empty(key) && key.startsWith('--plyr');\n\t }).forEach(function (key) {\n\t // Set on the container\n\t _this5.elements.container.style.setProperty(key, _this5.media.style.getPropertyValue(key)); // Clean up from media element\n\n\n\t _this5.media.style.removeProperty(key);\n\t }); // Remove attribute if empty\n\n\t if (is$2.empty(this.media.style)) {\n\t this.media.removeAttribute('style');\n\t }\n\t }\n\t};\n\n\tvar Listeners = /*#__PURE__*/function () {\n\t function Listeners(player) {\n\t _classCallCheck(this, Listeners);\n\n\t this.player = player;\n\t this.lastKey = null;\n\t this.focusTimer = null;\n\t this.lastKeyDown = null;\n\t this.handleKey = this.handleKey.bind(this);\n\t this.toggleMenu = this.toggleMenu.bind(this);\n\t this.setTabFocus = this.setTabFocus.bind(this);\n\t this.firstTouch = this.firstTouch.bind(this);\n\t } // Handle key presses\n\n\n\t _createClass(Listeners, [{\n\t key: \"handleKey\",\n\t value: function handleKey(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var pressed = event.type === 'keydown';\n\t var repeat = pressed && code === this.lastKey; // Bail if a modifier key is set\n\n\t if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n\t return;\n\t } // If the event is bubbled from the media element\n\t // Firefox doesn't get the keycode for whatever reason\n\n\n\t if (!is$2.number(code)) {\n\t return;\n\t } // Seek by the number keys\n\n\n\t var seekByKey = function seekByKey() {\n\t // Divide the max duration into 10th's and times by the number value\n\t player.currentTime = player.duration / 10 * (code - 48);\n\t }; // Handle the key on keydown\n\t // Reset on keyup\n\n\n\t if (pressed) {\n\t // Check focused element\n\t // and if the focused element is not editable (e.g. text input)\n\t // and any that accept key input http://webaim.org/techniques/keyboard/\n\t var focused = document.activeElement;\n\n\t if (is$2.element(focused)) {\n\t var editable = player.config.selectors.editable;\n\t var seek = elements.inputs.seek;\n\n\t if (focused !== seek && matches$2(focused, editable)) {\n\t return;\n\t }\n\n\t if (event.which === 32 && matches$2(focused, 'button, [role^=\"menuitem\"]')) {\n\t return;\n\t }\n\t } // Which keycodes should we prevent default\n\n\n\t var preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79]; // If the code is found prevent default (e.g. prevent scrolling for arrows)\n\n\t if (preventDefault.includes(code)) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t }\n\n\t switch (code) {\n\t case 48:\n\t case 49:\n\t case 50:\n\t case 51:\n\t case 52:\n\t case 53:\n\t case 54:\n\t case 55:\n\t case 56:\n\t case 57:\n\t // 0-9\n\t if (!repeat) {\n\t seekByKey();\n\t }\n\n\t break;\n\n\t case 32:\n\t case 75:\n\t // Space and K key\n\t if (!repeat) {\n\t silencePromise(player.togglePlay());\n\t }\n\n\t break;\n\n\t case 38:\n\t // Arrow up\n\t player.increaseVolume(0.1);\n\t break;\n\n\t case 40:\n\t // Arrow down\n\t player.decreaseVolume(0.1);\n\t break;\n\n\t case 77:\n\t // M key\n\t if (!repeat) {\n\t player.muted = !player.muted;\n\t }\n\n\t break;\n\n\t case 39:\n\t // Arrow forward\n\t player.forward();\n\t break;\n\n\t case 37:\n\t // Arrow back\n\t player.rewind();\n\t break;\n\n\t case 70:\n\t // F key\n\t player.fullscreen.toggle();\n\t break;\n\n\t case 67:\n\t // C key\n\t if (!repeat) {\n\t player.toggleCaptions();\n\t }\n\n\t break;\n\n\t case 76:\n\t // L key\n\t player.loop = !player.loop;\n\t break;\n\t } // Escape is handle natively when in full screen\n\t // So we only need to worry about non native\n\n\n\t if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n\t player.fullscreen.toggle();\n\t } // Store last code for next cycle\n\n\n\t this.lastKey = code;\n\t } else {\n\t this.lastKey = null;\n\t }\n\t } // Toggle menu\n\n\t }, {\n\t key: \"toggleMenu\",\n\t value: function toggleMenu(event) {\n\t controls.toggleMenu.call(this.player, event);\n\t } // Device is touch enabled\n\n\t }, {\n\t key: \"firstTouch\",\n\t value: function firstTouch() {\n\t var player = this.player;\n\t var elements = player.elements;\n\t player.touch = true; // Add touch class\n\n\t toggleClass(elements.container, player.config.classNames.isTouch, true);\n\t }\n\t }, {\n\t key: \"setTabFocus\",\n\t value: function setTabFocus(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t clearTimeout(this.focusTimer); // Ignore any key other than tab\n\n\t if (event.type === 'keydown' && event.which !== 9) {\n\t return;\n\t } // Store reference to event timeStamp\n\n\n\t if (event.type === 'keydown') {\n\t this.lastKeyDown = event.timeStamp;\n\t } // Remove current classes\n\n\n\t var removeCurrent = function removeCurrent() {\n\t var className = player.config.classNames.tabFocus;\n\t var current = getElements.call(player, \".\".concat(className));\n\t toggleClass(current, className, false);\n\t }; // Determine if a key was pressed to trigger this event\n\n\n\t var wasKeyDown = event.timeStamp - this.lastKeyDown <= 20; // Ignore focus events if a key was pressed prior\n\n\t if (event.type === 'focus' && !wasKeyDown) {\n\t return;\n\t } // Remove all current\n\n\n\t removeCurrent(); // Delay the adding of classname until the focus has changed\n\t // This event fires before the focusin event\n\n\t if (event.type !== 'focusout') {\n\t this.focusTimer = setTimeout(function () {\n\t var focused = document.activeElement; // Ignore if current focus element isn't inside the player\n\n\t if (!elements.container.contains(focused)) {\n\t return;\n\t }\n\n\t toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n\t }, 10);\n\t }\n\t } // Global window & document listeners\n\n\t }, {\n\t key: \"global\",\n\t value: function global() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t var player = this.player; // Keyboard shortcuts\n\n\t if (player.config.keyboard.global) {\n\t toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n\t } // Click anywhere closes menu\n\n\n\t toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle); // Detect touch by events\n\n\t once.call(player, document.body, 'touchstart', this.firstTouch); // Tab focus detection\n\n\t toggleListener.call(player, document.body, 'keydown focus blur focusout', this.setTabFocus, toggle, false, true);\n\t } // Container listeners\n\n\t }, {\n\t key: \"container\",\n\t value: function container() {\n\t var player = this.player;\n\t var config = player.config,\n\t elements = player.elements,\n\t timers = player.timers; // Keyboard shortcuts\n\n\t if (!config.keyboard.global && config.keyboard.focused) {\n\t on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n\t } // Toggle controls on mouse events and entering fullscreen\n\n\n\t on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {\n\t var controlsElement = elements.controls; // Remove button states for fullscreen\n\n\t if (controlsElement && event.type === 'enterfullscreen') {\n\t controlsElement.pressed = false;\n\t controlsElement.hover = false;\n\t } // Show, then hide after a timeout unless another control event occurs\n\n\n\t var show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\t var delay = 0;\n\n\t if (show) {\n\t ui.toggleControls.call(player, true); // Use longer timeout for touch devices\n\n\t delay = player.touch ? 3000 : 2000;\n\t } // Clear timer\n\n\n\t clearTimeout(timers.controls); // Set new timer to prevent flicker when seeking\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Set a gutter for Vimeo\n\n\t var setGutter = function setGutter(ratio, padding, toggle) {\n\t if (!player.isVimeo || player.config.vimeo.premium) {\n\t return;\n\t }\n\n\t var target = player.elements.wrapper.firstChild;\n\n\t var _ratio = _slicedToArray(ratio, 2),\n\t y = _ratio[1];\n\n\t var _getAspectRatio$call = getAspectRatio.call(player),\n\t _getAspectRatio$call2 = _slicedToArray(_getAspectRatio$call, 2),\n\t videoX = _getAspectRatio$call2[0],\n\t videoY = _getAspectRatio$call2[1];\n\n\t target.style.maxWidth = toggle ? \"\".concat(y / videoY * videoX, \"px\") : null;\n\t target.style.margin = toggle ? '0 auto' : null;\n\t }; // Resize on fullscreen change\n\n\n\t var setPlayerSize = function setPlayerSize(measure) {\n\t // If we don't need to measure the viewport\n\t if (!measure) {\n\t return setAspectRatio.call(player);\n\t }\n\n\t var rect = elements.container.getBoundingClientRect();\n\t var width = rect.width,\n\t height = rect.height;\n\t return setAspectRatio.call(player, \"\".concat(width, \":\").concat(height));\n\t };\n\n\t var resized = function resized() {\n\t clearTimeout(timers.resized);\n\t timers.resized = setTimeout(setPlayerSize, 50);\n\t };\n\n\t on.call(player, elements.container, 'enterfullscreen exitfullscreen', function (event) {\n\t var _player$fullscreen = player.fullscreen,\n\t target = _player$fullscreen.target,\n\t usingNative = _player$fullscreen.usingNative; // Ignore events not from target\n\n\t if (target !== elements.container) {\n\t return;\n\t } // If it's not an embed and no ratio specified\n\n\n\t if (!player.isEmbed && is$2.empty(player.config.ratio)) {\n\t return;\n\t }\n\n\t var isEnter = event.type === 'enterfullscreen'; // Set the player size when entering fullscreen to viewport size\n\n\t var _setPlayerSize = setPlayerSize(isEnter),\n\t padding = _setPlayerSize.padding,\n\t ratio = _setPlayerSize.ratio; // Set Vimeo gutter\n\n\n\t setGutter(ratio, padding, isEnter); // If not using native browser fullscreen API, we need to check for resizes of viewport\n\n\t if (!usingNative) {\n\t if (isEnter) {\n\t on.call(player, window, 'resize', resized);\n\t } else {\n\t off.call(player, window, 'resize', resized);\n\t }\n\t }\n\t });\n\t } // Listen for media events\n\n\t }, {\n\t key: \"media\",\n\t value: function media() {\n\t var _this = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // Time change on media\n\n\t on.call(player, player.media, 'timeupdate seeking seeked', function (event) {\n\t return controls.timeUpdate.call(player, event);\n\t }); // Display duration\n\n\t on.call(player, player.media, 'durationchange loadeddata loadedmetadata', function (event) {\n\t return controls.durationUpdate.call(player, event);\n\t }); // Handle the media finishing\n\n\t on.call(player, player.media, 'ended', function () {\n\t // Show poster on end\n\t if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n\t // Restart\n\t player.restart(); // Call pause otherwise IE11 will start playing the video again\n\n\t player.pause();\n\t }\n\t }); // Check for buffer progress\n\n\t on.call(player, player.media, 'progress playing seeking seeked', function (event) {\n\t return controls.updateProgress.call(player, event);\n\t }); // Handle volume changes\n\n\t on.call(player, player.media, 'volumechange', function (event) {\n\t return controls.updateVolume.call(player, event);\n\t }); // Handle play/pause\n\n\t on.call(player, player.media, 'playing play pause ended emptied timeupdate', function (event) {\n\t return ui.checkPlaying.call(player, event);\n\t }); // Loading state\n\n\t on.call(player, player.media, 'waiting canplay seeked playing', function (event) {\n\t return ui.checkLoading.call(player, event);\n\t }); // Click video\n\n\t if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n\t // Re-fetch the wrapper\n\t var wrapper = getElement.call(player, \".\".concat(player.config.classNames.video)); // Bail if there's no wrapper (this should never happen)\n\n\t if (!is$2.element(wrapper)) {\n\t return;\n\t } // On click play, pause or restart\n\n\n\t on.call(player, elements.container, 'click', function (event) {\n\t var targets = [elements.container, wrapper]; // Ignore if click if not container or in video wrapper\n\n\t if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n\t return;\n\t } // Touch devices will just show controls (if hidden)\n\n\n\t if (player.touch && player.config.hideControls) {\n\t return;\n\t }\n\n\t if (player.ended) {\n\t _this.proxy(event, player.restart, 'restart');\n\n\t _this.proxy(event, function () {\n\t silencePromise(player.play());\n\t }, 'play');\n\t } else {\n\t _this.proxy(event, function () {\n\t silencePromise(player.togglePlay());\n\t }, 'play');\n\t }\n\t });\n\t } // Disable right click\n\n\n\t if (player.supported.ui && player.config.disableContextMenu) {\n\t on.call(player, elements.wrapper, 'contextmenu', function (event) {\n\t event.preventDefault();\n\t }, false);\n\t } // Volume change\n\n\n\t on.call(player, player.media, 'volumechange', function () {\n\t // Save to storage\n\t player.storage.set({\n\t volume: player.volume,\n\t muted: player.muted\n\t });\n\t }); // Speed change\n\n\t on.call(player, player.media, 'ratechange', function () {\n\t // Update UI\n\t controls.updateSetting.call(player, 'speed'); // Save to storage\n\n\n\t player.storage.set({\n\t speed: player.speed\n\t });\n\t }); // Quality change\n\n\t on.call(player, player.media, 'qualitychange', function (event) {\n\t // Update UI\n\t controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n\t }); // Update download link when ready and if quality changes\n\n\t on.call(player, player.media, 'ready qualitychange', function () {\n\t controls.setDownloadUrl.call(player);\n\t }); // Proxy events to container\n\t // Bubble up key events for Edge\n\n\t var proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\t on.call(player, player.media, proxyEvents, function (event) {\n\t var _event$detail = event.detail,\n\t detail = _event$detail === void 0 ? {} : _event$detail; // Get error details from media\n\n\t if (event.type === 'error') {\n\t detail = player.media.error;\n\t }\n\n\t triggerEvent.call(player, elements.container, event.type, true, detail);\n\t });\n\t } // Run default and custom handlers\n\n\t }, {\n\t key: \"proxy\",\n\t value: function proxy(event, defaultHandler, customHandlerKey) {\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$2.function(customHandler);\n\t var returned = true; // Execute custom handler\n\n\t if (hasCustomHandler) {\n\t returned = customHandler.call(player, event);\n\t } // Only call default handler if not prevented in custom handler\n\n\n\t if (returned !== false && is$2.function(defaultHandler)) {\n\t defaultHandler.call(player, event);\n\t }\n\t } // Trigger custom and default handlers\n\n\t }, {\n\t key: \"bind\",\n\t value: function bind(element, type, defaultHandler, customHandlerKey) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$2.function(customHandler);\n\t on.call(player, element, type, function (event) {\n\t return _this2.proxy(event, defaultHandler, customHandlerKey);\n\t }, passive && !hasCustomHandler);\n\t } // Listen for control events\n\n\t }, {\n\t key: \"controls\",\n\t value: function controls$1() {\n\t var _this3 = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // IE doesn't support input event, so we fallback to change\n\n\t var inputEvent = browser.isIE ? 'change' : 'input'; // Play/pause toggle\n\n\t if (elements.buttons.play) {\n\t Array.from(elements.buttons.play).forEach(function (button) {\n\t _this3.bind(button, 'click', function () {\n\t silencePromise(player.togglePlay());\n\t }, 'play');\n\t });\n\t } // Pause\n\n\n\t this.bind(elements.buttons.restart, 'click', player.restart, 'restart'); // Rewind\n\n\t this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind'); // Rewind\n\n\t this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward'); // Mute toggle\n\n\t this.bind(elements.buttons.mute, 'click', function () {\n\t player.muted = !player.muted;\n\t }, 'mute'); // Captions toggle\n\n\t this.bind(elements.buttons.captions, 'click', function () {\n\t return player.toggleCaptions();\n\t }); // Download\n\n\t this.bind(elements.buttons.download, 'click', function () {\n\t triggerEvent.call(player, player.media, 'download');\n\t }, 'download'); // Fullscreen toggle\n\n\t this.bind(elements.buttons.fullscreen, 'click', function () {\n\t player.fullscreen.toggle();\n\t }, 'fullscreen'); // Picture-in-Picture\n\n\t this.bind(elements.buttons.pip, 'click', function () {\n\t player.pip = 'toggle';\n\t }, 'pip'); // Airplay\n\n\t this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay'); // Settings menu - click toggle\n\n\t this.bind(elements.buttons.settings, 'click', function (event) {\n\t // Prevent the document click listener closing the menu\n\t event.stopPropagation();\n\t event.preventDefault();\n\n\t controls.toggleMenu.call(player, event);\n\t }, null, false); // Can't be passive as we're preventing default\n\t // Settings menu - keyboard toggle\n\t // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n\n\t this.bind(elements.buttons.settings, 'keyup', function (event) {\n\t var code = event.which; // We only care about space and return\n\n\t if (![13, 32].includes(code)) {\n\t return;\n\t } // Because return triggers a click anyway, all we need to do is set focus\n\n\n\t if (code === 13) {\n\t controls.focusFirstMenuItem.call(player, null, true);\n\n\t return;\n\t } // Prevent scroll\n\n\n\t event.preventDefault(); // Prevent playing video (Firefox)\n\n\t event.stopPropagation(); // Toggle menu\n\n\t controls.toggleMenu.call(player, event);\n\t }, null, false // Can't be passive as we're preventing default\n\t ); // Escape closes menu\n\n\t this.bind(elements.settings.menu, 'keydown', function (event) {\n\t if (event.which === 27) {\n\t controls.toggleMenu.call(player, event);\n\t }\n\t }); // Set range input alternative \"value\", which matches the tooltip time (#954)\n\n\t this.bind(elements.inputs.seek, 'mousedown mousemove', function (event) {\n\t var rect = elements.progress.getBoundingClientRect();\n\t var percent = 100 / rect.width * (event.pageX - rect.left);\n\t event.currentTarget.setAttribute('seek-value', percent);\n\t }); // Pause while seeking\n\n\t this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', function (event) {\n\t var seek = event.currentTarget;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var attribute = 'play-on-seeked';\n\n\t if (is$2.keyboardEvent(event) && code !== 39 && code !== 37) {\n\t return;\n\t } // Record seek time so we can prevent hiding controls for a few seconds after seek\n\n\n\t player.lastSeekTime = Date.now(); // Was playing before?\n\n\t var play = seek.hasAttribute(attribute); // Done seeking\n\n\t var done = ['mouseup', 'touchend', 'keyup'].includes(event.type); // If we're done seeking and it was playing, resume playback\n\n\t if (play && done) {\n\t seek.removeAttribute(attribute);\n\t silencePromise(player.play());\n\t } else if (!done && player.playing) {\n\t seek.setAttribute(attribute, '');\n\t player.pause();\n\t }\n\t }); // Fix range inputs on iOS\n\t // Super weird iOS bug where after you interact with an <input type=\"range\">,\n\t // it takes over further interactions on the page. This is a hack\n\n\t if (browser.isIos) {\n\t var inputs = getElements.call(player, 'input[type=\"range\"]');\n\t Array.from(inputs).forEach(function (input) {\n\t return _this3.bind(input, inputEvent, function (event) {\n\t return repaint(event.target);\n\t });\n\t });\n\t } // Seek\n\n\n\t this.bind(elements.inputs.seek, inputEvent, function (event) {\n\t var seek = event.currentTarget; // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n\n\t var seekTo = seek.getAttribute('seek-value');\n\n\t if (is$2.empty(seekTo)) {\n\t seekTo = seek.value;\n\t }\n\n\t seek.removeAttribute('seek-value');\n\t player.currentTime = seekTo / seek.max * player.duration;\n\t }, 'seek'); // Seek tooltip\n\n\t this.bind(elements.progress, 'mouseenter mouseleave mousemove', function (event) {\n\t return controls.updateSeekTooltip.call(player, event);\n\t }); // Preview thumbnails plugin\n\t // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n\n\t this.bind(elements.progress, 'mousemove touchmove', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startMove(event);\n\t }\n\t }); // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n\n\t this.bind(elements.progress, 'mouseleave touchend click', function () {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endMove(false, true);\n\t }\n\t }); // Show scrubbing preview\n\n\t this.bind(elements.progress, 'mousedown touchstart', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startScrubbing(event);\n\t }\n\t });\n\t this.bind(elements.progress, 'mouseup touchend', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endScrubbing(event);\n\t }\n\t }); // Polyfill for lower fill in <input type=\"range\"> for webkit\n\n\t if (browser.isWebkit) {\n\t Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(function (element) {\n\t _this3.bind(element, 'input', function (event) {\n\t return controls.updateRangeFill.call(player, event.target);\n\t });\n\t });\n\t } // Current time invert\n\t // Only if one time element is used for both currentTime and duration\n\n\n\t if (player.config.toggleInvert && !is$2.element(elements.display.duration)) {\n\t this.bind(elements.display.currentTime, 'click', function () {\n\t // Do nothing if we're at the start\n\t if (player.currentTime === 0) {\n\t return;\n\t }\n\n\t player.config.invertTime = !player.config.invertTime;\n\n\t controls.timeUpdate.call(player);\n\t });\n\t } // Volume\n\n\n\t this.bind(elements.inputs.volume, inputEvent, function (event) {\n\t player.volume = event.target.value;\n\t }, 'volume'); // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mouseenter mouseleave', function (event) {\n\t elements.controls.hover = !player.touch && event.type === 'mouseenter';\n\t }); // Also update controls.hover state for any non-player children of fullscreen element (as above)\n\n\t if (elements.fullscreen) {\n\t Array.from(elements.fullscreen.children).filter(function (c) {\n\t return !c.contains(elements.container);\n\t }).forEach(function (child) {\n\t _this3.bind(child, 'mouseenter mouseleave', function (event) {\n\t elements.controls.hover = !player.touch && event.type === 'mouseenter';\n\t });\n\t });\n\t } // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n\n\n\t this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', function (event) {\n\t elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n\t }); // Show controls when they receive focus (e.g., when using keyboard tab key)\n\n\t this.bind(elements.controls, 'focusin', function () {\n\t var config = player.config,\n\t timers = player.timers; // Skip transition to prevent focus from scrolling the parent element\n\n\t toggleClass(elements.controls, config.classNames.noTransition, true); // Toggle\n\n\t ui.toggleControls.call(player, true); // Restore transition\n\n\t setTimeout(function () {\n\t toggleClass(elements.controls, config.classNames.noTransition, false);\n\t }, 0); // Delay a little more for mouse users\n\n\t var delay = _this3.touch ? 3000 : 4000; // Clear timer\n\n\t clearTimeout(timers.controls); // Hide again after delay\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Mouse wheel for volume\n\n\t this.bind(elements.inputs.volume, 'wheel', function (event) {\n\t // Detect \"natural\" scroll - suppored on OS X Safari only\n\t // Other browsers on OS X will be inverted until support improves\n\t var inverted = event.webkitDirectionInvertedFromDevice; // Get delta from event. Invert if `inverted` is true\n\n\t var _map = [event.deltaX, -event.deltaY].map(function (value) {\n\t return inverted ? -value : value;\n\t }),\n\t _map2 = _slicedToArray(_map, 2),\n\t x = _map2[0],\n\t y = _map2[1]; // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n\n\n\t var direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y); // Change the volume by 2%\n\n\t player.increaseVolume(direction / 50); // Don't break page scrolling at max and min\n\n\t var volume = player.media.volume;\n\n\t if (direction === 1 && volume < 1 || direction === -1 && volume > 0) {\n\t event.preventDefault();\n\t }\n\t }, 'volume', false);\n\t }\n\t }]);\n\n\t return Listeners;\n\t}();\n\n\tvar HAS_SPECIES_SUPPORT$7 = arrayMethodHasSpeciesSupport$1('splice');\n\tvar USES_TO_LENGTH$k = arrayMethodUsesToLength$1('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\n\tvar max$7 = Math.max;\n\tvar min$c = Math.min;\n\tvar MAX_SAFE_INTEGER$3 = 0x1FFFFFFFFFFFFF;\n\tvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED$1 = 'Maximum allowed length exceeded';\n\n\t// `Array.prototype.splice` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n\t// with adding support of @@species\n\t_export$1({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$7 || !USES_TO_LENGTH$k }, {\n\t splice: function splice(start, deleteCount /* , ...items */) {\n\t var O = toObject$1(this);\n\t var len = toLength$1(O.length);\n\t var actualStart = toAbsoluteIndex$1(start, len);\n\t var argumentsLength = arguments.length;\n\t var insertCount, actualDeleteCount, A, k, from, to;\n\t if (argumentsLength === 0) {\n\t insertCount = actualDeleteCount = 0;\n\t } else if (argumentsLength === 1) {\n\t insertCount = 0;\n\t actualDeleteCount = len - actualStart;\n\t } else {\n\t insertCount = argumentsLength - 2;\n\t actualDeleteCount = min$c(max$7(toInteger$1(deleteCount), 0), len - actualStart);\n\t }\n\t if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$3) {\n\t throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED$1);\n\t }\n\t A = arraySpeciesCreate$1(O, actualDeleteCount);\n\t for (k = 0; k < actualDeleteCount; k++) {\n\t from = actualStart + k;\n\t if (from in O) createProperty$1(A, k, O[from]);\n\t }\n\t A.length = actualDeleteCount;\n\t if (insertCount < actualDeleteCount) {\n\t for (k = actualStart; k < len - actualDeleteCount; k++) {\n\t from = k + actualDeleteCount;\n\t to = k + insertCount;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n\t } else if (insertCount > actualDeleteCount) {\n\t for (k = len - actualDeleteCount; k > actualStart; k--) {\n\t from = k + actualDeleteCount - 1;\n\t to = k + insertCount - 1;\n\t if (from in O) O[to] = O[from];\n\t else delete O[to];\n\t }\n\t }\n\t for (k = 0; k < insertCount; k++) {\n\t O[k + actualStart] = arguments[k + 2];\n\t }\n\t O.length = len - actualDeleteCount + insertCount;\n\t return A;\n\t }\n\t});\n\n\tvar loadjs_umd = createCommonjsModule(function (module, exports) {\n\t (function (root, factory) {\n\t {\n\t module.exports = factory();\n\t }\n\t })(commonjsGlobal, function () {\n\t /**\n\t * Global dependencies.\n\t * @global {Object} document - DOM\n\t */\n\t var devnull = function devnull() {},\n\t bundleIdCache = {},\n\t bundleResultCache = {},\n\t bundleCallbackQueue = {};\n\t /**\n\t * Subscribe to bundle load event.\n\t * @param {string[]} bundleIds - Bundle ids\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function subscribe(bundleIds, callbackFn) {\n\t // listify\n\t bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\t var depsNotFound = [],\n\t i = bundleIds.length,\n\t numWaiting = i,\n\t fn,\n\t bundleId,\n\t r,\n\t q; // define callback function\n\n\t fn = function fn(bundleId, pathsNotFound) {\n\t if (pathsNotFound.length) depsNotFound.push(bundleId);\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(depsNotFound);\n\t }; // register callback\n\n\n\t while (i--) {\n\t bundleId = bundleIds[i]; // execute callback if in result cache\n\n\t r = bundleResultCache[bundleId];\n\n\t if (r) {\n\t fn(bundleId, r);\n\t continue;\n\t } // add to callback queue\n\n\n\t q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n\t q.push(fn);\n\t }\n\t }\n\t /**\n\t * Publish bundle load event.\n\t * @param {string} bundleId - Bundle id\n\t * @param {string[]} pathsNotFound - List of files not found\n\t */\n\n\n\t function publish(bundleId, pathsNotFound) {\n\t // exit if id isn't defined\n\t if (!bundleId) return;\n\t var q = bundleCallbackQueue[bundleId]; // cache result\n\n\t bundleResultCache[bundleId] = pathsNotFound; // exit if queue is empty\n\n\t if (!q) return; // empty callback queue\n\n\t while (q.length) {\n\t q[0](bundleId, pathsNotFound);\n\t q.splice(0, 1);\n\t }\n\t }\n\t /**\n\t * Execute callbacks.\n\t * @param {Object or Function} args - The callback args\n\t * @param {string[]} depsNotFound - List of dependencies not found\n\t */\n\n\n\t function executeCallbacks(args, depsNotFound) {\n\t // accept function as argument\n\t if (args.call) args = {\n\t success: args\n\t }; // success and error callbacks\n\n\t if (depsNotFound.length) (args.error || devnull)(depsNotFound);else (args.success || devnull)(args);\n\t }\n\t /**\n\t * Load individual file.\n\t * @param {string} path - The file path\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function loadFile(path, callbackFn, args, numTries) {\n\t var doc = document,\n\t async = args.async,\n\t maxTries = (args.numRetries || 0) + 1,\n\t beforeCallbackFn = args.before || devnull,\n\t pathname = path.replace(/[\\?|#].*$/, ''),\n\t pathStripped = path.replace(/^(css|img)!/, ''),\n\t isLegacyIECss,\n\t e;\n\t numTries = numTries || 0;\n\n\t if (/(^css!|\\.css$)/.test(pathname)) {\n\t // css\n\t e = doc.createElement('link');\n\t e.rel = 'stylesheet';\n\t e.href = pathStripped; // tag IE9+\n\n\t isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)\n\n\t if (isLegacyIECss && e.relList) {\n\t isLegacyIECss = 0;\n\t e.rel = 'preload';\n\t e.as = 'style';\n\t }\n\t } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n\t // image\n\t e = doc.createElement('img');\n\t e.src = pathStripped;\n\t } else {\n\t // javascript\n\t e = doc.createElement('script');\n\t e.src = path;\n\t e.async = async === undefined ? true : async;\n\t }\n\n\t e.onload = e.onerror = e.onbeforeload = function (ev) {\n\t var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror\n\t // support in IE9-11\n\n\t if (isLegacyIECss) {\n\t try {\n\t if (!e.sheet.cssText.length) result = 'e';\n\t } catch (x) {\n\t // sheets objects created from load errors don't allow access to\n\t // `cssText` (unless error is Code:18 SecurityError)\n\t if (x.code != 18) result = 'e';\n\t }\n\t } // handle retries in case of load failure\n\n\n\t if (result == 'e') {\n\t // increment counter\n\t numTries += 1; // exit function and try again\n\n\t if (numTries < maxTries) {\n\t return loadFile(path, callbackFn, args, numTries);\n\t }\n\t } else if (e.rel == 'preload' && e.as == 'style') {\n\t // activate preloaded stylesheets\n\t return e.rel = 'stylesheet'; // jshint ignore:line\n\t } // execute callback\n\n\n\t callbackFn(path, result, ev.defaultPrevented);\n\t }; // add to document (unless callback returns `false`)\n\n\n\t if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n\t }\n\t /**\n\t * Load multiple files.\n\t * @param {string[]} paths - The file paths\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function loadFiles(paths, callbackFn, args) {\n\t // listify paths\n\t paths = paths.push ? paths : [paths];\n\t var numWaiting = paths.length,\n\t x = numWaiting,\n\t pathsNotFound = [],\n\t fn,\n\t i; // define callback function\n\n\t fn = function fn(path, result, defaultPrevented) {\n\t // handle error\n\t if (result == 'e') pathsNotFound.push(path); // handle beforeload event. If defaultPrevented then that means the load\n\t // will be blocked (ex. Ghostery/ABP on Safari)\n\n\t if (result == 'b') {\n\t if (defaultPrevented) pathsNotFound.push(path);else return;\n\t }\n\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(pathsNotFound);\n\t }; // load scripts\n\n\n\t for (i = 0; i < x; i++) {\n\t loadFile(paths[i], fn, args);\n\t }\n\t }\n\t /**\n\t * Initiate script load and register bundle.\n\t * @param {(string|string[])} paths - The file paths\n\t * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n\t * callback or (3) object literal with success/error arguments, numRetries,\n\t * etc.\n\t * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n\t * literal with success/error arguments, numRetries, etc.\n\t */\n\n\n\t function loadjs(paths, arg1, arg2) {\n\t var bundleId, args; // bundleId (if string)\n\n\t if (arg1 && arg1.trim) bundleId = arg1; // args (default is {})\n\n\t args = (bundleId ? arg2 : arg1) || {}; // throw error if bundle is already defined\n\n\t if (bundleId) {\n\t if (bundleId in bundleIdCache) {\n\t throw \"LoadJS\";\n\t } else {\n\t bundleIdCache[bundleId] = true;\n\t }\n\t }\n\n\t function loadFn(resolve, reject) {\n\t loadFiles(paths, function (pathsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, pathsNotFound); // resolve Promise\n\n\t if (resolve) {\n\t executeCallbacks({\n\t success: resolve,\n\t error: reject\n\t }, pathsNotFound);\n\t } // publish bundle load event\n\n\n\t publish(bundleId, pathsNotFound);\n\t }, args);\n\t }\n\n\t if (args.returnPromise) return new Promise(loadFn);else loadFn();\n\t }\n\t /**\n\t * Execute callbacks when dependencies have been satisfied.\n\t * @param {(string|string[])} deps - List of bundle ids\n\t * @param {Object} args - success/error arguments\n\t */\n\n\n\t loadjs.ready = function ready(deps, args) {\n\t // subscribe to bundle load event\n\t subscribe(deps, function (depsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, depsNotFound);\n\t });\n\t return loadjs;\n\t };\n\t /**\n\t * Manually satisfy bundle dependencies.\n\t * @param {string} bundleId - The bundle id\n\t */\n\n\n\t loadjs.done = function done(bundleId) {\n\t publish(bundleId, []);\n\t };\n\t /**\n\t * Reset loadjs dependencies statuses\n\t */\n\n\n\t loadjs.reset = function reset() {\n\t bundleIdCache = {};\n\t bundleResultCache = {};\n\t bundleCallbackQueue = {};\n\t };\n\t /**\n\t * Determine if bundle has already been defined\n\t * @param String} bundleId - The bundle id\n\t */\n\n\n\t loadjs.isDefined = function isDefined(bundleId) {\n\t return bundleId in bundleIdCache;\n\t }; // export\n\n\n\t return loadjs;\n\t });\n\t});\n\n\tfunction loadScript(url) {\n\t return new Promise(function (resolve, reject) {\n\t loadjs_umd(url, {\n\t success: resolve,\n\t error: reject\n\t });\n\t });\n\t}\n\n\tfunction parseId(url) {\n\t if (is$2.empty(url)) {\n\t return null;\n\t }\n\n\t if (is$2.number(Number(url))) {\n\t return url;\n\t }\n\n\t var regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tvar vimeo = {\n\t setup: function setup() {\n\t var player = this; // Add embed class for responsive\n\n\t toggleClass(player.elements.wrapper, player.config.classNames.embed, true); // Set speed options from config\n\n\t player.options.speed = player.config.speed.options; // Set intial ratio\n\n\t setAspectRatio.call(player); // Load the SDK if not already\n\n\t if (!is$2.object(window.Vimeo)) {\n\t loadScript(player.config.urls.vimeo.sdk).then(function () {\n\t vimeo.ready.call(player);\n\t }).catch(function (error) {\n\t player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n\t });\n\t } else {\n\t vimeo.ready.call(player);\n\t }\n\t },\n\t // API Ready\n\t ready: function ready() {\n\t var _this = this;\n\n\t var player = this;\n\t var config = player.config.vimeo;\n\n\t var premium = config.premium,\n\t referrerPolicy = config.referrerPolicy,\n\t frameParams = _objectWithoutProperties(config, [\"premium\", \"referrerPolicy\"]); // If the owner has a pro or premium account then we can hide controls etc\n\n\n\t if (premium) {\n\t Object.assign(frameParams, {\n\t controls: false,\n\t sidedock: false\n\t });\n\t } // Get Vimeo params for the iframe\n\n\n\t var params = buildUrlParams(_objectSpread2({\n\t loop: player.config.loop.active,\n\t autoplay: player.autoplay,\n\t muted: player.muted,\n\t gesture: 'media',\n\t playsinline: !this.config.fullscreen.iosNative\n\t }, frameParams)); // Get the source URL or ID\n\n\t var source = player.media.getAttribute('src'); // Get from <div> if needed\n\n\t if (is$2.empty(source)) {\n\t source = player.media.getAttribute(player.config.attributes.embed.id);\n\t }\n\n\t var id = parseId(source); // Build an iframe\n\n\t var iframe = createElement$1('iframe');\n\t var src = format(player.config.urls.vimeo.iframe, id, params);\n\t iframe.setAttribute('src', src);\n\t iframe.setAttribute('allowfullscreen', '');\n\t iframe.setAttribute('allow', 'autoplay,fullscreen,picture-in-picture'); // Set the referrer policy if required\n\n\t if (!is$2.empty(referrerPolicy)) {\n\t iframe.setAttribute('referrerPolicy', referrerPolicy);\n\t } // Inject the package\n\n\n\t var poster = player.poster;\n\n\t if (premium) {\n\t iframe.setAttribute('data-poster', poster);\n\t player.media = replaceElement(iframe, player.media);\n\t } else {\n\t var wrapper = createElement$1('div', {\n\t class: player.config.classNames.embedContainer,\n\t 'data-poster': poster\n\t });\n\t wrapper.appendChild(iframe);\n\t player.media = replaceElement(wrapper, player.media);\n\t } // Get poster image\n\n\n\t fetch(format(player.config.urls.vimeo.api, id), 'json').then(function (response) {\n\t if (is$2.empty(response)) {\n\t return;\n\t } // Get the URL for thumbnail\n\n\n\t var url = new URL(response[0].thumbnail_large); // Get original image\n\n\t url.pathname = \"\".concat(url.pathname.split('_')[0], \".jpg\"); // Set and show poster\n\n\t ui.setPoster.call(player, url.href).catch(function () {});\n\t }); // Setup instance\n\t // https://github.com/vimeo/player.js\n\n\t player.embed = new window.Vimeo.Player(iframe, {\n\t autopause: player.config.autopause,\n\t muted: player.muted\n\t });\n\t player.media.paused = true;\n\t player.media.currentTime = 0; // Disable native text track rendering\n\n\t if (player.supported.ui) {\n\t player.embed.disableTextTrack();\n\t } // Create a faux HTML5 API using the Vimeo API\n\n\n\t player.media.play = function () {\n\t assurePlaybackState.call(player, true);\n\t return player.embed.play();\n\t };\n\n\t player.media.pause = function () {\n\t assurePlaybackState.call(player, false);\n\t return player.embed.pause();\n\t };\n\n\t player.media.stop = function () {\n\t player.pause();\n\t player.currentTime = 0;\n\t }; // Seeking\n\n\n\t var currentTime = player.media.currentTime;\n\t Object.defineProperty(player.media, 'currentTime', {\n\t get: function get() {\n\t return currentTime;\n\t },\n\t set: function set(time) {\n\t // Vimeo will automatically play on seek if the video hasn't been played before\n\t // Get current paused state and volume etc\n\t var embed = player.embed,\n\t media = player.media,\n\t paused = player.paused,\n\t volume = player.volume;\n\t var restorePause = paused && !embed.hasPlayed; // Set seeking state and trigger event\n\n\t media.seeking = true;\n\t triggerEvent.call(player, media, 'seeking'); // If paused, mute until seek is complete\n\n\t Promise.resolve(restorePause && embed.setVolume(0)) // Seek\n\t .then(function () {\n\t return embed.setCurrentTime(time);\n\t }) // Restore paused\n\t .then(function () {\n\t return restorePause && embed.pause();\n\t }) // Restore volume\n\t .then(function () {\n\t return restorePause && embed.setVolume(volume);\n\t }).catch(function () {// Do nothing\n\t });\n\t }\n\t }); // Playback speed\n\n\t var speed = player.config.speed.selected;\n\t Object.defineProperty(player.media, 'playbackRate', {\n\t get: function get() {\n\t return speed;\n\t },\n\t set: function set(input) {\n\t player.embed.setPlaybackRate(input).then(function () {\n\t speed = input;\n\t triggerEvent.call(player, player.media, 'ratechange');\n\t }).catch(function () {\n\t // Cannot set Playback Rate, Video is probably not on Pro account\n\t player.options.speed = [1];\n\t });\n\t }\n\t }); // Volume\n\n\t var volume = player.config.volume;\n\t Object.defineProperty(player.media, 'volume', {\n\t get: function get() {\n\t return volume;\n\t },\n\t set: function set(input) {\n\t player.embed.setVolume(input).then(function () {\n\t volume = input;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Muted\n\n\t var muted = player.config.muted;\n\t Object.defineProperty(player.media, 'muted', {\n\t get: function get() {\n\t return muted;\n\t },\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : false;\n\t player.embed.setVolume(toggle ? 0 : player.config.volume).then(function () {\n\t muted = toggle;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Loop\n\n\t var loop = player.config.loop;\n\t Object.defineProperty(player.media, 'loop', {\n\t get: function get() {\n\t return loop;\n\t },\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : player.config.loop.active;\n\t player.embed.setLoop(toggle).then(function () {\n\t loop = toggle;\n\t });\n\t }\n\t }); // Source\n\n\t var currentSrc;\n\t player.embed.getVideoUrl().then(function (value) {\n\t currentSrc = value;\n\t controls.setDownloadUrl.call(player);\n\t }).catch(function (error) {\n\t _this.debug.warn(error);\n\t });\n\t Object.defineProperty(player.media, 'currentSrc', {\n\t get: function get() {\n\t return currentSrc;\n\t }\n\t }); // Ended\n\n\t Object.defineProperty(player.media, 'ended', {\n\t get: function get() {\n\t return player.currentTime === player.duration;\n\t }\n\t }); // Set aspect ratio based on video size\n\n\t Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(function (dimensions) {\n\t var _dimensions = _slicedToArray(dimensions, 2),\n\t width = _dimensions[0],\n\t height = _dimensions[1];\n\n\t player.embed.ratio = [width, height];\n\t setAspectRatio.call(_this);\n\t }); // Set autopause\n\n\t player.embed.setAutopause(player.config.autopause).then(function (state) {\n\t player.config.autopause = state;\n\t }); // Get title\n\n\t player.embed.getVideoTitle().then(function (title) {\n\t player.config.title = title;\n\t ui.setTitle.call(_this);\n\t }); // Get current time\n\n\t player.embed.getCurrentTime().then(function (value) {\n\t currentTime = value;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t }); // Get duration\n\n\t player.embed.getDuration().then(function (value) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }); // Get captions\n\n\t player.embed.getTextTracks().then(function (tracks) {\n\t player.media.textTracks = tracks;\n\t captions.setup.call(player);\n\t });\n\t player.embed.on('cuechange', function (_ref) {\n\t var _ref$cues = _ref.cues,\n\t cues = _ref$cues === void 0 ? [] : _ref$cues;\n\t var strippedCues = cues.map(function (cue) {\n\t return stripHTML(cue.text);\n\t });\n\t captions.updateCues.call(player, strippedCues);\n\t });\n\t player.embed.on('loaded', function () {\n\t // Assure state and events are updated on autoplay\n\t player.embed.getPaused().then(function (paused) {\n\t assurePlaybackState.call(player, !paused);\n\n\t if (!paused) {\n\t triggerEvent.call(player, player.media, 'playing');\n\t }\n\t });\n\n\t if (is$2.element(player.embed.element) && player.supported.ui) {\n\t var frame = player.embed.element; // Fix keyboard focus issues\n\t // https://github.com/sampotts/plyr/issues/317\n\n\t frame.setAttribute('tabindex', -1);\n\t }\n\t });\n\t player.embed.on('bufferstart', function () {\n\t triggerEvent.call(player, player.media, 'waiting');\n\t });\n\t player.embed.on('bufferend', function () {\n\t triggerEvent.call(player, player.media, 'playing');\n\t });\n\t player.embed.on('play', function () {\n\t assurePlaybackState.call(player, true);\n\t triggerEvent.call(player, player.media, 'playing');\n\t });\n\t player.embed.on('pause', function () {\n\t assurePlaybackState.call(player, false);\n\t });\n\t player.embed.on('timeupdate', function (data) {\n\t player.media.seeking = false;\n\t currentTime = data.seconds;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t });\n\t player.embed.on('progress', function (data) {\n\t player.media.buffered = data.percent;\n\t triggerEvent.call(player, player.media, 'progress'); // Check all loaded\n\n\t if (parseInt(data.percent, 10) === 1) {\n\t triggerEvent.call(player, player.media, 'canplaythrough');\n\t } // Get duration as if we do it before load, it gives an incorrect value\n\t // https://github.com/sampotts/plyr/issues/891\n\n\n\t player.embed.getDuration().then(function (value) {\n\t if (value !== player.media.duration) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }\n\t });\n\t });\n\t player.embed.on('seeked', function () {\n\t player.media.seeking = false;\n\t triggerEvent.call(player, player.media, 'seeked');\n\t });\n\t player.embed.on('ended', function () {\n\t player.media.paused = true;\n\t triggerEvent.call(player, player.media, 'ended');\n\t });\n\t player.embed.on('error', function (detail) {\n\t player.media.error = detail;\n\t triggerEvent.call(player, player.media, 'error');\n\t }); // Rebuild UI\n\n\t setTimeout(function () {\n\t return ui.build.call(player);\n\t }, 0);\n\t }\n\t};\n\n\tfunction parseId$1(url) {\n\t if (is$2.empty(url)) {\n\t return null;\n\t }\n\n\t var regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState$1(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tfunction getHost$2(config) {\n\t if (config.noCookie) {\n\t return 'https://www.youtube-nocookie.com';\n\t }\n\n\t if (window.location.protocol === 'http:') {\n\t return 'http://www.youtube.com';\n\t } // Use YouTube's default\n\n\n\t return undefined;\n\t}\n\n\tvar youtube = {\n\t setup: function setup() {\n\t var _this = this;\n\n\t // Add embed class for responsive\n\t toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Setup API\n\n\t if (is$2.object(window.YT) && is$2.function(window.YT.Player)) {\n\t youtube.ready.call(this);\n\t } else {\n\t // Reference current global callback\n\t var callback = window.onYouTubeIframeAPIReady; // Set callback to process queue\n\n\t window.onYouTubeIframeAPIReady = function () {\n\t // Call global callback if set\n\t if (is$2.function(callback)) {\n\t callback();\n\t }\n\n\t youtube.ready.call(_this);\n\t }; // Load the SDK\n\n\n\t loadScript(this.config.urls.youtube.sdk).catch(function (error) {\n\t _this.debug.warn('YouTube API failed to load', error);\n\t });\n\t }\n\t },\n\t // Get the media title\n\t getTitle: function getTitle(videoId) {\n\t var _this2 = this;\n\n\t var url = format(this.config.urls.youtube.api, videoId);\n\t fetch(url).then(function (data) {\n\t if (is$2.object(data)) {\n\t var title = data.title,\n\t height = data.height,\n\t width = data.width; // Set title\n\n\t _this2.config.title = title;\n\t ui.setTitle.call(_this2); // Set aspect ratio\n\n\t _this2.embed.ratio = [width, height];\n\t }\n\n\t setAspectRatio.call(_this2);\n\t }).catch(function () {\n\t // Set aspect ratio\n\t setAspectRatio.call(_this2);\n\t });\n\t },\n\t // API ready\n\t ready: function ready() {\n\t var player = this; // Ignore already setup (race condition)\n\n\t var currentId = player.media && player.media.getAttribute('id');\n\n\t if (!is$2.empty(currentId) && currentId.startsWith('youtube-')) {\n\t return;\n\t } // Get the source URL or ID\n\n\n\t var source = player.media.getAttribute('src'); // Get from <div> if needed\n\n\t if (is$2.empty(source)) {\n\t source = player.media.getAttribute(this.config.attributes.embed.id);\n\t } // Replace the <iframe> with a <div> due to YouTube API issues\n\n\n\t var videoId = parseId$1(source);\n\t var id = generateId(player.provider); // Get poster, if already set\n\n\t var poster = player.poster; // Replace media element\n\n\t var container = createElement$1('div', {\n\t id: id,\n\t 'data-poster': poster\n\t });\n\t player.media = replaceElement(container, player.media); // Id to poster wrapper\n\n\t var posterSrc = function posterSrc(s) {\n\t return \"https://i.ytimg.com/vi/\".concat(videoId, \"/\").concat(s, \"default.jpg\");\n\t }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)\n\n\n\t loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded\n\t .catch(function () {\n\t return loadImage(posterSrc('sd'), 121);\n\t }) // 480p padded 4:3\n\t .catch(function () {\n\t return loadImage(posterSrc('hq'));\n\t }) // 360p padded 4:3. Always exists\n\t .then(function (image) {\n\t return ui.setPoster.call(player, image.src);\n\t }).then(function (src) {\n\t // If the image is padded, use background-size \"cover\" instead (like youtube does too with their posters)\n\t if (!src.includes('maxres')) {\n\t player.elements.poster.style.backgroundSize = 'cover';\n\t }\n\t }).catch(function () {});\n\t var config = player.config.youtube; // Setup instance\n\t // https://developers.google.com/youtube/iframe_api_reference\n\n\t player.embed = new window.YT.Player(id, {\n\t videoId: videoId,\n\t host: getHost$2(config),\n\t playerVars: extend$1({}, {\n\t autoplay: player.config.autoplay ? 1 : 0,\n\t // Autoplay\n\t hl: player.config.hl,\n\t // iframe interface language\n\t controls: player.supported.ui ? 0 : 1,\n\t // Only show controls if not fully supported\n\t disablekb: 1,\n\t // Disable keyboard as we handle it\n\t playsinline: !player.config.fullscreen.iosNative ? 1 : 0,\n\t // Allow iOS inline playback\n\t // Captions are flaky on YouTube\n\t cc_load_policy: player.captions.active ? 1 : 0,\n\t cc_lang_pref: player.config.captions.language,\n\t // Tracking for stats\n\t widget_referrer: window ? window.location.href : null\n\t }, config),\n\t events: {\n\t onError: function onError(event) {\n\t // YouTube may fire onError twice, so only handle it once\n\t if (!player.media.error) {\n\t var code = event.data; // Messages copied from https://developers.google.com/youtube/iframe_api_reference#onError\n\n\t var message = {\n\t 2: 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.',\n\t 5: 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.',\n\t 100: 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.',\n\t 101: 'The owner of the requested video does not allow it to be played in embedded players.',\n\t 150: 'The owner of the requested video does not allow it to be played in embedded players.'\n\t }[code] || 'An unknown error occured';\n\t player.media.error = {\n\t code: code,\n\t message: message\n\t };\n\t triggerEvent.call(player, player.media, 'error');\n\t }\n\t },\n\t onPlaybackRateChange: function onPlaybackRateChange(event) {\n\t // Get the instance\n\t var instance = event.target; // Get current speed\n\n\t player.media.playbackRate = instance.getPlaybackRate();\n\t triggerEvent.call(player, player.media, 'ratechange');\n\t },\n\t onReady: function onReady(event) {\n\t // Bail if onReady has already been called. See issue #1108\n\t if (is$2.function(player.media.play)) {\n\t return;\n\t } // Get the instance\n\n\n\t var instance = event.target; // Get the title\n\n\t youtube.getTitle.call(player, videoId); // Create a faux HTML5 API using the YouTube API\n\n\t player.media.play = function () {\n\t assurePlaybackState$1.call(player, true);\n\t instance.playVideo();\n\t };\n\n\t player.media.pause = function () {\n\t assurePlaybackState$1.call(player, false);\n\t instance.pauseVideo();\n\t };\n\n\t player.media.stop = function () {\n\t instance.stopVideo();\n\t };\n\n\t player.media.duration = instance.getDuration();\n\t player.media.paused = true; // Seeking\n\n\t player.media.currentTime = 0;\n\t Object.defineProperty(player.media, 'currentTime', {\n\t get: function get() {\n\t return Number(instance.getCurrentTime());\n\t },\n\t set: function set(time) {\n\t // If paused and never played, mute audio preventively (YouTube starts playing on seek if the video hasn't been played yet).\n\t if (player.paused && !player.embed.hasPlayed) {\n\t player.embed.mute();\n\t } // Set seeking state and trigger event\n\n\n\t player.media.seeking = true;\n\t triggerEvent.call(player, player.media, 'seeking'); // Seek after events sent\n\n\t instance.seekTo(time);\n\t }\n\t }); // Playback speed\n\n\t Object.defineProperty(player.media, 'playbackRate', {\n\t get: function get() {\n\t return instance.getPlaybackRate();\n\t },\n\t set: function set(input) {\n\t instance.setPlaybackRate(input);\n\t }\n\t }); // Volume\n\n\t var volume = player.config.volume;\n\t Object.defineProperty(player.media, 'volume', {\n\t get: function get() {\n\t return volume;\n\t },\n\t set: function set(input) {\n\t volume = input;\n\t instance.setVolume(volume * 100);\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t }\n\t }); // Muted\n\n\t var muted = player.config.muted;\n\t Object.defineProperty(player.media, 'muted', {\n\t get: function get() {\n\t return muted;\n\t },\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : muted;\n\t muted = toggle;\n\t instance[toggle ? 'mute' : 'unMute']();\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t }\n\t }); // Source\n\n\t Object.defineProperty(player.media, 'currentSrc', {\n\t get: function get() {\n\t return instance.getVideoUrl();\n\t }\n\t }); // Ended\n\n\t Object.defineProperty(player.media, 'ended', {\n\t get: function get() {\n\t return player.currentTime === player.duration;\n\t }\n\t }); // Get available speeds\n\n\t var speeds = instance.getAvailablePlaybackRates(); // Filter based on config\n\n\t player.options.speed = speeds.filter(function (s) {\n\t return player.config.speed.options.includes(s);\n\t }); // Set the tabindex to avoid focus entering iframe\n\n\t if (player.supported.ui) {\n\t player.media.setAttribute('tabindex', -1);\n\t }\n\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t triggerEvent.call(player, player.media, 'durationchange'); // Reset timer\n\n\t clearInterval(player.timers.buffering); // Setup buffering\n\n\t player.timers.buffering = setInterval(function () {\n\t // Get loaded % from YouTube\n\t player.media.buffered = instance.getVideoLoadedFraction(); // Trigger progress only when we actually buffer something\n\n\t if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) {\n\t triggerEvent.call(player, player.media, 'progress');\n\t } // Set last buffer point\n\n\n\t player.media.lastBuffered = player.media.buffered; // Bail if we're at 100%\n\n\t if (player.media.buffered === 1) {\n\t clearInterval(player.timers.buffering); // Trigger event\n\n\t triggerEvent.call(player, player.media, 'canplaythrough');\n\t }\n\t }, 200); // Rebuild UI\n\n\t setTimeout(function () {\n\t return ui.build.call(player);\n\t }, 50);\n\t },\n\t onStateChange: function onStateChange(event) {\n\t // Get the instance\n\t var instance = event.target; // Reset timer\n\n\t clearInterval(player.timers.playing);\n\t var seeked = player.media.seeking && [1, 2].includes(event.data);\n\n\t if (seeked) {\n\t // Unset seeking and fire seeked event\n\t player.media.seeking = false;\n\t triggerEvent.call(player, player.media, 'seeked');\n\t } // Handle events\n\t // -1 Unstarted\n\t // 0 Ended\n\t // 1 Playing\n\t // 2 Paused\n\t // 3 Buffering\n\t // 5 Video cued\n\n\n\t switch (event.data) {\n\t case -1:\n\t // Update scrubber\n\t triggerEvent.call(player, player.media, 'timeupdate'); // Get loaded % from YouTube\n\n\t player.media.buffered = instance.getVideoLoadedFraction();\n\t triggerEvent.call(player, player.media, 'progress');\n\t break;\n\n\t case 0:\n\t assurePlaybackState$1.call(player, false); // YouTube doesn't support loop for a single video, so mimick it.\n\n\t if (player.media.loop) {\n\t // YouTube needs a call to `stopVideo` before playing again\n\t instance.stopVideo();\n\t instance.playVideo();\n\t } else {\n\t triggerEvent.call(player, player.media, 'ended');\n\t }\n\n\t break;\n\n\t case 1:\n\t // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)\n\t if (!player.config.autoplay && player.media.paused && !player.embed.hasPlayed) {\n\t player.media.pause();\n\t } else {\n\t assurePlaybackState$1.call(player, true);\n\t triggerEvent.call(player, player.media, 'playing'); // Poll to get playback progress\n\n\t player.timers.playing = setInterval(function () {\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t }, 50); // Check duration again due to YouTube bug\n\t // https://github.com/sampotts/plyr/issues/374\n\t // https://code.google.com/p/gdata-issues/issues/detail?id=8690\n\n\t if (player.media.duration !== instance.getDuration()) {\n\t player.media.duration = instance.getDuration();\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }\n\t }\n\n\t break;\n\n\t case 2:\n\t // Restore audio (YouTube starts playing on seek if the video hasn't been played yet)\n\t if (!player.muted) {\n\t player.embed.unMute();\n\t }\n\n\t assurePlaybackState$1.call(player, false);\n\t break;\n\n\t case 3:\n\t // Trigger waiting event to add loading classes to container as the video buffers.\n\t triggerEvent.call(player, player.media, 'waiting');\n\t break;\n\t }\n\n\t triggerEvent.call(player, player.elements.container, 'statechange', false, {\n\t code: event.data\n\t });\n\t }\n\t }\n\t });\n\t }\n\t};\n\n\tvar media = {\n\t // Setup media\n\t setup: function setup() {\n\t // If there's no media, bail\n\t if (!this.media) {\n\t this.debug.warn('No media element found!');\n\t return;\n\t } // Add type class\n\n\n\t toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', this.type), true); // Add provider class\n\n\t toggleClass(this.elements.container, this.config.classNames.provider.replace('{0}', this.provider), true); // Add video class for embeds\n\t // This will require changes if audio embeds are added\n\n\t if (this.isEmbed) {\n\t toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', 'video'), true);\n\t } // Inject the player wrapper\n\n\n\t if (this.isVideo) {\n\t // Create the wrapper div\n\t this.elements.wrapper = createElement$1('div', {\n\t class: this.config.classNames.video\n\t }); // Wrap the video in a container\n\n\t wrap$4(this.media, this.elements.wrapper); // Poster image container\n\n\t this.elements.poster = createElement$1('div', {\n\t class: this.config.classNames.poster\n\t });\n\t this.elements.wrapper.appendChild(this.elements.poster);\n\t }\n\n\t if (this.isHTML5) {\n\t html5.setup.call(this);\n\t } else if (this.isYouTube) {\n\t youtube.setup.call(this);\n\t } else if (this.isVimeo) {\n\t vimeo.setup.call(this);\n\t }\n\t }\n\t};\n\n\tvar destroy = function destroy(instance) {\n\t // Destroy our adsManager\n\t if (instance.manager) {\n\t instance.manager.destroy();\n\t } // Destroy our adsManager\n\n\n\t if (instance.elements.displayContainer) {\n\t instance.elements.displayContainer.destroy();\n\t }\n\n\t instance.elements.container.remove();\n\t};\n\n\tvar Ads = /*#__PURE__*/function () {\n\t /**\n\t * Ads constructor.\n\t * @param {Object} player\n\t * @return {Ads}\n\t */\n\t function Ads(player) {\n\t var _this = this;\n\n\t _classCallCheck(this, Ads);\n\n\t this.player = player;\n\t this.config = player.config.ads;\n\t this.playing = false;\n\t this.initialized = false;\n\t this.elements = {\n\t container: null,\n\t displayContainer: null\n\t };\n\t this.manager = null;\n\t this.loader = null;\n\t this.cuePoints = null;\n\t this.events = {};\n\t this.safetyTimer = null;\n\t this.countdownTimer = null; // Setup a promise to resolve when the IMA manager is ready\n\n\t this.managerPromise = new Promise(function (resolve, reject) {\n\t // The ad is loaded and ready\n\t _this.on('loaded', resolve); // Ads failed\n\n\n\t _this.on('error', reject);\n\t });\n\t this.load();\n\t }\n\n\t _createClass(Ads, [{\n\t key: \"load\",\n\n\t /**\n\t * Load the IMA SDK\n\t */\n\t value: function load() {\n\t var _this2 = this;\n\n\t if (!this.enabled) {\n\t return;\n\t } // Check if the Google IMA3 SDK is loaded or load it ourselves\n\n\n\t if (!is$2.object(window.google) || !is$2.object(window.google.ima)) {\n\t loadScript(this.player.config.urls.googleIMA.sdk).then(function () {\n\t _this2.ready();\n\t }).catch(function () {\n\t // Script failed to load or is blocked\n\t _this2.trigger('error', new Error('Google IMA SDK failed to load'));\n\t });\n\t } else {\n\t this.ready();\n\t }\n\t }\n\t /**\n\t * Get the ads instance ready\n\t */\n\n\t }, {\n\t key: \"ready\",\n\t value: function ready() {\n\t var _this3 = this;\n\n\t // Double check we're enabled\n\t if (!this.enabled) {\n\t destroy(this);\n\t } // Start ticking our safety timer. If the whole advertisement\n\t // thing doesn't resolve within our set time; we bail\n\n\n\t this.startSafetyTimer(12000, 'ready()'); // Clear the safety timer\n\n\t this.managerPromise.then(function () {\n\t _this3.clearSafetyTimer('onAdsManagerLoaded()');\n\t }); // Set listeners on the Plyr instance\n\n\t this.listeners(); // Setup the IMA SDK\n\n\t this.setupIMA();\n\t } // Build the tag URL\n\n\t }, {\n\t key: \"setupIMA\",\n\n\t /**\n\t * In order for the SDK to display ads for our video, we need to tell it where to put them,\n\t * so here we define our ad container. This div is set up to render on top of the video player.\n\t * Using the code below, we tell the SDK to render ads within that div. We also provide a\n\t * handle to the content video player - the SDK will poll the current time of our player to\n\t * properly place mid-rolls. After we create the ad display container, we initialize it. On\n\t * mobile devices, this initialization is done as the result of a user action.\n\t */\n\t value: function setupIMA() {\n\t var _this4 = this;\n\n\t // Create the container for our advertisements\n\t this.elements.container = createElement$1('div', {\n\t class: this.player.config.classNames.ads\n\t });\n\t this.player.elements.container.appendChild(this.elements.container); // So we can run VPAID2\n\n\t google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED); // Set language\n\n\t google.ima.settings.setLocale(this.player.config.ads.language); // Set playback for iOS10+\n\n\t google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads\n\n\t this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Create ads loader\n\n\t this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events\n\n\t this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) {\n\t return _this4.onAdsManagerLoaded(event);\n\t }, false);\n\t this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {\n\t return _this4.onAdError(error);\n\t }, false); // Request video ads to be pre-loaded\n\n\t this.requestAds();\n\t }\n\t /**\n\t * Request advertisements\n\t */\n\n\t }, {\n\t key: \"requestAds\",\n\t value: function requestAds() {\n\t var container = this.player.elements.container;\n\n\t try {\n\t // Request video ads\n\t var request = new google.ima.AdsRequest();\n\t request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK\n\t // to select the correct creative if multiple are returned\n\n\t request.linearAdSlotWidth = container.offsetWidth;\n\t request.linearAdSlotHeight = container.offsetHeight;\n\t request.nonLinearAdSlotWidth = container.offsetWidth;\n\t request.nonLinearAdSlotHeight = container.offsetHeight; // We only overlay ads as we only support video.\n\n\t request.forceNonLinearFullSlot = false; // Mute based on current state\n\n\t request.setAdWillPlayMuted(!this.player.muted);\n\t this.loader.requestAds(request);\n\t } catch (e) {\n\t this.onAdError(e);\n\t }\n\t }\n\t /**\n\t * Update the ad countdown\n\t * @param {Boolean} start\n\t */\n\n\t }, {\n\t key: \"pollCountdown\",\n\t value: function pollCountdown() {\n\t var _this5 = this;\n\n\t var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t if (!start) {\n\t clearInterval(this.countdownTimer);\n\t this.elements.container.removeAttribute('data-badge-text');\n\t return;\n\t }\n\n\t var update = function update() {\n\t var time = formatTime(Math.max(_this5.manager.getRemainingTime(), 0));\n\t var label = \"\".concat(i18n.get('advertisement', _this5.player.config), \" - \").concat(time);\n\n\t _this5.elements.container.setAttribute('data-badge-text', label);\n\t };\n\n\t this.countdownTimer = setInterval(update, 100);\n\t }\n\t /**\n\t * This method is called whenever the ads are ready inside the AdDisplayContainer\n\t * @param {Event} adsManagerLoadedEvent\n\t */\n\n\t }, {\n\t key: \"onAdsManagerLoaded\",\n\t value: function onAdsManagerLoaded(event) {\n\t var _this6 = this;\n\n\t // Load could occur after a source change (race condition)\n\t if (!this.enabled) {\n\t return;\n\t } // Get the ads manager\n\n\n\t var settings = new google.ima.AdsRenderingSettings(); // Tell the SDK to save and restore content video state on our behalf\n\n\t settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n\t settings.enablePreloading = true; // The SDK is polling currentTime on the contentPlayback. And needs a duration\n\t // so it can determine when to start the mid- and post-roll\n\n\t this.manager = event.getAdsManager(this.player, settings); // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n\n\t this.cuePoints = this.manager.getCuePoints(); // Add listeners to the required events\n\t // Advertisement error events\n\n\t this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {\n\t return _this6.onAdError(error);\n\t }); // Advertisement regular events\n\n\t Object.keys(google.ima.AdEvent.Type).forEach(function (type) {\n\t _this6.manager.addEventListener(google.ima.AdEvent.Type[type], function (e) {\n\t return _this6.onAdEvent(e);\n\t });\n\t }); // Resolve our adsManager\n\n\t this.trigger('loaded');\n\t }\n\t }, {\n\t key: \"addCuePoints\",\n\t value: function addCuePoints() {\n\t var _this7 = this;\n\n\t // Add advertisement cue's within the time line if available\n\t if (!is$2.empty(this.cuePoints)) {\n\t this.cuePoints.forEach(function (cuePoint) {\n\t if (cuePoint !== 0 && cuePoint !== -1 && cuePoint < _this7.player.duration) {\n\t var seekElement = _this7.player.elements.progress;\n\n\t if (is$2.element(seekElement)) {\n\t var cuePercentage = 100 / _this7.player.duration * cuePoint;\n\t var cue = createElement$1('span', {\n\t class: _this7.player.config.classNames.cues\n\t });\n\t cue.style.left = \"\".concat(cuePercentage.toString(), \"%\");\n\t seekElement.appendChild(cue);\n\t }\n\t }\n\t });\n\t }\n\t }\n\t /**\n\t * This is where all the event handling takes place. Retrieve the ad from the event. Some\n\t * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n\t * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n\t * @param {Event} event\n\t */\n\n\t }, {\n\t key: \"onAdEvent\",\n\t value: function onAdEvent(event) {\n\t var _this8 = this;\n\n\t var container = this.player.elements.container; // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n\t // don't have ad object associated\n\n\t var ad = event.getAd();\n\t var adData = event.getAdData(); // Proxy event\n\n\t var dispatchEvent = function dispatchEvent(type) {\n\t triggerEvent.call(_this8.player, _this8.player.media, \"ads\".concat(type.replace(/_/g, '').toLowerCase()));\n\t }; // Bubble the event\n\n\n\t dispatchEvent(event.type);\n\n\t switch (event.type) {\n\t case google.ima.AdEvent.Type.LOADED:\n\t // This is the first event sent for an ad - it is possible to determine whether the\n\t // ad is a video ad or an overlay\n\t this.trigger('loaded'); // Start countdown\n\n\t this.pollCountdown(true);\n\n\t if (!ad.isLinear()) {\n\t // Position AdDisplayContainer correctly for overlay\n\t ad.width = container.offsetWidth;\n\t ad.height = container.offsetHeight;\n\t } // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n\t // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n\n\n\t break;\n\n\t case google.ima.AdEvent.Type.STARTED:\n\t // Set volume to match player\n\t this.manager.setVolume(this.player.volume);\n\t break;\n\n\t case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n\t // All ads for the current videos are done. We can now request new advertisements\n\t // in case the video is re-played\n\t // TODO: Example for what happens when a next video in a playlist would be loaded.\n\t // So here we load a new video when all ads are done.\n\t // Then we load new ads within a new adsManager. When the video\n\t // Is started - after - the ads are loaded, then we get ads.\n\t // You can also easily test cancelling and reloading by running\n\t // player.ads.cancel() and player.ads.play from the console I guess.\n\t // this.player.source = {\n\t // type: 'video',\n\t // title: 'View From A Blue Moon',\n\t // sources: [{\n\t // src:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n\t // 'video/mp4', }], poster:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n\t // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n\t // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n\t // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n\t // };\n\t // TODO: So there is still this thing where a video should only be allowed to start\n\t // playing when the IMA SDK is ready or has failed\n\t if (this.player.ended) {\n\t this.loadAds();\n\t } else {\n\t // The SDK won't allow new ads to be called without receiving a contentComplete()\n\t this.loader.contentComplete();\n\t }\n\n\t break;\n\n\t case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n\t // This event indicates the ad has started - the video player can adjust the UI,\n\t // for example display a pause button and remaining time. Fired when content should\n\t // be paused. This usually happens right before an ad is about to cover the content\n\t this.pauseContent();\n\t break;\n\n\t case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n\t // This event indicates the ad has finished - the video player can perform\n\t // appropriate UI actions, such as removing the timer for remaining time detection.\n\t // Fired when content should be resumed. This usually happens when an ad finishes\n\t // or collapses\n\t this.pollCountdown();\n\t this.resumeContent();\n\t break;\n\n\t case google.ima.AdEvent.Type.LOG:\n\t if (adData.adError) {\n\t this.player.debug.warn(\"Non-fatal ad error: \".concat(adData.adError.getMessage()));\n\t }\n\n\t break;\n\t }\n\t }\n\t /**\n\t * Any ad error handling comes through here\n\t * @param {Event} event\n\t */\n\n\t }, {\n\t key: \"onAdError\",\n\t value: function onAdError(event) {\n\t this.cancel();\n\t this.player.debug.warn('Ads error', event);\n\t }\n\t /**\n\t * Setup hooks for Plyr and window events. This ensures\n\t * the mid- and post-roll launch at the correct time. And\n\t * resize the advertisement when the player resizes\n\t */\n\n\t }, {\n\t key: \"listeners\",\n\t value: function listeners() {\n\t var _this9 = this;\n\n\t var container = this.player.elements.container;\n\t var time;\n\t this.player.on('canplay', function () {\n\t _this9.addCuePoints();\n\t });\n\t this.player.on('ended', function () {\n\t _this9.loader.contentComplete();\n\t });\n\t this.player.on('timeupdate', function () {\n\t time = _this9.player.currentTime;\n\t });\n\t this.player.on('seeked', function () {\n\t var seekedTime = _this9.player.currentTime;\n\n\t if (is$2.empty(_this9.cuePoints)) {\n\t return;\n\t }\n\n\t _this9.cuePoints.forEach(function (cuePoint, index) {\n\t if (time < cuePoint && cuePoint < seekedTime) {\n\t _this9.manager.discardAdBreak();\n\n\t _this9.cuePoints.splice(index, 1);\n\t }\n\t });\n\t }); // Listen to the resizing of the window. And resize ad accordingly\n\t // TODO: eventually implement ResizeObserver\n\n\t window.addEventListener('resize', function () {\n\t if (_this9.manager) {\n\t _this9.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\t }\n\t });\n\t }\n\t /**\n\t * Initialize the adsManager and start playing advertisements\n\t */\n\n\t }, {\n\t key: \"play\",\n\t value: function play() {\n\t var _this10 = this;\n\n\t var container = this.player.elements.container;\n\n\t if (!this.managerPromise) {\n\t this.resumeContent();\n\t } // Play the requested advertisement whenever the adsManager is ready\n\n\n\t this.managerPromise.then(function () {\n\t // Set volume to match player\n\t _this10.manager.setVolume(_this10.player.volume); // Initialize the container. Must be done via a user action on mobile devices\n\n\n\t _this10.elements.displayContainer.initialize();\n\n\t try {\n\t if (!_this10.initialized) {\n\t // Initialize the ads manager. Ad rules playlist will start at this time\n\t _this10.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will\n\t // start at this time; the call will be ignored for ad rules\n\n\n\t _this10.manager.start();\n\t }\n\n\t _this10.initialized = true;\n\t } catch (adError) {\n\t // An error may be thrown if there was a problem with the\n\t // VAST response\n\t _this10.onAdError(adError);\n\t }\n\t }).catch(function () {});\n\t }\n\t /**\n\t * Resume our video\n\t */\n\n\t }, {\n\t key: \"resumeContent\",\n\t value: function resumeContent() {\n\t // Hide the advertisement container\n\t this.elements.container.style.zIndex = ''; // Ad is stopped\n\n\t this.playing = false; // Play video\n\n\t silencePromise(this.player.media.play());\n\t }\n\t /**\n\t * Pause our video\n\t */\n\n\t }, {\n\t key: \"pauseContent\",\n\t value: function pauseContent() {\n\t // Show the advertisement container\n\t this.elements.container.style.zIndex = 3; // Ad is playing\n\n\t this.playing = true; // Pause our video.\n\n\t this.player.media.pause();\n\t }\n\t /**\n\t * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n\t * allowed to call new ads based on google policies, as they interpret this as an accidental\n\t * video requests. https://developers.google.com/interactive-\n\t * media-ads/docs/sdks/android/faq#8\n\t */\n\n\t }, {\n\t key: \"cancel\",\n\t value: function cancel() {\n\t // Pause our video\n\t if (this.initialized) {\n\t this.resumeContent();\n\t } // Tell our instance that we're done for now\n\n\n\t this.trigger('error'); // Re-create our adsManager\n\n\t this.loadAds();\n\t }\n\t /**\n\t * Re-create our adsManager\n\t */\n\n\t }, {\n\t key: \"loadAds\",\n\t value: function loadAds() {\n\t var _this11 = this;\n\n\t // Tell our adsManager to go bye bye\n\t this.managerPromise.then(function () {\n\t // Destroy our adsManager\n\t if (_this11.manager) {\n\t _this11.manager.destroy();\n\t } // Re-set our adsManager promises\n\n\n\t _this11.managerPromise = new Promise(function (resolve) {\n\t _this11.on('loaded', resolve);\n\n\t _this11.player.debug.log(_this11.manager);\n\t }); // Now that the manager has been destroyed set it to also be un-initialized\n\n\t _this11.initialized = false; // Now request some new advertisements\n\n\t _this11.requestAds();\n\t }).catch(function () {});\n\t }\n\t /**\n\t * Handles callbacks after an ad event was invoked\n\t * @param {String} event - Event type\n\t */\n\n\t }, {\n\t key: \"trigger\",\n\t value: function trigger(event) {\n\t var _this12 = this;\n\n\t for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t var handlers = this.events[event];\n\n\t if (is$2.array(handlers)) {\n\t handlers.forEach(function (handler) {\n\t if (is$2.function(handler)) {\n\t handler.apply(_this12, args);\n\t }\n\t });\n\t }\n\t }\n\t /**\n\t * Add event listeners\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t * @return {Ads}\n\t */\n\n\t }, {\n\t key: \"on\",\n\t value: function on(event, callback) {\n\t if (!is$2.array(this.events[event])) {\n\t this.events[event] = [];\n\t }\n\n\t this.events[event].push(callback);\n\t return this;\n\t }\n\t /**\n\t * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n\t * The advertisement has 12 seconds to get its things together. We stop this timer when the\n\t * advertisement is playing, or when a user action is required to start, then we clear the\n\t * timer on ad ready\n\t * @param {Number} time\n\t * @param {String} from\n\t */\n\n\t }, {\n\t key: \"startSafetyTimer\",\n\t value: function startSafetyTimer(time, from) {\n\t var _this13 = this;\n\n\t this.player.debug.log(\"Safety timer invoked from: \".concat(from));\n\t this.safetyTimer = setTimeout(function () {\n\t _this13.cancel();\n\n\t _this13.clearSafetyTimer('startSafetyTimer()');\n\t }, time);\n\t }\n\t /**\n\t * Clear our safety timer(s)\n\t * @param {String} from\n\t */\n\n\t }, {\n\t key: \"clearSafetyTimer\",\n\t value: function clearSafetyTimer(from) {\n\t if (!is$2.nullOrUndefined(this.safetyTimer)) {\n\t this.player.debug.log(\"Safety timer cleared from: \".concat(from));\n\t clearTimeout(this.safetyTimer);\n\t this.safetyTimer = null;\n\t }\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t var config = this.config;\n\t return this.player.isHTML5 && this.player.isVideo && config.enabled && (!is$2.empty(config.publisherId) || is$2.url(config.tagUrl));\n\t }\n\t }, {\n\t key: \"tagUrl\",\n\t get: function get() {\n\t var config = this.config;\n\n\t if (is$2.url(config.tagUrl)) {\n\t return config.tagUrl;\n\t }\n\n\t var params = {\n\t AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n\t AV_CHANNELID: '5a0458dc28a06145e4519d21',\n\t AV_URL: window.location.hostname,\n\t cb: Date.now(),\n\t AV_WIDTH: 640,\n\t AV_HEIGHT: 480,\n\t AV_CDIM2: config.publisherId\n\t };\n\t var base = 'https://go.aniview.com/api/adserver6/vast/';\n\t return \"\".concat(base, \"?\").concat(buildUrlParams(params));\n\t }\n\t }]);\n\n\t return Ads;\n\t}();\n\n\tvar $findIndex$1 = arrayIteration$1.findIndex;\n\n\n\n\tvar FIND_INDEX = 'findIndex';\n\tvar SKIPS_HOLES$2 = true;\n\n\tvar USES_TO_LENGTH$l = arrayMethodUsesToLength$1(FIND_INDEX);\n\n\t// Shouldn't skip holes\n\tif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES$2 = false; });\n\n\t// `Array.prototype.findIndex` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n\t_export$1({ target: 'Array', proto: true, forced: SKIPS_HOLES$2 || !USES_TO_LENGTH$l }, {\n\t findIndex: function findIndex(callbackfn /* , that = undefined */) {\n\t return $findIndex$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t }\n\t});\n\n\t// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\n\taddToUnscopables$1(FIND_INDEX);\n\n\tvar min$d = Math.min;\n\tvar nativeLastIndexOf$1 = [].lastIndexOf;\n\tvar NEGATIVE_ZERO$3 = !!nativeLastIndexOf$1 && 1 / [1].lastIndexOf(1, -0) < 0;\n\tvar STRICT_METHOD$b = arrayMethodIsStrict$1('lastIndexOf');\n\t// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\n\tvar USES_TO_LENGTH$m = arrayMethodUsesToLength$1('indexOf', { ACCESSORS: true, 1: 0 });\n\tvar FORCED$d = NEGATIVE_ZERO$3 || !STRICT_METHOD$b || !USES_TO_LENGTH$m;\n\n\t// `Array.prototype.lastIndexOf` method implementation\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\tvar arrayLastIndexOf$1 = FORCED$d ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n\t // convert -0 to +0\n\t if (NEGATIVE_ZERO$3) return nativeLastIndexOf$1.apply(this, arguments) || 0;\n\t var O = toIndexedObject$1(this);\n\t var length = toLength$1(O.length);\n\t var index = length - 1;\n\t if (arguments.length > 1) index = min$d(index, toInteger$1(arguments[1]));\n\t if (index < 0) index = length + index;\n\t for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n\t return -1;\n\t} : nativeLastIndexOf$1;\n\n\t// `Array.prototype.lastIndexOf` method\n\t// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n\t_export$1({ target: 'Array', proto: true, forced: arrayLastIndexOf$1 !== [].lastIndexOf }, {\n\t lastIndexOf: arrayLastIndexOf$1\n\t});\n\n\tvar parseVtt = function parseVtt(vttDataString) {\n\t var processedList = [];\n\t var frames = vttDataString.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/);\n\t frames.forEach(function (frame) {\n\t var result = {};\n\t var lines = frame.split(/\\r\\n|\\n|\\r/);\n\t lines.forEach(function (line) {\n\t if (!is$2.number(result.startTime)) {\n\t // The line with start and end times on it is the first line of interest\n\t var matchTimes = line.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/); // Note that this currently ignores caption formatting directives that are optionally on the end of this line - fine for non-captions VTT\n\n\t if (matchTimes) {\n\t result.startTime = Number(matchTimes[1] || 0) * 60 * 60 + Number(matchTimes[2]) * 60 + Number(matchTimes[3]) + Number(\"0.\".concat(matchTimes[4]));\n\t result.endTime = Number(matchTimes[6] || 0) * 60 * 60 + Number(matchTimes[7]) * 60 + Number(matchTimes[8]) + Number(\"0.\".concat(matchTimes[9]));\n\t }\n\t } else if (!is$2.empty(line.trim()) && is$2.empty(result.text)) {\n\t // If we already have the startTime, then we're definitely up to the text line(s)\n\t var lineSplit = line.trim().split('#xywh=');\n\n\t var _lineSplit = _slicedToArray(lineSplit, 1);\n\n\t result.text = _lineSplit[0];\n\n\t // If there's content in lineSplit[1], then we have sprites. If not, then it's just one frame per image\n\t if (lineSplit[1]) {\n\t var _lineSplit$1$split = lineSplit[1].split(',');\n\n\t var _lineSplit$1$split2 = _slicedToArray(_lineSplit$1$split, 4);\n\n\t result.x = _lineSplit$1$split2[0];\n\t result.y = _lineSplit$1$split2[1];\n\t result.w = _lineSplit$1$split2[2];\n\t result.h = _lineSplit$1$split2[3];\n\t }\n\t }\n\t });\n\n\t if (result.text) {\n\t processedList.push(result);\n\t }\n\t });\n\t return processedList;\n\t};\n\t/**\n\t * Preview thumbnails for seek hover and scrubbing\n\t * Seeking: Hover over the seek bar (desktop only): shows a small preview container above the seek bar\n\t * Scrubbing: Click and drag the seek bar (desktop and mobile): shows the preview image over the entire video, as if the video is scrubbing at very high speed\n\t *\n\t * Notes:\n\t * - Thumbs are set via JS settings on Plyr init, not HTML5 'track' property. Using the track property would be a bit gross, because it doesn't support custom 'kinds'. kind=metadata might be used for something else, and we want to allow multiple thumbnails tracks. Tracks must have a unique combination of 'kind' and 'label'. We would have to do something like kind=metadata,label=thumbnails1 / kind=metadata,label=thumbnails2. Square peg, round hole\n\t * - VTT info: the image URL is relative to the VTT, not the current document. But if the url starts with a slash, it will naturally be relative to the current domain. https://support.jwplayer.com/articles/how-to-add-preview-thumbnails\n\t * - This implementation uses multiple separate img elements. Other implementations use background-image on one element. This would be nice and simple, but Firefox and Safari have flickering issues with replacing backgrounds of larger images. It seems that YouTube perhaps only avoids this because they don't have the option for high-res previews (even the fullscreen ones, when mousedown/seeking). Images appear over the top of each other, and previous ones are discarded once the new ones have been rendered\n\t */\n\n\n\tvar fitRatio = function fitRatio(ratio, outer) {\n\t var targetRatio = outer.width / outer.height;\n\t var result = {};\n\n\t if (ratio > targetRatio) {\n\t result.width = outer.width;\n\t result.height = 1 / ratio * outer.width;\n\t } else {\n\t result.height = outer.height;\n\t result.width = ratio * outer.height;\n\t }\n\n\t return result;\n\t};\n\n\tvar PreviewThumbnails = /*#__PURE__*/function () {\n\t /**\n\t * PreviewThumbnails constructor.\n\t * @param {Plyr} player\n\t * @return {PreviewThumbnails}\n\t */\n\t function PreviewThumbnails(player) {\n\t _classCallCheck(this, PreviewThumbnails);\n\n\t this.player = player;\n\t this.thumbnails = [];\n\t this.loaded = false;\n\t this.lastMouseMoveTime = Date.now();\n\t this.mouseDown = false;\n\t this.loadedImages = [];\n\t this.elements = {\n\t thumb: {},\n\t scrubbing: {}\n\t };\n\t this.load();\n\t }\n\n\t _createClass(PreviewThumbnails, [{\n\t key: \"load\",\n\t value: function load() {\n\t var _this = this;\n\n\t // Toggle the regular seek tooltip\n\t if (this.player.elements.display.seekTooltip) {\n\t this.player.elements.display.seekTooltip.hidden = this.enabled;\n\t }\n\n\t if (!this.enabled) {\n\t return;\n\t }\n\n\t this.getThumbnails().then(function () {\n\t if (!_this.enabled) {\n\t return;\n\t } // Render DOM elements\n\n\n\t _this.render(); // Check to see if thumb container size was specified manually in CSS\n\n\n\t _this.determineContainerAutoSizing();\n\n\t _this.loaded = true;\n\t });\n\t } // Download VTT files and parse them\n\n\t }, {\n\t key: \"getThumbnails\",\n\t value: function getThumbnails() {\n\t var _this2 = this;\n\n\t return new Promise(function (resolve) {\n\t var src = _this2.player.config.previewThumbnails.src;\n\n\t if (is$2.empty(src)) {\n\t throw new Error('Missing previewThumbnails.src config attribute');\n\t } // Resolve promise\n\n\n\t var sortAndResolve = function sortAndResolve() {\n\t // Sort smallest to biggest (e.g., [120p, 480p, 1080p])\n\t _this2.thumbnails.sort(function (x, y) {\n\t return x.height - y.height;\n\t });\n\n\t _this2.player.debug.log('Preview thumbnails', _this2.thumbnails);\n\n\t resolve();\n\t }; // Via callback()\n\n\n\t if (is$2.function(src)) {\n\t src(function (thumbnails) {\n\t _this2.thumbnails = thumbnails;\n\t sortAndResolve();\n\t });\n\t } // VTT urls\n\t else {\n\t // If string, convert into single-element list\n\t var urls = is$2.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails\n\n\t var promises = urls.map(function (u) {\n\t return _this2.getThumbnail(u);\n\t }); // Resolve\n\n\t Promise.all(promises).then(sortAndResolve);\n\t }\n\t });\n\t } // Process individual VTT file\n\n\t }, {\n\t key: \"getThumbnail\",\n\t value: function getThumbnail(url) {\n\t var _this3 = this;\n\n\t return new Promise(function (resolve) {\n\t fetch(url).then(function (response) {\n\t var thumbnail = {\n\t frames: parseVtt(response),\n\t height: null,\n\t urlPrefix: ''\n\t }; // If the URLs don't start with '/', then we need to set their relative path to be the location of the VTT file\n\t // If the URLs do start with '/', then they obviously don't need a prefix, so it will remain blank\n\t // If the thumbnail URLs start with with none of '/', 'http://' or 'https://', then we need to set their relative path to be the location of the VTT file\n\n\t if (!thumbnail.frames[0].text.startsWith('/') && !thumbnail.frames[0].text.startsWith('http://') && !thumbnail.frames[0].text.startsWith('https://')) {\n\t thumbnail.urlPrefix = url.substring(0, url.lastIndexOf('/') + 1);\n\t } // Download the first frame, so that we can determine/set the height of this thumbnailsDef\n\n\n\t var tempImage = new Image();\n\n\t tempImage.onload = function () {\n\t thumbnail.height = tempImage.naturalHeight;\n\t thumbnail.width = tempImage.naturalWidth;\n\n\t _this3.thumbnails.push(thumbnail);\n\n\t resolve();\n\t };\n\n\t tempImage.src = thumbnail.urlPrefix + thumbnail.frames[0].text;\n\t });\n\t });\n\t }\n\t }, {\n\t key: \"startMove\",\n\t value: function startMove(event) {\n\t if (!this.loaded) {\n\t return;\n\t }\n\n\t if (!is$2.event(event) || !['touchmove', 'mousemove'].includes(event.type)) {\n\t return;\n\t } // Wait until media has a duration\n\n\n\t if (!this.player.media.duration) {\n\t return;\n\t }\n\n\t if (event.type === 'touchmove') {\n\t // Calculate seek hover position as approx video seconds\n\t this.seekTime = this.player.media.duration * (this.player.elements.inputs.seek.value / 100);\n\t } else {\n\t // Calculate seek hover position as approx video seconds\n\t var clientRect = this.player.elements.progress.getBoundingClientRect();\n\t var percentage = 100 / clientRect.width * (event.pageX - clientRect.left);\n\t this.seekTime = this.player.media.duration * (percentage / 100);\n\n\t if (this.seekTime < 0) {\n\t // The mousemove fires for 10+px out to the left\n\t this.seekTime = 0;\n\t }\n\n\t if (this.seekTime > this.player.media.duration - 1) {\n\t // Took 1 second off the duration for safety, because different players can disagree on the real duration of a video\n\t this.seekTime = this.player.media.duration - 1;\n\t }\n\n\t this.mousePosX = event.pageX; // Set time text inside image container\n\n\t this.elements.thumb.time.innerText = formatTime(this.seekTime);\n\t } // Download and show image\n\n\n\t this.showImageAtCurrentTime();\n\t }\n\t }, {\n\t key: \"endMove\",\n\t value: function endMove() {\n\t this.toggleThumbContainer(false, true);\n\t }\n\t }, {\n\t key: \"startScrubbing\",\n\t value: function startScrubbing(event) {\n\t // Only act on left mouse button (0), or touch device (event.button does not exist or is false)\n\t if (is$2.nullOrUndefined(event.button) || event.button === false || event.button === 0) {\n\t this.mouseDown = true; // Wait until media has a duration\n\n\t if (this.player.media.duration) {\n\t this.toggleScrubbingContainer(true);\n\t this.toggleThumbContainer(false, true); // Download and show image\n\n\t this.showImageAtCurrentTime();\n\t }\n\t }\n\t }\n\t }, {\n\t key: \"endScrubbing\",\n\t value: function endScrubbing() {\n\t var _this4 = this;\n\n\t this.mouseDown = false; // Hide scrubbing preview. But wait until the video has successfully seeked before hiding the scrubbing preview\n\n\t if (Math.ceil(this.lastTime) === Math.ceil(this.player.media.currentTime)) {\n\t // The video was already seeked/loaded at the chosen time - hide immediately\n\t this.toggleScrubbingContainer(false);\n\t } else {\n\t // The video hasn't seeked yet. Wait for that\n\t once.call(this.player, this.player.media, 'timeupdate', function () {\n\t // Re-check mousedown - we might have already started scrubbing again\n\t if (!_this4.mouseDown) {\n\t _this4.toggleScrubbingContainer(false);\n\t }\n\t });\n\t }\n\t }\n\t /**\n\t * Setup hooks for Plyr and window events\n\t */\n\n\t }, {\n\t key: \"listeners\",\n\t value: function listeners() {\n\t var _this5 = this;\n\n\t // Hide thumbnail preview - on mouse click, mouse leave (in listeners.js for now), and video play/seek. All four are required, e.g., for buffering\n\t this.player.on('play', function () {\n\t _this5.toggleThumbContainer(false, true);\n\t });\n\t this.player.on('seeked', function () {\n\t _this5.toggleThumbContainer(false);\n\t });\n\t this.player.on('timeupdate', function () {\n\t _this5.lastTime = _this5.player.media.currentTime;\n\t });\n\t }\n\t /**\n\t * Create HTML elements for image containers\n\t */\n\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t // Create HTML element: plyr__preview-thumbnail-container\n\t this.elements.thumb.container = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.thumbContainer\n\t }); // Wrapper for the image for styling\n\n\t this.elements.thumb.imageContainer = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.imageContainer\n\t });\n\t this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer); // Create HTML element, parent+span: time text (e.g., 01:32:00)\n\n\t var timeContainer = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.timeContainer\n\t });\n\t this.elements.thumb.time = createElement$1('span', {}, '00:00');\n\t timeContainer.appendChild(this.elements.thumb.time);\n\t this.elements.thumb.container.appendChild(timeContainer); // Inject the whole thumb\n\n\t if (is$2.element(this.player.elements.progress)) {\n\t this.player.elements.progress.appendChild(this.elements.thumb.container);\n\t } // Create HTML element: plyr__preview-scrubbing-container\n\n\n\t this.elements.scrubbing.container = createElement$1('div', {\n\t class: this.player.config.classNames.previewThumbnails.scrubbingContainer\n\t });\n\t this.player.elements.wrapper.appendChild(this.elements.scrubbing.container);\n\t }\n\t }, {\n\t key: \"destroy\",\n\t value: function destroy() {\n\t if (this.elements.thumb.container) {\n\t this.elements.thumb.container.remove();\n\t }\n\n\t if (this.elements.scrubbing.container) {\n\t this.elements.scrubbing.container.remove();\n\t }\n\t }\n\t }, {\n\t key: \"showImageAtCurrentTime\",\n\t value: function showImageAtCurrentTime() {\n\t var _this6 = this;\n\n\t if (this.mouseDown) {\n\t this.setScrubbingContainerSize();\n\t } else {\n\t this.setThumbContainerSizeAndPos();\n\t } // Find the desired thumbnail index\n\t // TODO: Handle a video longer than the thumbs where thumbNum is null\n\n\n\t var thumbNum = this.thumbnails[0].frames.findIndex(function (frame) {\n\t return _this6.seekTime >= frame.startTime && _this6.seekTime <= frame.endTime;\n\t });\n\t var hasThumb = thumbNum >= 0;\n\t var qualityIndex = 0; // Show the thumb container if we're not scrubbing\n\n\t if (!this.mouseDown) {\n\t this.toggleThumbContainer(hasThumb);\n\t } // No matching thumb found\n\n\n\t if (!hasThumb) {\n\t return;\n\t } // Check to see if we've already downloaded higher quality versions of this image\n\n\n\t this.thumbnails.forEach(function (thumbnail, index) {\n\t if (_this6.loadedImages.includes(thumbnail.frames[thumbNum].text)) {\n\t qualityIndex = index;\n\t }\n\t }); // Only proceed if either thumbnum or thumbfilename has changed\n\n\t if (thumbNum !== this.showingThumb) {\n\t this.showingThumb = thumbNum;\n\t this.loadImage(qualityIndex);\n\t }\n\t } // Show the image that's currently specified in this.showingThumb\n\n\t }, {\n\t key: \"loadImage\",\n\t value: function loadImage() {\n\t var _this7 = this;\n\n\t var qualityIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var thumbNum = this.showingThumb;\n\t var thumbnail = this.thumbnails[qualityIndex];\n\t var urlPrefix = thumbnail.urlPrefix;\n\t var frame = thumbnail.frames[thumbNum];\n\t var thumbFilename = thumbnail.frames[thumbNum].text;\n\t var thumbUrl = urlPrefix + thumbFilename;\n\n\t if (!this.currentImageElement || this.currentImageElement.dataset.filename !== thumbFilename) {\n\t // If we're already loading a previous image, remove its onload handler - we don't want it to load after this one\n\t // Only do this if not using sprites. Without sprites we really want to show as many images as possible, as a best-effort\n\t if (this.loadingImage && this.usingSprites) {\n\t this.loadingImage.onload = null;\n\t } // We're building and adding a new image. In other implementations of similar functionality (YouTube), background image\n\t // is instead used. But this causes issues with larger images in Firefox and Safari - switching between background\n\t // images causes a flicker. Putting a new image over the top does not\n\n\n\t var previewImage = new Image();\n\t previewImage.src = thumbUrl;\n\t previewImage.dataset.index = thumbNum;\n\t previewImage.dataset.filename = thumbFilename;\n\t this.showingThumbFilename = thumbFilename;\n\t this.player.debug.log(\"Loading image: \".concat(thumbUrl)); // For some reason, passing the named function directly causes it to execute immediately. So I've wrapped it in an anonymous function...\n\n\t previewImage.onload = function () {\n\t return _this7.showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, true);\n\t };\n\n\t this.loadingImage = previewImage;\n\t this.removeOldImages(previewImage);\n\t } else {\n\t // Update the existing image\n\t this.showImage(this.currentImageElement, frame, qualityIndex, thumbNum, thumbFilename, false);\n\t this.currentImageElement.dataset.index = thumbNum;\n\t this.removeOldImages(this.currentImageElement);\n\t }\n\t }\n\t }, {\n\t key: \"showImage\",\n\t value: function showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename) {\n\t var newImage = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\t this.player.debug.log(\"Showing thumb: \".concat(thumbFilename, \". num: \").concat(thumbNum, \". qual: \").concat(qualityIndex, \". newimg: \").concat(newImage));\n\t this.setImageSizeAndOffset(previewImage, frame);\n\n\t if (newImage) {\n\t this.currentImageContainer.appendChild(previewImage);\n\t this.currentImageElement = previewImage;\n\n\t if (!this.loadedImages.includes(thumbFilename)) {\n\t this.loadedImages.push(thumbFilename);\n\t }\n\t } // Preload images before and after the current one\n\t // Show higher quality of the same frame\n\t // Each step here has a short time delay, and only continues if still hovering/seeking the same spot. This is to protect slow connections from overloading\n\n\n\t this.preloadNearby(thumbNum, true).then(this.preloadNearby(thumbNum, false)).then(this.getHigherQuality(qualityIndex, previewImage, frame, thumbFilename));\n\t } // Remove all preview images that aren't the designated current image\n\n\t }, {\n\t key: \"removeOldImages\",\n\t value: function removeOldImages(currentImage) {\n\t var _this8 = this;\n\n\t // Get a list of all images, convert it from a DOM list to an array\n\t Array.from(this.currentImageContainer.children).forEach(function (image) {\n\t if (image.tagName.toLowerCase() !== 'img') {\n\t return;\n\t }\n\n\t var removeDelay = _this8.usingSprites ? 500 : 1000;\n\n\t if (image.dataset.index !== currentImage.dataset.index && !image.dataset.deleting) {\n\t // Wait 200ms, as the new image can take some time to show on certain browsers (even though it was downloaded before showing). This will prevent flicker, and show some generosity towards slower clients\n\t // First set attribute 'deleting' to prevent multi-handling of this on repeat firing of this function\n\t // eslint-disable-next-line no-param-reassign\n\t image.dataset.deleting = true; // This has to be set before the timeout - to prevent issues switching between hover and scrub\n\n\t var currentImageContainer = _this8.currentImageContainer;\n\t setTimeout(function () {\n\t currentImageContainer.removeChild(image);\n\n\t _this8.player.debug.log(\"Removing thumb: \".concat(image.dataset.filename));\n\t }, removeDelay);\n\t }\n\t });\n\t } // Preload images before and after the current one. Only if the user is still hovering/seeking the same frame\n\t // This will only preload the lowest quality\n\n\t }, {\n\t key: \"preloadNearby\",\n\t value: function preloadNearby(thumbNum) {\n\t var _this9 = this;\n\n\t var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t return new Promise(function (resolve) {\n\t setTimeout(function () {\n\t var oldThumbFilename = _this9.thumbnails[0].frames[thumbNum].text;\n\n\t if (_this9.showingThumbFilename === oldThumbFilename) {\n\t // Find the nearest thumbs with different filenames. Sometimes it'll be the next index, but in the case of sprites, it might be 100+ away\n\t var thumbnailsClone;\n\n\t if (forward) {\n\t thumbnailsClone = _this9.thumbnails[0].frames.slice(thumbNum);\n\t } else {\n\t thumbnailsClone = _this9.thumbnails[0].frames.slice(0, thumbNum).reverse();\n\t }\n\n\t var foundOne = false;\n\t thumbnailsClone.forEach(function (frame) {\n\t var newThumbFilename = frame.text;\n\n\t if (newThumbFilename !== oldThumbFilename) {\n\t // Found one with a different filename. Make sure it hasn't already been loaded on this page visit\n\t if (!_this9.loadedImages.includes(newThumbFilename)) {\n\t foundOne = true;\n\n\t _this9.player.debug.log(\"Preloading thumb filename: \".concat(newThumbFilename));\n\n\t var urlPrefix = _this9.thumbnails[0].urlPrefix;\n\t var thumbURL = urlPrefix + newThumbFilename;\n\t var previewImage = new Image();\n\t previewImage.src = thumbURL;\n\n\t previewImage.onload = function () {\n\t _this9.player.debug.log(\"Preloaded thumb filename: \".concat(newThumbFilename));\n\n\t if (!_this9.loadedImages.includes(newThumbFilename)) _this9.loadedImages.push(newThumbFilename); // We don't resolve until the thumb is loaded\n\n\t resolve();\n\t };\n\t }\n\t }\n\t }); // If there are none to preload then we want to resolve immediately\n\n\t if (!foundOne) {\n\t resolve();\n\t }\n\t }\n\t }, 300);\n\t });\n\t } // If user has been hovering current image for half a second, look for a higher quality one\n\n\t }, {\n\t key: \"getHigherQuality\",\n\t value: function getHigherQuality(currentQualityIndex, previewImage, frame, thumbFilename) {\n\t var _this10 = this;\n\n\t if (currentQualityIndex < this.thumbnails.length - 1) {\n\t // Only use the higher quality version if it's going to look any better - if the current thumb is of a lower pixel density than the thumbnail container\n\t var previewImageHeight = previewImage.naturalHeight;\n\n\t if (this.usingSprites) {\n\t previewImageHeight = frame.h;\n\t }\n\n\t if (previewImageHeight < this.thumbContainerHeight) {\n\t // Recurse back to the loadImage function - show a higher quality one, but only if the viewer is on this frame for a while\n\t setTimeout(function () {\n\t // Make sure the mouse hasn't already moved on and started hovering at another image\n\t if (_this10.showingThumbFilename === thumbFilename) {\n\t _this10.player.debug.log(\"Showing higher quality thumb for: \".concat(thumbFilename));\n\n\t _this10.loadImage(currentQualityIndex + 1);\n\t }\n\t }, 300);\n\t }\n\t }\n\t }\n\t }, {\n\t key: \"toggleThumbContainer\",\n\t value: function toggleThumbContainer() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t var clearShowing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var className = this.player.config.classNames.previewThumbnails.thumbContainerShown;\n\t this.elements.thumb.container.classList.toggle(className, toggle);\n\n\t if (!toggle && clearShowing) {\n\t this.showingThumb = null;\n\t this.showingThumbFilename = null;\n\t }\n\t }\n\t }, {\n\t key: \"toggleScrubbingContainer\",\n\t value: function toggleScrubbingContainer() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t var className = this.player.config.classNames.previewThumbnails.scrubbingContainerShown;\n\t this.elements.scrubbing.container.classList.toggle(className, toggle);\n\n\t if (!toggle) {\n\t this.showingThumb = null;\n\t this.showingThumbFilename = null;\n\t }\n\t }\n\t }, {\n\t key: \"determineContainerAutoSizing\",\n\t value: function determineContainerAutoSizing() {\n\t if (this.elements.thumb.imageContainer.clientHeight > 20 || this.elements.thumb.imageContainer.clientWidth > 20) {\n\t // This will prevent auto sizing in this.setThumbContainerSizeAndPos()\n\t this.sizeSpecifiedInCSS = true;\n\t }\n\t } // Set the size to be about a quarter of the size of video. Unless option dynamicSize === false, in which case it needs to be set in CSS\n\n\t }, {\n\t key: \"setThumbContainerSizeAndPos\",\n\t value: function setThumbContainerSizeAndPos() {\n\t if (!this.sizeSpecifiedInCSS) {\n\t var thumbWidth = Math.floor(this.thumbContainerHeight * this.thumbAspectRatio);\n\t this.elements.thumb.imageContainer.style.height = \"\".concat(this.thumbContainerHeight, \"px\");\n\t this.elements.thumb.imageContainer.style.width = \"\".concat(thumbWidth, \"px\");\n\t } else if (this.elements.thumb.imageContainer.clientHeight > 20 && this.elements.thumb.imageContainer.clientWidth < 20) {\n\t var _thumbWidth = Math.floor(this.elements.thumb.imageContainer.clientHeight * this.thumbAspectRatio);\n\n\t this.elements.thumb.imageContainer.style.width = \"\".concat(_thumbWidth, \"px\");\n\t } else if (this.elements.thumb.imageContainer.clientHeight < 20 && this.elements.thumb.imageContainer.clientWidth > 20) {\n\t var thumbHeight = Math.floor(this.elements.thumb.imageContainer.clientWidth / this.thumbAspectRatio);\n\t this.elements.thumb.imageContainer.style.height = \"\".concat(thumbHeight, \"px\");\n\t }\n\n\t this.setThumbContainerPos();\n\t }\n\t }, {\n\t key: \"setThumbContainerPos\",\n\t value: function setThumbContainerPos() {\n\t var seekbarRect = this.player.elements.progress.getBoundingClientRect();\n\t var plyrRect = this.player.elements.container.getBoundingClientRect();\n\t var container = this.elements.thumb.container; // Find the lowest and highest desired left-position, so we don't slide out the side of the video container\n\n\t var minVal = plyrRect.left - seekbarRect.left + 10;\n\t var maxVal = plyrRect.right - seekbarRect.left - container.clientWidth - 10; // Set preview container position to: mousepos, minus seekbar.left, minus half of previewContainer.clientWidth\n\n\t var previewPos = this.mousePosX - seekbarRect.left - container.clientWidth / 2;\n\n\t if (previewPos < minVal) {\n\t previewPos = minVal;\n\t }\n\n\t if (previewPos > maxVal) {\n\t previewPos = maxVal;\n\t }\n\n\t container.style.left = \"\".concat(previewPos, \"px\");\n\t } // Can't use 100% width, in case the video is a different aspect ratio to the video container\n\n\t }, {\n\t key: \"setScrubbingContainerSize\",\n\t value: function setScrubbingContainerSize() {\n\t var _fitRatio = fitRatio(this.thumbAspectRatio, {\n\t width: this.player.media.clientWidth,\n\t height: this.player.media.clientHeight\n\t }),\n\t width = _fitRatio.width,\n\t height = _fitRatio.height;\n\n\t this.elements.scrubbing.container.style.width = \"\".concat(width, \"px\");\n\t this.elements.scrubbing.container.style.height = \"\".concat(height, \"px\");\n\t } // Sprites need to be offset to the correct location\n\n\t }, {\n\t key: \"setImageSizeAndOffset\",\n\t value: function setImageSizeAndOffset(previewImage, frame) {\n\t if (!this.usingSprites) {\n\t return;\n\t } // Find difference between height and preview container height\n\n\n\t var multiplier = this.thumbContainerHeight / frame.h; // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.height = \"\".concat(previewImage.naturalHeight * multiplier, \"px\"); // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.width = \"\".concat(previewImage.naturalWidth * multiplier, \"px\"); // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.left = \"-\".concat(frame.x * multiplier, \"px\"); // eslint-disable-next-line no-param-reassign\n\n\t previewImage.style.top = \"-\".concat(frame.y * multiplier, \"px\");\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t return this.player.isHTML5 && this.player.isVideo && this.player.config.previewThumbnails.enabled;\n\t }\n\t }, {\n\t key: \"currentImageContainer\",\n\t get: function get() {\n\t if (this.mouseDown) {\n\t return this.elements.scrubbing.container;\n\t }\n\n\t return this.elements.thumb.imageContainer;\n\t }\n\t }, {\n\t key: \"usingSprites\",\n\t get: function get() {\n\t return Object.keys(this.thumbnails[0].frames[0]).includes('w');\n\t }\n\t }, {\n\t key: \"thumbAspectRatio\",\n\t get: function get() {\n\t if (this.usingSprites) {\n\t return this.thumbnails[0].frames[0].w / this.thumbnails[0].frames[0].h;\n\t }\n\n\t return this.thumbnails[0].width / this.thumbnails[0].height;\n\t }\n\t }, {\n\t key: \"thumbContainerHeight\",\n\t get: function get() {\n\t if (this.mouseDown) {\n\t var _fitRatio2 = fitRatio(this.thumbAspectRatio, {\n\t width: this.player.media.clientWidth,\n\t height: this.player.media.clientHeight\n\t }),\n\t height = _fitRatio2.height;\n\n\t return height;\n\t } // If css is used this needs to return the css height for sprites to work (see setImageSizeAndOffset)\n\n\n\t if (this.sizeSpecifiedInCSS) {\n\t return this.elements.thumb.imageContainer.clientHeight;\n\t }\n\n\t return Math.floor(this.player.media.clientWidth / this.thumbAspectRatio / 4);\n\t }\n\t }, {\n\t key: \"currentImageElement\",\n\t get: function get() {\n\t if (this.mouseDown) {\n\t return this.currentScrubbingImageElement;\n\t }\n\n\t return this.currentThumbnailImageElement;\n\t },\n\t set: function set(element) {\n\t if (this.mouseDown) {\n\t this.currentScrubbingImageElement = element;\n\t } else {\n\t this.currentThumbnailImageElement = element;\n\t }\n\t }\n\t }]);\n\n\t return PreviewThumbnails;\n\t}();\n\n\tvar source = {\n\t // Add elements to HTML5 media (source, tracks, etc)\n\t insertElements: function insertElements(type, attributes) {\n\t var _this = this;\n\n\t if (is$2.string(attributes)) {\n\t insertElement(type, this.media, {\n\t src: attributes\n\t });\n\t } else if (is$2.array(attributes)) {\n\t attributes.forEach(function (attribute) {\n\t insertElement(type, _this.media, attribute);\n\t });\n\t }\n\t },\n\t // Update source\n\t // Sources are not checked for support so be careful\n\t change: function change(input) {\n\t var _this2 = this;\n\n\t if (!getDeep(input, 'sources.length')) {\n\t this.debug.warn('Invalid source format');\n\t return;\n\t } // Cancel current network requests\n\n\n\t html5.cancelRequests.call(this); // Destroy instance and re-setup\n\n\t this.destroy.call(this, function () {\n\t // Reset quality options\n\t _this2.options.quality = []; // Remove elements\n\n\t removeElement(_this2.media);\n\t _this2.media = null; // Reset class name\n\n\t if (is$2.element(_this2.elements.container)) {\n\t _this2.elements.container.removeAttribute('class');\n\t } // Set the type and provider\n\n\n\t var sources = input.sources,\n\t type = input.type;\n\n\t var _sources = _slicedToArray(sources, 1),\n\t _sources$ = _sources[0],\n\t _sources$$provider = _sources$.provider,\n\t provider = _sources$$provider === void 0 ? providers.html5 : _sources$$provider,\n\t src = _sources$.src;\n\n\t var tagName = provider === 'html5' ? type : 'div';\n\t var attributes = provider === 'html5' ? {} : {\n\t src: src\n\t };\n\t Object.assign(_this2, {\n\t provider: provider,\n\t type: type,\n\t // Check for support\n\t supported: support.check(type, provider, _this2.config.playsinline),\n\t // Create new element\n\t media: createElement$1(tagName, attributes)\n\t }); // Inject the new element\n\n\t _this2.elements.container.appendChild(_this2.media); // Autoplay the new source?\n\n\n\t if (is$2.boolean(input.autoplay)) {\n\t _this2.config.autoplay = input.autoplay;\n\t } // Set attributes for audio and video\n\n\n\t if (_this2.isHTML5) {\n\t if (_this2.config.crossorigin) {\n\t _this2.media.setAttribute('crossorigin', '');\n\t }\n\n\t if (_this2.config.autoplay) {\n\t _this2.media.setAttribute('autoplay', '');\n\t }\n\n\t if (!is$2.empty(input.poster)) {\n\t _this2.poster = input.poster;\n\t }\n\n\t if (_this2.config.loop.active) {\n\t _this2.media.setAttribute('loop', '');\n\t }\n\n\t if (_this2.config.muted) {\n\t _this2.media.setAttribute('muted', '');\n\t }\n\n\t if (_this2.config.playsinline) {\n\t _this2.media.setAttribute('playsinline', '');\n\t }\n\t } // Restore class hook\n\n\n\t ui.addStyleHook.call(_this2); // Set new sources for html5\n\n\t if (_this2.isHTML5) {\n\t source.insertElements.call(_this2, 'source', sources);\n\t } // Set video title\n\n\n\t _this2.config.title = input.title; // Set up from scratch\n\n\t media.setup.call(_this2); // HTML5 stuff\n\n\t if (_this2.isHTML5) {\n\t // Setup captions\n\t if (Object.keys(input).includes('tracks')) {\n\t source.insertElements.call(_this2, 'track', input.tracks);\n\t }\n\t } // If HTML5 or embed but not fully supported, setupInterface and call ready now\n\n\n\t if (_this2.isHTML5 || _this2.isEmbed && !_this2.supported.ui) {\n\t // Setup interface\n\t ui.build.call(_this2);\n\t } // Load HTML5 sources\n\n\n\t if (_this2.isHTML5) {\n\t _this2.media.load();\n\t } // Update previewThumbnails config & reload plugin\n\n\n\t if (!is$2.empty(input.previewThumbnails)) {\n\t Object.assign(_this2.config.previewThumbnails, input.previewThumbnails); // Cleanup previewThumbnails plugin if it was loaded\n\n\t if (_this2.previewThumbnails && _this2.previewThumbnails.loaded) {\n\t _this2.previewThumbnails.destroy();\n\n\t _this2.previewThumbnails = null;\n\t } // Create new instance if it is still enabled\n\n\n\t if (_this2.config.previewThumbnails.enabled) {\n\t _this2.previewThumbnails = new PreviewThumbnails(_this2);\n\t }\n\t } // Update the fullscreen support\n\n\n\t _this2.fullscreen.update();\n\t }, true);\n\t }\n\t};\n\n\t/**\n\t * Returns a number whose value is limited to the given range.\n\t *\n\t * Example: limit the output of this computation to between 0 and 255\n\t * (x * 255).clamp(0, 255)\n\t *\n\t * @param {Number} input\n\t * @param {Number} min The lower boundary of the output range\n\t * @param {Number} max The upper boundary of the output range\n\t * @returns A number in the range [min, max]\n\t * @type Number\n\t */\n\tfunction clamp() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 255;\n\t return Math.min(Math.max(input, min), max);\n\t}\n\n\t// TODO: Use a WeakMap for private globals\n\t// const globals = new WeakMap();\n\t// Plyr instance\n\n\tvar Plyr = /*#__PURE__*/function () {\n\t function Plyr(target, options) {\n\t var _this = this;\n\n\t _classCallCheck(this, Plyr);\n\n\t this.timers = {}; // State\n\n\t this.ready = false;\n\t this.loading = false;\n\t this.failed = false; // Touch device\n\n\t this.touch = support.touch; // Set the media element\n\n\t this.media = target; // String selector passed\n\n\t if (is$2.string(this.media)) {\n\t this.media = document.querySelectorAll(this.media);\n\t } // jQuery, NodeList or Array passed, use first element\n\n\n\t if (window.jQuery && this.media instanceof jQuery || is$2.nodeList(this.media) || is$2.array(this.media)) {\n\t // eslint-disable-next-line\n\t this.media = this.media[0];\n\t } // Set config\n\n\n\t this.config = extend$1({}, defaults$2, Plyr.defaults, options || {}, function () {\n\t try {\n\t return JSON.parse(_this.media.getAttribute('data-plyr-config'));\n\t } catch (e) {\n\t return {};\n\t }\n\t }()); // Elements cache\n\n\t this.elements = {\n\t container: null,\n\t fullscreen: null,\n\t captions: null,\n\t buttons: {},\n\t display: {},\n\t progress: {},\n\t inputs: {},\n\t settings: {\n\t popup: null,\n\t menu: null,\n\t panels: {},\n\t buttons: {}\n\t }\n\t }; // Captions\n\n\t this.captions = {\n\t active: null,\n\t currentTrack: -1,\n\t meta: new WeakMap()\n\t }; // Fullscreen\n\n\t this.fullscreen = {\n\t active: false\n\t }; // Options\n\n\t this.options = {\n\t speed: [],\n\t quality: []\n\t }; // Debugging\n\t // TODO: move to globals\n\n\t this.debug = new Console$1(this.config.debug); // Log config options and support\n\n\t this.debug.log('Config', this.config);\n\t this.debug.log('Support', support); // We need an element to setup\n\n\t if (is$2.nullOrUndefined(this.media) || !is$2.element(this.media)) {\n\t this.debug.error('Setup failed: no suitable element passed');\n\t return;\n\t } // Bail if the element is initialized\n\n\n\t if (this.media.plyr) {\n\t this.debug.warn('Target already setup');\n\t return;\n\t } // Bail if not enabled\n\n\n\t if (!this.config.enabled) {\n\t this.debug.error('Setup failed: disabled by config');\n\t return;\n\t } // Bail if disabled or no basic support\n\t // You may want to disable certain UAs etc\n\n\n\t if (!support.check().api) {\n\t this.debug.error('Setup failed: no support');\n\t return;\n\t } // Cache original element state for .destroy()\n\n\n\t var clone = this.media.cloneNode(true);\n\t clone.autoplay = false;\n\t this.elements.original = clone; // Set media type based on tag or data attribute\n\t // Supported: video, audio, vimeo, youtube\n\n\t var type = this.media.tagName.toLowerCase(); // Embed properties\n\n\t var iframe = null;\n\t var url = null; // Different setup based on type\n\n\t switch (type) {\n\t case 'div':\n\t // Find the frame\n\t iframe = this.media.querySelector('iframe'); // <iframe> type\n\n\t if (is$2.element(iframe)) {\n\t // Detect provider\n\t url = parseUrl$1(iframe.getAttribute('src'));\n\t this.provider = getProviderByUrl(url.toString()); // Rework elements\n\n\t this.elements.container = this.media;\n\t this.media = iframe; // Reset classname\n\n\t this.elements.container.className = ''; // Get attributes from URL and set config\n\n\t if (url.search.length) {\n\t var truthy = ['1', 'true'];\n\n\t if (truthy.includes(url.searchParams.get('autoplay'))) {\n\t this.config.autoplay = true;\n\t }\n\n\t if (truthy.includes(url.searchParams.get('loop'))) {\n\t this.config.loop.active = true;\n\t } // TODO: replace fullscreen.iosNative with this playsinline config option\n\t // YouTube requires the playsinline in the URL\n\n\n\t if (this.isYouTube) {\n\t this.config.playsinline = truthy.includes(url.searchParams.get('playsinline'));\n\t this.config.youtube.hl = url.searchParams.get('hl'); // TODO: Should this be setting language?\n\t } else {\n\t this.config.playsinline = true;\n\t }\n\t }\n\t } else {\n\t // <div> with attributes\n\t this.provider = this.media.getAttribute(this.config.attributes.embed.provider); // Remove attribute\n\n\t this.media.removeAttribute(this.config.attributes.embed.provider);\n\t } // Unsupported or missing provider\n\n\n\t if (is$2.empty(this.provider) || !Object.keys(providers).includes(this.provider)) {\n\t this.debug.error('Setup failed: Invalid provider');\n\t return;\n\t } // Audio will come later for external providers\n\n\n\t this.type = types.video;\n\t break;\n\n\t case 'video':\n\t case 'audio':\n\t this.type = type;\n\t this.provider = providers.html5; // Get config from attributes\n\n\t if (this.media.hasAttribute('crossorigin')) {\n\t this.config.crossorigin = true;\n\t }\n\n\t if (this.media.hasAttribute('autoplay')) {\n\t this.config.autoplay = true;\n\t }\n\n\t if (this.media.hasAttribute('playsinline') || this.media.hasAttribute('webkit-playsinline')) {\n\t this.config.playsinline = true;\n\t }\n\n\t if (this.media.hasAttribute('muted')) {\n\t this.config.muted = true;\n\t }\n\n\t if (this.media.hasAttribute('loop')) {\n\t this.config.loop.active = true;\n\t }\n\n\t break;\n\n\t default:\n\t this.debug.error('Setup failed: unsupported type');\n\t return;\n\t } // Check for support again but with type\n\n\n\t this.supported = support.check(this.type, this.provider, this.config.playsinline); // If no support for even API, bail\n\n\t if (!this.supported.api) {\n\t this.debug.error('Setup failed: no support');\n\t return;\n\t }\n\n\t this.eventListeners = []; // Create listeners\n\n\t this.listeners = new Listeners(this); // Setup local storage for user settings\n\n\t this.storage = new Storage$1(this); // Store reference\n\n\t this.media.plyr = this; // Wrap media\n\n\t if (!is$2.element(this.elements.container)) {\n\t this.elements.container = createElement$1('div', {\n\t tabindex: 0\n\t });\n\t wrap$4(this.media, this.elements.container);\n\t } // Migrate custom properties from media to container (so they work 😉)\n\n\n\t ui.migrateStyles.call(this); // Add style hook\n\n\t ui.addStyleHook.call(this); // Setup media\n\n\t media.setup.call(this); // Listen for events if debugging\n\n\t if (this.config.debug) {\n\t on.call(this, this.elements.container, this.config.events.join(' '), function (event) {\n\t _this.debug.log(\"event: \".concat(event.type));\n\t });\n\t } // Setup fullscreen\n\n\n\t this.fullscreen = new Fullscreen(this); // Setup interface\n\t // If embed but not fully supported, build interface now to avoid flash of controls\n\n\t if (this.isHTML5 || this.isEmbed && !this.supported.ui) {\n\t ui.build.call(this);\n\t } // Container listeners\n\n\n\t this.listeners.container(); // Global listeners\n\n\t this.listeners.global(); // Setup ads if provided\n\n\t if (this.config.ads.enabled) {\n\t this.ads = new Ads(this);\n\t } // Autoplay if required\n\n\n\t if (this.isHTML5 && this.config.autoplay) {\n\t setTimeout(function () {\n\t return silencePromise(_this.play());\n\t }, 10);\n\t } // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek\n\n\n\t this.lastSeekTime = 0; // Setup preview thumbnails if enabled\n\n\t if (this.config.previewThumbnails.enabled) {\n\t this.previewThumbnails = new PreviewThumbnails(this);\n\t }\n\t } // ---------------------------------------\n\t // API\n\t // ---------------------------------------\n\n\t /**\n\t * Types and provider helpers\n\t */\n\n\n\t _createClass(Plyr, [{\n\t key: \"play\",\n\n\t /**\n\t * Play the media, or play the advertisement (if they are not blocked)\n\t */\n\t value: function play() {\n\t var _this2 = this;\n\n\t if (!is$2.function(this.media.play)) {\n\t return null;\n\t } // Intecept play with ads\n\n\n\t if (this.ads && this.ads.enabled) {\n\t this.ads.managerPromise.then(function () {\n\t return _this2.ads.play();\n\t }).catch(function () {\n\t return silencePromise(_this2.media.play());\n\t });\n\t } // Return the promise (for HTML5)\n\n\n\t return this.media.play();\n\t }\n\t /**\n\t * Pause the media\n\t */\n\n\t }, {\n\t key: \"pause\",\n\t value: function pause() {\n\t if (!this.playing || !is$2.function(this.media.pause)) {\n\t return null;\n\t }\n\n\t return this.media.pause();\n\t }\n\t /**\n\t * Get playing state\n\t */\n\n\t }, {\n\t key: \"togglePlay\",\n\n\t /**\n\t * Toggle playback based on current status\n\t * @param {Boolean} input\n\t */\n\t value: function togglePlay(input) {\n\t // Toggle based on current state if nothing passed\n\t var toggle = is$2.boolean(input) ? input : !this.playing;\n\n\t if (toggle) {\n\t return this.play();\n\t }\n\n\t return this.pause();\n\t }\n\t /**\n\t * Stop playback\n\t */\n\n\t }, {\n\t key: \"stop\",\n\t value: function stop() {\n\t if (this.isHTML5) {\n\t this.pause();\n\t this.restart();\n\t } else if (is$2.function(this.media.stop)) {\n\t this.media.stop();\n\t }\n\t }\n\t /**\n\t * Restart playback\n\t */\n\n\t }, {\n\t key: \"restart\",\n\t value: function restart() {\n\t this.currentTime = 0;\n\t }\n\t /**\n\t * Rewind\n\t * @param {Number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n\t */\n\n\t }, {\n\t key: \"rewind\",\n\t value: function rewind(seekTime) {\n\t this.currentTime -= is$2.number(seekTime) ? seekTime : this.config.seekTime;\n\t }\n\t /**\n\t * Fast forward\n\t * @param {Number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n\t */\n\n\t }, {\n\t key: \"forward\",\n\t value: function forward(seekTime) {\n\t this.currentTime += is$2.number(seekTime) ? seekTime : this.config.seekTime;\n\t }\n\t /**\n\t * Seek to a time\n\t * @param {Number} input - where to seek to in seconds. Defaults to 0 (the start)\n\t */\n\n\t }, {\n\t key: \"increaseVolume\",\n\n\t /**\n\t * Increase volume\n\t * @param {Boolean} step - How much to decrease by (between 0 and 1)\n\t */\n\t value: function increaseVolume(step) {\n\t var volume = this.media.muted ? 0 : this.volume;\n\t this.volume = volume + (is$2.number(step) ? step : 0);\n\t }\n\t /**\n\t * Decrease volume\n\t * @param {Boolean} step - How much to decrease by (between 0 and 1)\n\t */\n\n\t }, {\n\t key: \"decreaseVolume\",\n\t value: function decreaseVolume(step) {\n\t this.increaseVolume(-step);\n\t }\n\t /**\n\t * Set muted state\n\t * @param {Boolean} mute\n\t */\n\n\t }, {\n\t key: \"toggleCaptions\",\n\n\t /**\n\t * Toggle captions\n\t * @param {Boolean} input - Whether to enable captions\n\t */\n\t value: function toggleCaptions(input) {\n\t captions.toggle.call(this, input, false);\n\t }\n\t /**\n\t * Set the caption track by index\n\t * @param {Number} - Caption index\n\t */\n\n\t }, {\n\t key: \"airplay\",\n\n\t /**\n\t * Trigger the airplay dialog\n\t * TODO: update player with state, support, enabled\n\t */\n\t value: function airplay() {\n\t // Show dialog if supported\n\t if (support.airplay) {\n\t this.media.webkitShowPlaybackTargetPicker();\n\t }\n\t }\n\t /**\n\t * Toggle the player controls\n\t * @param {Boolean} [toggle] - Whether to show the controls\n\t */\n\n\t }, {\n\t key: \"toggleControls\",\n\t value: function toggleControls(toggle) {\n\t // Don't toggle if missing UI support or if it's audio\n\t if (this.supported.ui && !this.isAudio) {\n\t // Get state before change\n\t var isHidden = hasClass(this.elements.container, this.config.classNames.hideControls); // Negate the argument if not undefined since adding the class to hides the controls\n\n\t var force = typeof toggle === 'undefined' ? undefined : !toggle; // Apply and get updated state\n\n\t var hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force); // Close menu\n\n\t if (hiding && this.config.controls.includes('settings') && !is$2.empty(this.config.settings)) {\n\t controls.toggleMenu.call(this, false);\n\t } // Trigger event on change\n\n\n\t if (hiding !== isHidden) {\n\t var eventName = hiding ? 'controlshidden' : 'controlsshown';\n\t triggerEvent.call(this, this.media, eventName);\n\t }\n\n\t return !hiding;\n\t }\n\n\t return false;\n\t }\n\t /**\n\t * Add event listeners\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t */\n\n\t }, {\n\t key: \"on\",\n\t value: function on$1(event, callback) {\n\t on.call(this, this.elements.container, event, callback);\n\t }\n\t /**\n\t * Add event listeners once\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t */\n\n\t }, {\n\t key: \"once\",\n\t value: function once$1(event, callback) {\n\t once.call(this, this.elements.container, event, callback);\n\t }\n\t /**\n\t * Remove event listeners\n\t * @param {String} event - Event type\n\t * @param {Function} callback - Callback for when event occurs\n\t */\n\n\t }, {\n\t key: \"off\",\n\t value: function off$1(event, callback) {\n\t off(this.elements.container, event, callback);\n\t }\n\t /**\n\t * Destroy an instance\n\t * Event listeners are removed when elements are removed\n\t * http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n\t * @param {Function} callback - Callback for when destroy is complete\n\t * @param {Boolean} soft - Whether it's a soft destroy (for source changes etc)\n\t */\n\n\t }, {\n\t key: \"destroy\",\n\t value: function destroy(callback) {\n\t var _this3 = this;\n\n\t var soft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!this.ready) {\n\t return;\n\t }\n\n\t var done = function done() {\n\t // Reset overflow (incase destroyed while in fullscreen)\n\t document.body.style.overflow = ''; // GC for embed\n\n\t _this3.embed = null; // If it's a soft destroy, make minimal changes\n\n\t if (soft) {\n\t if (Object.keys(_this3.elements).length) {\n\t // Remove elements\n\t removeElement(_this3.elements.buttons.play);\n\t removeElement(_this3.elements.captions);\n\t removeElement(_this3.elements.controls);\n\t removeElement(_this3.elements.wrapper); // Clear for GC\n\n\t _this3.elements.buttons.play = null;\n\t _this3.elements.captions = null;\n\t _this3.elements.controls = null;\n\t _this3.elements.wrapper = null;\n\t } // Callback\n\n\n\t if (is$2.function(callback)) {\n\t callback();\n\t }\n\t } else {\n\t // Unbind listeners\n\t unbindListeners.call(_this3); // Replace the container with the original element provided\n\n\t replaceElement(_this3.elements.original, _this3.elements.container); // Event\n\n\t triggerEvent.call(_this3, _this3.elements.original, 'destroyed', true); // Callback\n\n\t if (is$2.function(callback)) {\n\t callback.call(_this3.elements.original);\n\t } // Reset state\n\n\n\t _this3.ready = false; // Clear for garbage collection\n\n\t setTimeout(function () {\n\t _this3.elements = null;\n\t _this3.media = null;\n\t }, 200);\n\t }\n\t }; // Stop playback\n\n\n\t this.stop(); // Clear timeouts\n\n\t clearTimeout(this.timers.loading);\n\t clearTimeout(this.timers.controls);\n\t clearTimeout(this.timers.resized); // Provider specific stuff\n\n\t if (this.isHTML5) {\n\t // Restore native video controls\n\t ui.toggleNativeControls.call(this, true); // Clean up\n\n\t done();\n\t } else if (this.isYouTube) {\n\t // Clear timers\n\t clearInterval(this.timers.buffering);\n\t clearInterval(this.timers.playing); // Destroy YouTube API\n\n\t if (this.embed !== null && is$2.function(this.embed.destroy)) {\n\t this.embed.destroy();\n\t } // Clean up\n\n\n\t done();\n\t } else if (this.isVimeo) {\n\t // Destroy Vimeo API\n\t // then clean up (wait, to prevent postmessage errors)\n\t if (this.embed !== null) {\n\t this.embed.unload().then(done);\n\t } // Vimeo does not always return\n\n\n\t setTimeout(done, 200);\n\t }\n\t }\n\t /**\n\t * Check for support for a mime type (HTML5 only)\n\t * @param {String} type - Mime type\n\t */\n\n\t }, {\n\t key: \"supports\",\n\t value: function supports(type) {\n\t return support.mime.call(this, type);\n\t }\n\t /**\n\t * Check for support\n\t * @param {String} type - Player type (audio/video)\n\t * @param {String} provider - Provider (html5/youtube/vimeo)\n\t * @param {Boolean} inline - Where player has `playsinline` sttribute\n\t */\n\n\t }, {\n\t key: \"isHTML5\",\n\t get: function get() {\n\t return this.provider === providers.html5;\n\t }\n\t }, {\n\t key: \"isEmbed\",\n\t get: function get() {\n\t return this.isYouTube || this.isVimeo;\n\t }\n\t }, {\n\t key: \"isYouTube\",\n\t get: function get() {\n\t return this.provider === providers.youtube;\n\t }\n\t }, {\n\t key: \"isVimeo\",\n\t get: function get() {\n\t return this.provider === providers.vimeo;\n\t }\n\t }, {\n\t key: \"isVideo\",\n\t get: function get() {\n\t return this.type === types.video;\n\t }\n\t }, {\n\t key: \"isAudio\",\n\t get: function get() {\n\t return this.type === types.audio;\n\t }\n\t }, {\n\t key: \"playing\",\n\t get: function get() {\n\t return Boolean(this.ready && !this.paused && !this.ended);\n\t }\n\t /**\n\t * Get paused state\n\t */\n\n\t }, {\n\t key: \"paused\",\n\t get: function get() {\n\t return Boolean(this.media.paused);\n\t }\n\t /**\n\t * Get stopped state\n\t */\n\n\t }, {\n\t key: \"stopped\",\n\t get: function get() {\n\t return Boolean(this.paused && this.currentTime === 0);\n\t }\n\t /**\n\t * Get ended state\n\t */\n\n\t }, {\n\t key: \"ended\",\n\t get: function get() {\n\t return Boolean(this.media.ended);\n\t }\n\t }, {\n\t key: \"currentTime\",\n\t set: function set(input) {\n\t // Bail if media duration isn't available yet\n\t if (!this.duration) {\n\t return;\n\t } // Validate input\n\n\n\t var inputIsValid = is$2.number(input) && input > 0; // Set\n\n\t this.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0; // Logging\n\n\t this.debug.log(\"Seeking to \".concat(this.currentTime, \" seconds\"));\n\t }\n\t /**\n\t * Get current time\n\t */\n\t ,\n\t get: function get() {\n\t return Number(this.media.currentTime);\n\t }\n\t /**\n\t * Get buffered\n\t */\n\n\t }, {\n\t key: \"buffered\",\n\t get: function get() {\n\t var buffered = this.media.buffered; // YouTube / Vimeo return a float between 0-1\n\n\t if (is$2.number(buffered)) {\n\t return buffered;\n\t } // HTML5\n\t // TODO: Handle buffered chunks of the media\n\t // (i.e. seek to another section buffers only that section)\n\n\n\t if (buffered && buffered.length && this.duration > 0) {\n\t return buffered.end(0) / this.duration;\n\t }\n\n\t return 0;\n\t }\n\t /**\n\t * Get seeking status\n\t */\n\n\t }, {\n\t key: \"seeking\",\n\t get: function get() {\n\t return Boolean(this.media.seeking);\n\t }\n\t /**\n\t * Get the duration of the current media\n\t */\n\n\t }, {\n\t key: \"duration\",\n\t get: function get() {\n\t // Faux duration set via config\n\t var fauxDuration = parseFloat(this.config.duration); // Media duration can be NaN or Infinity before the media has loaded\n\n\t var realDuration = (this.media || {}).duration;\n\t var duration = !is$2.number(realDuration) || realDuration === Infinity ? 0 : realDuration; // If config duration is funky, use regular duration\n\n\t return fauxDuration || duration;\n\t }\n\t /**\n\t * Set the player volume\n\t * @param {Number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n\t */\n\n\t }, {\n\t key: \"volume\",\n\t set: function set(value) {\n\t var volume = value;\n\t var max = 1;\n\t var min = 0;\n\n\t if (is$2.string(volume)) {\n\t volume = Number(volume);\n\t } // Load volume from storage if no value specified\n\n\n\t if (!is$2.number(volume)) {\n\t volume = this.storage.get('volume');\n\t } // Use config if all else fails\n\n\n\t if (!is$2.number(volume)) {\n\t volume = this.config.volume;\n\t } // Maximum is volumeMax\n\n\n\t if (volume > max) {\n\t volume = max;\n\t } // Minimum is volumeMin\n\n\n\t if (volume < min) {\n\t volume = min;\n\t } // Update config\n\n\n\t this.config.volume = volume; // Set the player volume\n\n\t this.media.volume = volume; // If muted, and we're increasing volume manually, reset muted state\n\n\t if (!is$2.empty(value) && this.muted && volume > 0) {\n\t this.muted = false;\n\t }\n\t }\n\t /**\n\t * Get the current player volume\n\t */\n\t ,\n\t get: function get() {\n\t return Number(this.media.volume);\n\t }\n\t }, {\n\t key: \"muted\",\n\t set: function set(mute) {\n\t var toggle = mute; // Load muted state from storage\n\n\t if (!is$2.boolean(toggle)) {\n\t toggle = this.storage.get('muted');\n\t } // Use config if all else fails\n\n\n\t if (!is$2.boolean(toggle)) {\n\t toggle = this.config.muted;\n\t } // Update config\n\n\n\t this.config.muted = toggle; // Set mute on the player\n\n\t this.media.muted = toggle;\n\t }\n\t /**\n\t * Get current muted state\n\t */\n\t ,\n\t get: function get() {\n\t return Boolean(this.media.muted);\n\t }\n\t /**\n\t * Check if the media has audio\n\t */\n\n\t }, {\n\t key: \"hasAudio\",\n\t get: function get() {\n\t // Assume yes for all non HTML5 (as we can't tell...)\n\t if (!this.isHTML5) {\n\t return true;\n\t }\n\n\t if (this.isAudio) {\n\t return true;\n\t } // Get audio tracks\n\n\n\t return Boolean(this.media.mozHasAudio) || Boolean(this.media.webkitAudioDecodedByteCount) || Boolean(this.media.audioTracks && this.media.audioTracks.length);\n\t }\n\t /**\n\t * Set playback speed\n\t * @param {Number} speed - the speed of playback (0.5-2.0)\n\t */\n\n\t }, {\n\t key: \"speed\",\n\t set: function set(input) {\n\t var _this4 = this;\n\n\t var speed = null;\n\n\t if (is$2.number(input)) {\n\t speed = input;\n\t }\n\n\t if (!is$2.number(speed)) {\n\t speed = this.storage.get('speed');\n\t }\n\n\t if (!is$2.number(speed)) {\n\t speed = this.config.speed.selected;\n\t } // Clamp to min/max\n\n\n\t var min = this.minimumSpeed,\n\t max = this.maximumSpeed;\n\t speed = clamp(speed, min, max); // Update config\n\n\t this.config.speed.selected = speed; // Set media speed\n\n\t setTimeout(function () {\n\t _this4.media.playbackRate = speed;\n\t }, 0);\n\t }\n\t /**\n\t * Get current playback speed\n\t */\n\t ,\n\t get: function get() {\n\t return Number(this.media.playbackRate);\n\t }\n\t /**\n\t * Get the minimum allowed speed\n\t */\n\n\t }, {\n\t key: \"minimumSpeed\",\n\t get: function get() {\n\t if (this.isYouTube) {\n\t // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n\t return Math.min.apply(Math, _toConsumableArray(this.options.speed));\n\t }\n\n\t if (this.isVimeo) {\n\t // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n\t return 0.5;\n\t } // https://stackoverflow.com/a/32320020/1191319\n\n\n\t return 0.0625;\n\t }\n\t /**\n\t * Get the maximum allowed speed\n\t */\n\n\t }, {\n\t key: \"maximumSpeed\",\n\t get: function get() {\n\t if (this.isYouTube) {\n\t // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n\t return Math.max.apply(Math, _toConsumableArray(this.options.speed));\n\t }\n\n\t if (this.isVimeo) {\n\t // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n\t return 2;\n\t } // https://stackoverflow.com/a/32320020/1191319\n\n\n\t return 16;\n\t }\n\t /**\n\t * Set playback quality\n\t * Currently HTML5 & YouTube only\n\t * @param {Number} input - Quality level\n\t */\n\n\t }, {\n\t key: \"quality\",\n\t set: function set(input) {\n\t var config = this.config.quality;\n\t var options = this.options.quality;\n\n\t if (!options.length) {\n\t return;\n\t }\n\n\t var quality = [!is$2.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is$2.number);\n\t var updateStorage = true;\n\n\t if (!options.includes(quality)) {\n\t var value = closest$1(options, quality);\n\t this.debug.warn(\"Unsupported quality option: \".concat(quality, \", using \").concat(value, \" instead\"));\n\t quality = value; // Don't update storage if quality is not supported\n\n\t updateStorage = false;\n\t } // Update config\n\n\n\t config.selected = quality; // Set quality\n\n\t this.media.quality = quality; // Save to storage\n\n\t if (updateStorage) {\n\t this.storage.set({\n\t quality: quality\n\t });\n\t }\n\t }\n\t /**\n\t * Get current quality level\n\t */\n\t ,\n\t get: function get() {\n\t return this.media.quality;\n\t }\n\t /**\n\t * Toggle loop\n\t * TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n\t * @param {Boolean} input - Whether to loop or not\n\t */\n\n\t }, {\n\t key: \"loop\",\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : this.config.loop.active;\n\t this.config.loop.active = toggle;\n\t this.media.loop = toggle; // Set default to be a true toggle\n\n\t /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle';\n\t switch (type) {\n\t case 'start':\n\t if (this.config.loop.end && this.config.loop.end <= this.currentTime) {\n\t this.config.loop.end = null;\n\t }\n\t this.config.loop.start = this.currentTime;\n\t // this.config.loop.indicator.start = this.elements.display.played.value;\n\t break;\n\t case 'end':\n\t if (this.config.loop.start >= this.currentTime) {\n\t return this;\n\t }\n\t this.config.loop.end = this.currentTime;\n\t // this.config.loop.indicator.end = this.elements.display.played.value;\n\t break;\n\t case 'all':\n\t this.config.loop.start = 0;\n\t this.config.loop.end = this.duration - 2;\n\t this.config.loop.indicator.start = 0;\n\t this.config.loop.indicator.end = 100;\n\t break;\n\t case 'toggle':\n\t if (this.config.loop.active) {\n\t this.config.loop.start = 0;\n\t this.config.loop.end = null;\n\t } else {\n\t this.config.loop.start = 0;\n\t this.config.loop.end = this.duration - 2;\n\t }\n\t break;\n\t default:\n\t this.config.loop.start = 0;\n\t this.config.loop.end = null;\n\t break;\n\t } */\n\t }\n\t /**\n\t * Get current loop state\n\t */\n\t ,\n\t get: function get() {\n\t return Boolean(this.media.loop);\n\t }\n\t /**\n\t * Set new media source\n\t * @param {Object} input - The new source object (see docs)\n\t */\n\n\t }, {\n\t key: \"source\",\n\t set: function set(input) {\n\t source.change.call(this, input);\n\t }\n\t /**\n\t * Get current source\n\t */\n\t ,\n\t get: function get() {\n\t return this.media.currentSrc;\n\t }\n\t /**\n\t * Get a download URL (either source or custom)\n\t */\n\n\t }, {\n\t key: \"download\",\n\t get: function get() {\n\t var download = this.config.urls.download;\n\t return is$2.url(download) ? download : this.source;\n\t }\n\t /**\n\t * Set the download URL\n\t */\n\t ,\n\t set: function set(input) {\n\t if (!is$2.url(input)) {\n\t return;\n\t }\n\n\t this.config.urls.download = input;\n\t controls.setDownloadUrl.call(this);\n\t }\n\t /**\n\t * Set the poster image for a video\n\t * @param {String} input - the URL for the new poster image\n\t */\n\n\t }, {\n\t key: \"poster\",\n\t set: function set(input) {\n\t if (!this.isVideo) {\n\t this.debug.warn('Poster can only be set for video');\n\t return;\n\t }\n\n\t ui.setPoster.call(this, input, false).catch(function () {});\n\t }\n\t /**\n\t * Get the current poster image\n\t */\n\t ,\n\t get: function get() {\n\t if (!this.isVideo) {\n\t return null;\n\t }\n\n\t return this.media.getAttribute('poster') || this.media.getAttribute('data-poster');\n\t }\n\t /**\n\t * Get the current aspect ratio in use\n\t */\n\n\t }, {\n\t key: \"ratio\",\n\t get: function get() {\n\t if (!this.isVideo) {\n\t return null;\n\t }\n\n\t var ratio = reduceAspectRatio(getAspectRatio.call(this));\n\t return is$2.array(ratio) ? ratio.join(':') : ratio;\n\t }\n\t /**\n\t * Set video aspect ratio\n\t */\n\t ,\n\t set: function set(input) {\n\t if (!this.isVideo) {\n\t this.debug.warn('Aspect ratio can only be set for video');\n\t return;\n\t }\n\n\t if (!is$2.string(input) || !validateRatio(input)) {\n\t this.debug.error(\"Invalid aspect ratio specified (\".concat(input, \")\"));\n\t return;\n\t }\n\n\t this.config.ratio = input;\n\t setAspectRatio.call(this);\n\t }\n\t /**\n\t * Set the autoplay state\n\t * @param {Boolean} input - Whether to autoplay or not\n\t */\n\n\t }, {\n\t key: \"autoplay\",\n\t set: function set(input) {\n\t var toggle = is$2.boolean(input) ? input : this.config.autoplay;\n\t this.config.autoplay = toggle;\n\t }\n\t /**\n\t * Get the current autoplay state\n\t */\n\t ,\n\t get: function get() {\n\t return Boolean(this.config.autoplay);\n\t }\n\t }, {\n\t key: \"currentTrack\",\n\t set: function set(input) {\n\t captions.set.call(this, input, false);\n\t }\n\t /**\n\t * Get the current caption track index (-1 if disabled)\n\t */\n\t ,\n\t get: function get() {\n\t var _this$captions = this.captions,\n\t toggled = _this$captions.toggled,\n\t currentTrack = _this$captions.currentTrack;\n\t return toggled ? currentTrack : -1;\n\t }\n\t /**\n\t * Set the wanted language for captions\n\t * Since tracks can be added later it won't update the actual caption track until there is a matching track\n\t * @param {String} - Two character ISO language code (e.g. EN, FR, PT, etc)\n\t */\n\n\t }, {\n\t key: \"language\",\n\t set: function set(input) {\n\t captions.setLanguage.call(this, input, false);\n\t }\n\t /**\n\t * Get the current track's language\n\t */\n\t ,\n\t get: function get() {\n\t return (captions.getCurrentTrack.call(this) || {}).language;\n\t }\n\t /**\n\t * Toggle picture-in-picture playback on WebKit/MacOS\n\t * TODO: update player with state, support, enabled\n\t * TODO: detect outside changes\n\t */\n\n\t }, {\n\t key: \"pip\",\n\t set: function set(input) {\n\t // Bail if no support\n\t if (!support.pip) {\n\t return;\n\t } // Toggle based on current state if not passed\n\n\n\t var toggle = is$2.boolean(input) ? input : !this.pip; // Toggle based on current state\n\t // Safari\n\n\t if (is$2.function(this.media.webkitSetPresentationMode)) {\n\t this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n\t } // Chrome\n\n\n\t if (is$2.function(this.media.requestPictureInPicture)) {\n\t if (!this.pip && toggle) {\n\t this.media.requestPictureInPicture();\n\t } else if (this.pip && !toggle) {\n\t document.exitPictureInPicture();\n\t }\n\t }\n\t }\n\t /**\n\t * Get the current picture-in-picture state\n\t */\n\t ,\n\t get: function get() {\n\t if (!support.pip) {\n\t return null;\n\t } // Safari\n\n\n\t if (!is$2.empty(this.media.webkitPresentationMode)) {\n\t return this.media.webkitPresentationMode === pip.active;\n\t } // Chrome\n\n\n\t return this.media === document.pictureInPictureElement;\n\t }\n\t }], [{\n\t key: \"supported\",\n\t value: function supported(type, provider, inline) {\n\t return support.check(type, provider, inline);\n\t }\n\t /**\n\t * Load an SVG sprite into the page\n\t * @param {String} url - URL for the SVG sprite\n\t * @param {String} [id] - Unique ID\n\t */\n\n\t }, {\n\t key: \"loadSprite\",\n\t value: function loadSprite$1(url, id) {\n\t return loadSprite(url, id);\n\t }\n\t /**\n\t * Setup multiple instances\n\t * @param {*} selector\n\t * @param {Object} options\n\t */\n\n\t }, {\n\t key: \"setup\",\n\t value: function setup(selector) {\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var targets = null;\n\n\t if (is$2.string(selector)) {\n\t targets = Array.from(document.querySelectorAll(selector));\n\t } else if (is$2.nodeList(selector)) {\n\t targets = Array.from(selector);\n\t } else if (is$2.array(selector)) {\n\t targets = selector.filter(is$2.element);\n\t }\n\n\t if (is$2.empty(targets)) {\n\t return null;\n\t }\n\n\t return targets.map(function (t) {\n\t return new Plyr(t, options);\n\t });\n\t }\n\t }]);\n\n\t return Plyr;\n\t}();\n\n\tPlyr.defaults = cloneDeep(defaults$2);\n\n\tvar sources = {\n\t video: {\n\t type: 'video',\n\t title: 'View From A Blue Moon',\n\t sources: [{\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4',\n\t type: 'video/mp4',\n\t size: 576\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4',\n\t type: 'video/mp4',\n\t size: 720\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4',\n\t type: 'video/mp4',\n\t size: 1080\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4',\n\t type: 'video/mp4',\n\t size: 1440\n\t }],\n\t poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg',\n\t tracks: [{\n\t kind: 'captions',\n\t label: 'English',\n\t srclang: 'en',\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n\t default: true\n\t }, {\n\t kind: 'captions',\n\t label: 'French',\n\t srclang: 'fr',\n\t src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt'\n\t }],\n\t previewThumbnails: {\n\t src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt']\n\t }\n\t },\n\t audio: {\n\t type: 'audio',\n\t title: 'Kishi Bashi – “It All Began With A Burst”',\n\t sources: [{\n\t src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',\n\t type: 'audio/mp3'\n\t }, {\n\t src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg',\n\t type: 'audio/ogg'\n\t }]\n\t },\n\t youtube: {\n\t type: 'video',\n\t sources: [{\n\t src: 'https://youtube.com/watch?v=bTqVqk7FSmY',\n\t provider: 'youtube'\n\t }]\n\t },\n\t vimeo: {\n\t type: 'video',\n\t sources: [{\n\t src: 'https://vimeo.com/40648169',\n\t provider: 'vimeo'\n\t }]\n\t }\n\t};\n\n\t// Toggle class on an element\n\tvar toggleClass$1 = function toggleClass(element) {\n\t var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var toggle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t return element && element.classList[toggle ? 'add' : 'remove'](className);\n\t};\n\n\t(function () {\n\t var production = 'plyr.io'; // Sentry for demo site (https://plyr.io) only\n\n\t if (window.location.host === production) {\n\t init({\n\t dsn: 'https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555',\n\t whitelistUrls: [production].map(function (d) {\n\t return new RegExp(\"https://(([a-z0-9])+(.))*\".concat(d));\n\t })\n\t });\n\t }\n\n\t document.addEventListener('DOMContentLoaded', function () {\n\t var selector = '#player'; // Setup share buttons\n\n\t Shr.setup('.js-shr', {\n\t count: {\n\t className: 'button__count'\n\t },\n\t wrapper: {\n\t className: 'button--with-count'\n\t }\n\t }); // Setup the player\n\n\t var player = new Plyr(selector, {\n\t debug: true,\n\t title: 'View From A Blue Moon',\n\t iconUrl: 'dist/demo.svg',\n\t keyboard: {\n\t global: true\n\t },\n\t tooltips: {\n\t controls: true\n\t },\n\t captions: {\n\t active: true\n\t },\n\t ads: {\n\t enabled: window.location.host.includes(production),\n\t publisherId: '918848828995742'\n\t },\n\t previewThumbnails: {\n\t enabled: true,\n\t src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt']\n\t },\n\t vimeo: {\n\t // Prevent Vimeo blocking plyr.io demo site\n\t referrerPolicy: 'no-referrer'\n\t }\n\t }); // Expose for tinkering in the console\n\n\t window.player = player; // Setup type toggle\n\n\t var buttons = document.querySelectorAll('[data-source]');\n\t var types = Object.keys(sources);\n\t var historySupport = Boolean(window.history && window.history.pushState);\n\t var currentType = window.location.hash.substring(1);\n\t var hasInitialType = currentType.length;\n\n\t function render(type) {\n\t // Remove active classes\n\t Array.from(buttons).forEach(function (button) {\n\t return toggleClass$1(button.parentElement, 'active', false);\n\t }); // Set active on parent\n\n\t toggleClass$1(document.querySelector(\"[data-source=\\\"\".concat(type, \"\\\"]\")), 'active', true); // Show cite\n\n\t Array.from(document.querySelectorAll('.plyr__cite')).forEach(function (cite) {\n\t // eslint-disable-next-line no-param-reassign\n\t cite.hidden = true;\n\t });\n\t document.querySelector(\".plyr__cite--\".concat(type)).hidden = false;\n\t } // Set a new source\n\n\n\t function setSource(type, init) {\n\t // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video\n\t if (!types.includes(type) || !init && type === currentType || !currentType.length && type === 'video') {\n\t return;\n\t } // Set the new source\n\n\n\t player.source = sources[type]; // Set the current type for next time\n\n\t currentType = type;\n\t render(type);\n\t } // Bind to each button\n\n\n\t Array.from(buttons).forEach(function (button) {\n\t button.addEventListener('click', function () {\n\t var type = button.getAttribute('data-source');\n\t setSource(type);\n\n\t if (historySupport) {\n\t window.history.pushState({\n\t type: type\n\t }, '', \"#\".concat(type));\n\t }\n\t });\n\t }); // List for backwards/forwards\n\n\t window.addEventListener('popstate', function (event) {\n\t if (event.state && Object.keys(event.state).includes('type')) {\n\t setSource(event.state.type);\n\t }\n\t }); // If there's no current type set, assume video\n\n\t if (!hasInitialType) {\n\t currentType = 'video';\n\t } // Replace current history state\n\n\n\t if (historySupport && types.includes(currentType)) {\n\t window.history.replaceState({\n\t type: currentType\n\t }, '', hasInitialType ? \"#\".concat(currentType) : '');\n\t } // If it's not video, load the source\n\n\n\t if (currentType !== 'video') {\n\t setSource(currentType, true);\n\t }\n\n\t render(currentType);\n\t });\n\t})();\n\n}());\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","// Setup tab focus\nconst container = document.getElementById('container');\nconst tabClassName = 'tab-focus';\n\n// Remove class on blur\ndocument.addEventListener('focusout', event => {\n if (!event.target.classList || container.contains(event.target)) {\n return;\n }\n\n event.target.classList.remove(tabClassName);\n});\n\n// Add classname to tabbed elements\ndocument.addEventListener('keydown', event => {\n if (event.keyCode !== 9) {\n return;\n }\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n setTimeout(() => {\n const focused = document.activeElement;\n\n if (!focused || !focused.classList || container.contains(focused)) {\n return;\n }\n\n focused.classList.add(tabClassName);\n }, 10);\n});\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (new URLSearchParams('?a=1').toString() === 'a=1') && (typeof URLSearchParams.prototype.set === 'function');\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/** JSDoc */\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\n(function (Severity) {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n function fromString(level) {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n Severity.fromString = fromString;\n})(Severity || (Severity = {}));\n//# sourceMappingURL=severity.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent to Sentry successfully. */\n Status[\"Success\"] = \"success\";\n /** The client is currently rate limited and will try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n})(Status || (Status = {}));\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\n(function (Status) {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n function fromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n }\n Status.fromHttpCode = fromHttpCode;\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n/**\n * setPrototypeOf polyfill using __proto__\n */\nfunction setProtoOf(obj, proto) {\n // @ts-ignore\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import * as tslib_1 from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n tslib_1.__extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n // tslint:disable:no-unsafe-any\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat) {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat) {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat) {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat) {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat) {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat) {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n // tslint:disable:no-unsafe-any\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n // tslint:enable:no-unsafe-any\n}\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat) {\n // tslint:disable-next-line:no-unsafe-any\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat, base) {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\n//# sourceMappingURL=is.js.map","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","import { isRegExp, isString } from './is';\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str, max) {\n if (max === void 0) { max = 0; }\n // tslint:disable-next-line:strict-type-predicates\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + \"...\";\n}\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line, colno) {\n var newLine = line;\n var ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n colno = ll; // tslint:disable-line:no-parameter-reassignment\n }\n var start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n var end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = \"'{snip} \" + newLine;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n return newLine;\n}\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n }\n catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n return output.join(delimiter);\n}\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n//# sourceMappingURL=string.js.map","import { isString } from './is';\nimport { snipLine } from './string';\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nexport function dynamicRequire(mod, request) {\n // tslint:disable-next-line: no-unsafe-any\n return mod.require(request);\n}\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n // tslint:disable:strict-type-predicates\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject);\n}\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n var global = getGlobalObject();\n var crypto = global.crypto || global.msCrypto;\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n // set 4 in byte 7\n // tslint:disable-next-line:no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // tslint:disable-next-line:no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n var pad = function (num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = \"0\" + v;\n }\n return v;\n };\n return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // tslint:disable-next-line:no-bitwise\n var r = (Math.random() * 16) | 0;\n // tslint:disable-next-line:no-bitwise\n var v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url) {\n if (!url) {\n return {};\n }\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) {\n return {};\n }\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment,\n };\n}\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event) {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n var exception = event.exception.values[0];\n if (exception.type && exception.value) {\n return exception.type + \": \" + exception.value;\n }\n return exception.type || exception.value || event.event_id || '<unknown>';\n }\n return event.event_id || '<unknown>';\n}\n/** JSDoc */\nexport function consoleSandbox(callback) {\n var global = getGlobalObject();\n var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n if (!('console' in global)) {\n return callback();\n }\n var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n levels.forEach(function (level) {\n if (level in global.console && originalConsole[level].__sentry_original__) {\n wrappedLevels[level] = originalConsole[level];\n originalConsole[level] = originalConsole[level].__sentry_original__;\n }\n });\n // Perform callback manipulations\n var result = callback();\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(function (level) {\n originalConsole[level] = wrappedLevels[level];\n });\n return result;\n}\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event, value, type) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(event, mechanism) {\n if (mechanism === void 0) { mechanism = {}; }\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore\n // tslint:disable:no-non-null-assertion\n event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};\n Object.keys(mechanism).forEach(function (key) {\n // @ts-ignore\n event.exception.values[0].mechanism[key] = mechanism[key];\n });\n }\n catch (_oO) {\n // no-empty\n }\n}\n/**\n * A safe form of location.href\n */\nexport function getLocationHref() {\n try {\n return document.location.href;\n }\n catch (oO) {\n return '';\n }\n}\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem) {\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n var currentElem = elem;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n var height = 0;\n var len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n var nextStr = void 0;\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n out.push(nextStr);\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n return out.reverse().join(separator);\n }\n catch (_oO) {\n return '<unknown>';\n }\n}\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el) {\n var elem = el;\n var out = [];\n var className;\n var classes;\n var key;\n var attr;\n var i;\n if (!elem || !elem.tagName) {\n return '';\n }\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(\"#\" + elem.id);\n }\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(\".\" + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n }\n }\n return out.join('');\n}\nvar INITIAL_TIME = Date.now();\nvar prevNow = 0;\nvar performanceFallback = {\n now: function () {\n var now = Date.now() - INITIAL_TIME;\n if (now < prevNow) {\n now = prevNow;\n }\n prevNow = now;\n return now;\n },\n timeOrigin: INITIAL_TIME,\n};\nexport var crossPlatformPerformance = (function () {\n if (isNodeEnv()) {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks');\n return perfHooks.performance;\n }\n catch (_) {\n return performanceFallback;\n }\n }\n if (getGlobalObject().performance) {\n // Polyfill for performance.timeOrigin.\n //\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // tslint:disable-next-line:strict-type-predicates\n if (performance.timeOrigin === undefined) {\n // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n // @ts-ignore\n // tslint:disable-next-line:deprecation\n performance.timeOrigin = (performance.timing && performance.timing.navigationStart) || INITIAL_TIME;\n }\n }\n return getGlobalObject().performance || performanceFallback;\n})();\n/**\n * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n */\nexport function timestampWithMs() {\n return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n}\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\nvar defaultRetryAfter = 60 * 1000; // 60 seconds\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now, header) {\n if (!header) {\n return defaultRetryAfter;\n }\n var headerDelay = parseInt(\"\" + header, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n var headerDate = Date.parse(\"\" + header);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n return defaultRetryAfter;\n}\nvar defaultFunctionName = '<anonymous>';\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines, frame, linesOfContext) {\n if (linesOfContext === void 0) { linesOfContext = 5; }\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map(function (line) { return snipLine(line, 0); });\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map(function (line) { return snipLine(line, 0); });\n}\n//# sourceMappingURL=misc.js.map","import { consoleSandbox, getGlobalObject } from './misc';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n/** JSDoc */\nvar Logger = /** @class */ (function () {\n /** JSDoc */\n function Logger() {\n this._enabled = false;\n }\n /** JSDoc */\n Logger.prototype.disable = function () {\n this._enabled = false;\n };\n /** JSDoc */\n Logger.prototype.enable = function () {\n this._enabled = true;\n };\n /** JSDoc */\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.log(PREFIX + \"[Log]: \" + args.join(' ')); // tslint:disable-line:no-console\n });\n };\n /** JSDoc */\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.warn(PREFIX + \"[Warn]: \" + args.join(' ')); // tslint:disable-line:no-console\n });\n };\n /** JSDoc */\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.error(PREFIX + \"[Error]: \" + args.join(' ')); // tslint:disable-line:no-console\n });\n };\n return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.github.io/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n","// tslint:disable:no-unsafe-any\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n function Memo() {\n // tslint:disable-next-line\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n Memo.prototype.memoize = function (obj) {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < this._inner.length; i++) {\n var value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n };\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n Memo.prototype.unmemoize = function (obj) {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n }\n else {\n for (var i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n };\n return Memo;\n}());\nexport { Memo };\n//# sourceMappingURL=memo.js.map","import * as tslib_1 from \"tslib\";\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\nimport { truncate } from './string';\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source, name, replacement) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacement(original);\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n // tslint:disable-next-line:strict-type-predicates\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n source[name] = wrapped;\n}\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object) {\n return Object.keys(object)\n .map(\n // tslint:disable-next-line:no-unsafe-any\n function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n .join('&');\n}\n/**\n * Transforms any object into an object literal with all it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order to be usable by the serializer\n */\nfunction getWalkSource(value) {\n if (isError(value)) {\n var error = value;\n var err = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n for (var i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n return err;\n }\n if (isEvent(value)) {\n var event_1 = value;\n var source = {};\n source.type = event_1.type;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event_1.target)\n ? htmlTreeAsString(event_1.target)\n : Object.prototype.toString.call(event_1.target);\n }\n catch (_oO) {\n source.target = '<unknown>';\n }\n try {\n source.currentTarget = isElement(event_1.currentTarget)\n ? htmlTreeAsString(event_1.currentTarget)\n : Object.prototype.toString.call(event_1.currentTarget);\n }\n catch (_oO) {\n source.currentTarget = '<unknown>';\n }\n // tslint:disable-next-line:strict-type-predicates\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event_1.detail;\n }\n for (var i in event_1) {\n if (Object.prototype.hasOwnProperty.call(event_1, i)) {\n source[i] = event_1;\n }\n }\n return source;\n }\n return value;\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // tslint:disable-next-line:no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n if (depth === void 0) { depth = 3; }\n if (maxSize === void 0) { maxSize = 100 * 1024; }\n var serialized = normalize(object, depth);\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return serialized;\n}\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value) {\n var type = Object.prototype.toString.call(value);\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n var normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction normalizeValue(value, key) {\n if (key === 'domain' && value && typeof value === 'object' && value._events) {\n return '[Domain]';\n }\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n // tslint:disable-next-line:no-tautology-expression\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n if (value === void 0) {\n return '[undefined]';\n }\n if (typeof value === 'function') {\n return \"[Function: \" + getFunctionName(value) + \"]\";\n }\n return value;\n}\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\nexport function walk(key, value, depth, memo) {\n if (depth === void 0) { depth = +Infinity; }\n if (memo === void 0) { memo = new Memo(); }\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n // If value implements `toJSON` method, call it and return early\n // tslint:disable:no-unsafe-any\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n // tslint:enable:no-unsafe-any\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n var normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n var source = getWalkSource(value);\n // Create an accumulator that will act as a parent for all future itterations of that branch\n var acc = Array.isArray(value) ? [] : {};\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n // Walk all keys of the source\n for (var innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n // Return accumulated values\n return acc;\n}\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\nexport function normalize(input, depth) {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));\n }\n catch (_oO) {\n return '**non-serializable**';\n }\n}\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n // tslint:disable:strict-type-predicates\n var keys = Object.keys(getWalkSource(exception));\n keys.sort();\n if (!keys.length) {\n return '[object has no keys]';\n }\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n return '';\n}\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val) {\n var e_1, _a;\n if (isPlainObject(val)) {\n var obj = val;\n var rv = {};\n try {\n for (var _b = tslib_1.__values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return rv;\n }\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys);\n }\n return val;\n}\n//# sourceMappingURL=object.js.map","'use strict';\nvar $ = require('../internals/export');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return URL.prototype.toString.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","import { isThenable } from './is';\n/** SyncPromise internal states */\nvar States;\n(function (States) {\n /** Pending */\n States[\"PENDING\"] = \"PENDING\";\n /** Resolved / OK */\n States[\"RESOLVED\"] = \"RESOLVED\";\n /** Rejected / Error */\n States[\"REJECTED\"] = \"REJECTED\";\n})(States || (States = {}));\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nvar SyncPromise = /** @class */ (function () {\n function SyncPromise(executor) {\n var _this = this;\n this._state = States.PENDING;\n this._handlers = [];\n /** JSDoc */\n this._resolve = function (value) {\n _this._setResult(States.RESOLVED, value);\n };\n /** JSDoc */\n this._reject = function (reason) {\n _this._setResult(States.REJECTED, reason);\n };\n /** JSDoc */\n this._setResult = function (state, value) {\n if (_this._state !== States.PENDING) {\n return;\n }\n if (isThenable(value)) {\n value.then(_this._resolve, _this._reject);\n return;\n }\n _this._state = state;\n _this._value = value;\n _this._executeHandlers();\n };\n // TODO: FIXME\n /** JSDoc */\n this._attachHandler = function (handler) {\n _this._handlers = _this._handlers.concat(handler);\n _this._executeHandlers();\n };\n /** JSDoc */\n this._executeHandlers = function () {\n if (_this._state === States.PENDING) {\n return;\n }\n var cachedHandlers = _this._handlers.slice();\n _this._handlers = [];\n cachedHandlers.forEach(function (handler) {\n if (handler.done) {\n return;\n }\n if (_this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n handler.onfulfilled(_this._value);\n }\n }\n if (_this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(_this._value);\n }\n }\n handler.done = true;\n });\n };\n try {\n executor(this._resolve, this._reject);\n }\n catch (e) {\n this._reject(e);\n }\n }\n /** JSDoc */\n SyncPromise.prototype.toString = function () {\n return '[object SyncPromise]';\n };\n /** JSDoc */\n SyncPromise.resolve = function (value) {\n return new SyncPromise(function (resolve) {\n resolve(value);\n });\n };\n /** JSDoc */\n SyncPromise.reject = function (reason) {\n return new SyncPromise(function (_, reject) {\n reject(reason);\n });\n };\n /** JSDoc */\n SyncPromise.all = function (collection) {\n return new SyncPromise(function (resolve, reject) {\n if (!Array.isArray(collection)) {\n reject(new TypeError(\"Promise.all requires an array as input.\"));\n return;\n }\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n var counter = collection.length;\n var resolvedCollection = [];\n collection.forEach(function (item, index) {\n SyncPromise.resolve(item)\n .then(function (value) {\n resolvedCollection[index] = value;\n counter -= 1;\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.then = function (onfulfilled, onrejected) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n _this._attachHandler({\n done: false,\n onfulfilled: function (result) {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: function (reason) {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.catch = function (onrejected) {\n return this.then(function (val) { return val; }, onrejected);\n };\n /** JSDoc */\n SyncPromise.prototype.finally = function (onfinally) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n var val;\n var isRejected;\n return _this.then(function (value) {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n }, function (reason) {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n }).then(function () {\n if (isRejected) {\n reject(val);\n return;\n }\n resolve(val);\n });\n });\n };\n return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n/** A simple queue that holds promises. */\nvar PromiseBuffer = /** @class */ (function () {\n function PromiseBuffer(_limit) {\n this._limit = _limit;\n /** Internal set of queued Promises */\n this._buffer = [];\n }\n /**\n * Says if the buffer is ready to take more requests\n */\n PromiseBuffer.prototype.isReady = function () {\n return this._limit === undefined || this.length() < this._limit;\n };\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike<T>\n * @returns The original promise.\n */\n PromiseBuffer.prototype.add = function (task) {\n var _this = this;\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(function () { return _this.remove(task); })\n .then(null, function () {\n return _this.remove(task).then(null, function () {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n });\n });\n return task;\n };\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike<T>\n * @returns Removed promise.\n */\n PromiseBuffer.prototype.remove = function (task) {\n var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n };\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n PromiseBuffer.prototype.length = function () {\n return this._buffer.length;\n };\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n PromiseBuffer.prototype.drain = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(_this._buffer)\n .then(function () {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, function () {\n resolve(true);\n });\n });\n };\n return PromiseBuffer;\n}());\nexport { PromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n // tslint:disable:no-unused-expression\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // It really needs 1 argument, not 0.\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore\n // tslint:disable:no-unused-expression\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n // tslint:disable:no-unused-expression\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n // tslint:disable-next-line:no-unused-expression\n new Headers();\n // tslint:disable-next-line:no-unused-expression\n new Request('');\n // tslint:disable-next-line:no-unused-expression\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // tslint:disable-next-line:no-unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n var result = false;\n var doc = global.document;\n // tslint:disable-next-line:no-unbound-method deprecation\n if (doc && typeof doc.createElement === \"function\") {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // tslint:disable-next-line:no-unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n // tslint:disable-next-line: no-unsafe-any\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n // tslint:disable:no-unused-expression\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n var chrome = global.chrome;\n // tslint:disable-next-line:no-unsafe-any\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","/* tslint:disable:only-arrow-functions no-unsafe-any */\nimport * as tslib_1 from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler) {\n // tslint:disable-next-line:strict-type-predicates\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n handlers[handler.type].push(handler.callback);\n instrument(handler.type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = tslib_1.__values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var commonHandlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', tslib_1.__assign({}, commonHandlerData));\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', tslib_1.__assign({}, commonHandlerData, { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', tslib_1.__assign({}, commonHandlerData, { endTimestamp: Date.now(), error: error }));\n throw error;\n });\n };\n });\n}\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args[1];\n this.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n return originalOpen.apply(this, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhr = this; // tslint:disable-line:no-this-assignment\n var commonHandlerData = {\n args: args,\n startTimestamp: Date.now(),\n xhr: xhr,\n };\n triggerHandlers('xhr', tslib_1.__assign({}, commonHandlerData));\n xhr.addEventListener('readystatechange', function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', tslib_1.__assign({}, commonHandlerData, { endTimestamp: Date.now() }));\n }\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach(function (target) {\n var proto = global[target] && global[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n if (fn && fn.handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n }\n else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n return original.call(this, eventName, fn, options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n var callback = fn;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n });\n}\nvar debounceDuration = 1000;\nvar debounceTimer = 0;\nvar keypressTimeout;\nvar lastCapturedEvent;\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name, handler, debounce) {\n if (debounce === void 0) { debounce = false; }\n return function (event) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n lastCapturedEvent = event;\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n if (debounce) {\n debounceTimer = setTimeout(function () {\n handler({ event: event, name: name });\n });\n }\n else {\n handler({ event: event, name: name });\n }\n };\n}\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler) {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function (event) {\n var target;\n try {\n target = event.target;\n }\n catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)) {\n return;\n }\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n keypressTimeout = setTimeout(function () {\n keypressTimeout = undefined;\n }, debounceDuration);\n };\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","import * as tslib_1 from \"tslib\";\nimport { SentryError } from './error';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/;\n/** Error message */\nvar ERROR_MESSAGE = 'Invalid Dsn';\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nvar Dsn = /** @class */ (function () {\n /** Creates a new Dsn component */\n function Dsn(from) {\n if (typeof from === 'string') {\n this._fromString(from);\n }\n else {\n this._fromComponents(from);\n }\n this._validate();\n }\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n Dsn.prototype.toString = function (withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n // tslint:disable-next-line:no-this-assignment\n var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, user = _a.user;\n return (protocol + \"://\" + user + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n };\n /** Parses a string into this Dsn. */\n Dsn.prototype._fromString = function (str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n var _a = tslib_1.__read(match.slice(1), 6), protocol = _a[0], user = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n this._fromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, user: user });\n };\n /** Maps Dsn components into this instance. */\n Dsn.prototype._fromComponents = function (components) {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n };\n /** Validates this Dsn and throws on error. */\n Dsn.prototype._validate = function () {\n var _this = this;\n ['protocol', 'user', 'host', 'projectId'].forEach(function (component) {\n if (!_this[component]) {\n throw new SentryError(ERROR_MESSAGE);\n }\n });\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE);\n }\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE);\n }\n };\n return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","import * as tslib_1 from \"tslib\";\nimport { getGlobalObject, isThenable, SyncPromise, timestampWithMs } from '@sentry/utils';\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n function Scope() {\n /** Flag if notifiying is happening. */\n this._notifyingListeners = false;\n /** Callback for client to receive scope changes. */\n this._scopeListeners = [];\n /** Callback list that will be called after {@link applyToEvent}. */\n this._eventProcessors = [];\n /** Array of breadcrumbs. */\n this._breadcrumbs = [];\n /** User */\n this._user = {};\n /** Tags */\n this._tags = {};\n /** Extra */\n this._extra = {};\n /** Contexts */\n this._context = {};\n }\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n Scope.prototype.addScopeListener = function (callback) {\n this._scopeListeners.push(callback);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addEventProcessor = function (callback) {\n this._eventProcessors.push(callback);\n return this;\n };\n /**\n * This will be called on every set call.\n */\n Scope.prototype._notifyScopeListeners = function () {\n var _this = this;\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(function () {\n _this._scopeListeners.forEach(function (callback) {\n callback(_this);\n });\n _this._notifyingListeners = false;\n });\n }\n };\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n var _this = this;\n if (index === void 0) { index = 0; }\n return new SyncPromise(function (resolve, reject) {\n var processor = processors[index];\n // tslint:disable-next-line:strict-type-predicates\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(tslib_1.__assign({}, event), hint);\n if (isThenable(result)) {\n result\n .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n .then(null, reject);\n }\n else {\n _this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = tslib_1.__assign({}, this._tags, tags);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTag = function (key, value) {\n var _a;\n this._tags = tslib_1.__assign({}, this._tags, (_a = {}, _a[key] = value, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtras = function (extras) {\n this._extra = tslib_1.__assign({}, this._extra, extras);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtra = function (key, extra) {\n var _a;\n this._extra = tslib_1.__assign({}, this._extra, (_a = {}, _a[key] = extra, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setFingerprint = function (fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setLevel = function (level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTransaction = function (transaction) {\n this._transaction = transaction;\n if (this._span) {\n this._span.transaction = transaction;\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setContext = function (key, context) {\n var _a;\n this._context = tslib_1.__assign({}, this._context, (_a = {}, _a[key] = context, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSpan = function (span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Internal getter for Span, used in Hub.\n * @hidden\n */\n Scope.prototype.getSpan = function () {\n return this._span;\n };\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n Scope.clone = function (scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = tslib_1.__spread(scope._breadcrumbs);\n newScope._tags = tslib_1.__assign({}, scope._tags);\n newScope._extra = tslib_1.__assign({}, scope._extra);\n newScope._context = tslib_1.__assign({}, scope._context);\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transaction = scope._transaction;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = tslib_1.__spread(scope._eventProcessors);\n }\n return newScope;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._context = {};\n this._level = undefined;\n this._transaction = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var mergedBreadcrumb = tslib_1.__assign({ timestamp: timestampWithMs() }, breadcrumb);\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? tslib_1.__spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)\n : tslib_1.__spread(this._breadcrumbs, [mergedBreadcrumb]);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clearBreadcrumbs = function () {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n Scope.prototype._applyFingerprint = function (event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n };\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n Scope.prototype.applyToEvent = function (event, hint) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = tslib_1.__assign({}, this._extra, event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = tslib_1.__assign({}, this._tags, event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = tslib_1.__assign({}, this._user, event.user);\n }\n if (this._context && Object.keys(this._context).length) {\n event.contexts = tslib_1.__assign({}, this._context, event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transaction) {\n event.transaction = this._transaction;\n }\n if (this._span) {\n event.contexts = tslib_1.__assign({ trace: this._span.getTraceContext() }, event.contexts);\n }\n this._applyFingerprint(event);\n event.breadcrumbs = tslib_1.__spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n return this._notifyEventProcessors(tslib_1.__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n var global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","import * as tslib_1 from \"tslib\";\nimport { consoleSandbox, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4 } from '@sentry/utils';\nimport { Scope } from './scope';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be incresed when the global interface\n * changes a and new methods are introduced.\n *\n * @hidden\n */\nexport var API_VERSION = 3;\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n/**\n * @inheritDoc\n */\nvar Hub = /** @class */ (function () {\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n function Hub(client, scope, _version) {\n if (scope === void 0) { scope = new Scope(); }\n if (_version === void 0) { _version = API_VERSION; }\n this._version = _version;\n /** Is a {@link Layer}[] containing the client and scope */\n this._stack = [];\n this._stack.push({ client: client, scope: scope });\n }\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n Hub.prototype._invokeClient = function (method) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n (_a = top.client)[method].apply(_a, tslib_1.__spread(args, [top.scope]));\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.isOlderThan = function (version) {\n return this._version < version;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.bindClient = function (client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.pushScope = function () {\n // We want to clone the content of prev scope\n var stack = this.getStack();\n var parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n var scope = Scope.clone(parentScope);\n this.getStack().push({\n client: this.getClient(),\n scope: scope,\n });\n return scope;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.popScope = function () {\n return this.getStack().pop() !== undefined;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.withScope = function (callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n }\n finally {\n this.popScope();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getClient = function () {\n return this.getStackTop().client;\n };\n /** Returns the scope of the top stack. */\n Hub.prototype.getScope = function () {\n return this.getStackTop().scope;\n };\n /** Returns the scope stack for domains or the process. */\n Hub.prototype.getStack = function () {\n return this._stack;\n };\n /** Returns the topmost scope layer in the order domain > local > process. */\n Hub.prototype.getStackTop = function () {\n return this._stack[this._stack.length - 1];\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureException = function (exception, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: exception,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureException', exception, tslib_1.__assign({}, finalHint, { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureMessage = function (message, level, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: message,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureMessage', message, level, tslib_1.__assign({}, finalHint, { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureEvent = function (event, hint) {\n var eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, tslib_1.__assign({}, hint, { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.lastEventId = function () {\n return this._lastEventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n var top = this.getStackTop();\n if (!top.scope || !top.client) {\n return;\n }\n var _a = (top.client.getOptions && top.client.getOptions()) || {}, _b = _a.beforeBreadcrumb, beforeBreadcrumb = _b === void 0 ? null : _b, _c = _a.maxBreadcrumbs, maxBreadcrumbs = _c === void 0 ? DEFAULT_BREADCRUMBS : _c;\n if (maxBreadcrumbs <= 0) {\n return;\n }\n var timestamp = timestampWithMs();\n var mergedBreadcrumb = tslib_1.__assign({ timestamp: timestamp }, breadcrumb);\n var finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n : mergedBreadcrumb;\n if (finalBreadcrumb === null) {\n return;\n }\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setUser = function (user) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTags = function (tags) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtras = function (extras) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTag = function (key, value) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtra = function (key, extra) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setContext = function (name, context) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.configureScope = function (callback) {\n var top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.scope);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.run = function (callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n }\n finally {\n makeMain(oldHub);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getIntegration = function (integration) {\n var client = this.getClient();\n if (!client) {\n return null;\n }\n try {\n return client.getIntegration(integration);\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSpan = function (spanOrSpanContext, forceNoChild) {\n if (forceNoChild === void 0) { forceNoChild = false; }\n return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.traceHeaders = function () {\n return this._callExtensionMethod('traceHeaders');\n };\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore\n Hub.prototype._callExtensionMethod = function (method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n };\n return Hub;\n}());\nexport { Hub };\n/** Returns the global shim registry. */\nexport function getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n/**\n * Try to read the hub from an active domain, fallback to the registry if one doesnt exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var property = 'domain';\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n return getHubFromCarrier(registry);\n }\n var domain = sentry.extensions[property];\n var activeDomain = domain.active;\n // If there no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n // If there's no hub on current domain, or its an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n }\n catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\n}\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return carrier.__SENTRY__.hub;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier, hub) {\n if (!carrier) {\n return false;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n//# sourceMappingURL=hub.js.map","import * as tslib_1 from \"tslib\";\nimport { getCurrentHub } from '@sentry/hub';\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\nfunction callOnHub(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub && hub[method]) {\n // tslint:disable-next-line:no-unsafe-any\n return hub[method].apply(hub, tslib_1.__spread(args));\n }\n throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n}\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\nexport function captureException(exception) {\n var syntheticException;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureException', exception, {\n originalException: exception,\n syntheticException: syntheticException,\n });\n}\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param level Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message, level) {\n var syntheticException;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException: syntheticException,\n });\n}\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event) {\n return callOnHub('captureEvent', event);\n}\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback) {\n callOnHub('configureScope', callback);\n}\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb) {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normailzed.\n */\nexport function setContext(name, context) {\n callOnHub('setContext', name, context);\n}\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras) {\n callOnHub('setExtras', extras);\n}\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags) {\n callOnHub('setTags', tags);\n}\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normailzed.\n */\nexport function setExtra(key, extra) {\n callOnHub('setExtra', key, extra);\n}\n/**\n * Set key:value that will be sent as tags data with the event.\n * @param key String key of tag\n * @param value String value of tag\n */\nexport function setTag(key, value) {\n callOnHub('setTag', key, value);\n}\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user) {\n callOnHub('setUser', user);\n}\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback) {\n callOnHub('withScope', callback);\n}\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\nexport function _callOnClient(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n callOnHub.apply(void 0, tslib_1.__spread(['_invokeClient', method], args));\n}\n//# sourceMappingURL=index.js.map","import { Dsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/** Helper class to provide urls to different Sentry endpoints. */\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn) {\n this.dsn = dsn;\n this._dsnObject = new Dsn(dsn);\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Returns a string with auth headers in the url to the store endpoint. */\n API.prototype.getStoreEndpoint = function () {\n return \"\" + this._getBaseUrl() + this.getStoreEndpointPath();\n };\n /** Returns the store endpoint with auth added in url encoded. */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n var dsn = this._dsnObject;\n var auth = {\n sentry_key: dsn.user,\n sentry_version: SENTRY_API_VERSION,\n };\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n // to avoid preflight CORS requests\n return this.getStoreEndpoint() + \"?\" + urlEncode(auth);\n };\n /** Returns the base path of the url including the port. */\n API.prototype._getBaseUrl = function () {\n var dsn = this._dsnObject;\n var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n var port = dsn.port ? \":\" + dsn.port : '';\n return protocol + \"//\" + dsn.host + port;\n };\n /** Returns only the path component for the store endpoint. */\n API.prototype.getStoreEndpointPath = function () {\n var dsn = this._dsnObject;\n return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n };\n /** Returns an object that can be used in request headers. */\n API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n var dsn = this._dsnObject;\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.user);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n };\n /** Returns the url to the report dialog endpoint. */\n API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n if (dialogOptions === void 0) { dialogOptions = {}; }\n var dsn = this._dsnObject;\n var endpoint = \"\" + this._getBaseUrl() + (dsn.path ? \"/\" + dsn.path : '') + \"/api/embed/error-page/\";\n var encodedOptions = [];\n encodedOptions.push(\"dsn=\" + dsn.toString());\n for (var key in dialogOptions) {\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n }\n }\n else {\n encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n }\n }\n if (encodedOptions.length) {\n return endpoint + \"?\" + encodedOptions.join('&');\n }\n return endpoint;\n };\n return API;\n}());\nexport { API };\n//# sourceMappingURL=api.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && tslib_1.__spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = [];\n if (Array.isArray(userIntegrations)) {\n var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; });\n var pickedIntegrationsNames_1 = [];\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(function (defaultIntegration) {\n if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames_1.push(defaultIntegration.name);\n }\n });\n // Don't add same user integration twice\n userIntegrations.forEach(function (userIntegration) {\n if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames_1.push(userIntegration.name);\n }\n });\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n else {\n integrations = tslib_1.__spread(defaultIntegrations);\n }\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(function (i) { return i.name; });\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push.apply(integrations, tslib_1.__spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import * as tslib_1 from \"tslib\";\nimport { Dsn, isPrimitive, isThenable, logger, normalize, SyncPromise, truncate, uuid4 } from '@sentry/utils';\nimport { setupIntegrations } from './integration';\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeBackend, NodeOptions> {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Is the client still processing a call? */\n this._processing = false;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._processEvent(event, hint, scope); })\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(\"\" + message, level, hint)\n : this._getBackend().eventFromException(message, hint);\n promisedEvent\n .then(function (event) { return _this._processEvent(event, hint, scope); })\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._processEvent(event, hint, scope)\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientProcessing(timeout).then(function (status) {\n clearInterval(status.interval);\n return _this._getBackend()\n .getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return status.ready && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * Sets up the integrations\n */\n BaseClient.prototype.setupIntegrations = function () {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Waits for the client to be done with processing. */\n BaseClient.prototype._isClientProcessing = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = 0;\n clearInterval(interval);\n interval = setInterval(function () {\n if (!_this._processing) {\n resolve({\n interval: interval,\n ready: true,\n });\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval: interval,\n ready: false,\n });\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n };\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _this = this;\n var _a = this.getOptions(), environment = _a.environment, release = _a.release, dist = _a.dist, _b = _a.maxValueLength, maxValueLength = _b === void 0 ? 250 : _b, _c = _a.normalizeDepth, normalizeDepth = _c === void 0 ? 3 : _c;\n var prepared = tslib_1.__assign({}, event);\n if (prepared.environment === undefined && environment !== undefined) {\n prepared.environment = environment;\n }\n if (prepared.release === undefined && release !== undefined) {\n prepared.release = release;\n }\n if (prepared.dist === undefined && dist !== undefined) {\n prepared.dist = dist;\n }\n if (prepared.message) {\n prepared.message = truncate(prepared.message, maxValueLength);\n }\n var exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = prepared.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n if (prepared.event_id === undefined) {\n prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4();\n }\n this._addIntegrations(prepared.sdk);\n // We prepare the result here with a resolved Event.\n var result = SyncPromise.resolve(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (scope) {\n // In case we have a hub we reassign it.\n result = scope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return _this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n };\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n BaseClient.prototype._normalizeEvent = function (event, depth) {\n if (!event) {\n return null;\n }\n // tslint:disable:no-unsafe-any\n return tslib_1.__assign({}, event, (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (tslib_1.__assign({}, b, (b.data && {\n data: normalize(b.data, depth),\n }))); }),\n }), (event.user && {\n user: normalize(event.user, depth),\n }), (event.contexts && {\n contexts: normalize(event.contexts, depth),\n }), (event.extra && {\n extra: normalize(event.extra, depth),\n }));\n };\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n BaseClient.prototype._addIntegrations = function (sdkInfo) {\n var integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n };\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n return new SyncPromise(function (resolve, reject) {\n _this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n var finalEvent = prepared;\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || !beforeSend) {\n _this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n }\n else if (isThenable(beforeSendResult)) {\n _this._handleAsyncBeforeSend(beforeSendResult, resolve, reject);\n }\n else {\n finalEvent = beforeSendResult;\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n // From here on we are really async\n _this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n }\n })\n .then(null, function (reason) {\n _this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n reject(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n });\n });\n };\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n BaseClient.prototype._handleAsyncBeforeSend = function (beforeSend, resolve, reject) {\n var _this = this;\n beforeSend\n .then(function (processedEvent) {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n _this._getBackend().sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .then(null, function (e) {\n reject(\"beforeSend rejected with \" + e);\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map","var originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n originalFunctionToString = Function.prototype.toString;\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this.__sentry_original__ || this;\n // tslint:disable-next-line:no-unsafe-any\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { Status } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return SyncPromise.resolve({\n reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n status: Status.Skipped,\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return SyncPromise.resolve(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n this._transport.sendEvent(event).then(null, function (reason) {\n logger.error(\"Error while sending event: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n };\n /** JSDoc */\n InboundFilters.prototype._shouldDropEvent = function (event, options) {\n if (this._isSentryError(event, options)) {\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isBlacklistedUrl(event, options)) {\n logger.warn(\"Event dropped due to being matched by `blacklistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n if (!this._isWhitelistedUrl(event, options)) {\n logger.warn(\"Event dropped due to not being matched by `whitelistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isSentryError = function (event, options) {\n if (options === void 0) { options = {}; }\n if (!options.ignoreInternal) {\n return false;\n }\n try {\n return ((event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false);\n }\n catch (_oO) {\n return false;\n }\n };\n /** JSDoc */\n InboundFilters.prototype._isIgnoredError = function (event, options) {\n if (options === void 0) { options = {}; }\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n return this._getPossibleEventMessages(event).some(function (message) {\n // Not sure why TypeScript complains here...\n return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n });\n };\n /** JSDoc */\n InboundFilters.prototype._isBlacklistedUrl = function (event, options) {\n if (options === void 0) { options = {}; }\n // TODO: Use Glob instead?\n if (!options.blacklistUrls || !options.blacklistUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.blacklistUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isWhitelistedUrl = function (event, options) {\n if (options === void 0) { options = {}; }\n // TODO: Use Glob instead?\n if (!options.whitelistUrls || !options.whitelistUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.whitelistUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._mergeOptions = function (clientOptions) {\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n blacklistUrls: tslib_1.__spread((this._options.blacklistUrls || []), (clientOptions.blacklistUrls || [])),\n ignoreErrors: tslib_1.__spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n whitelistUrls: tslib_1.__spread((this._options.whitelistUrls || []), (clientOptions.whitelistUrls || [])),\n };\n };\n /** JSDoc */\n InboundFilters.prototype._getPossibleEventMessages = function (event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n return [];\n }\n }\n return [];\n };\n /** JSDoc */\n InboundFilters.prototype._getEventFilterUrl = function (event) {\n try {\n if (event.stacktrace) {\n var frames_1 = event.stacktrace.frames;\n return (frames_1 && frames_1[frames_1.length - 1].filename) || null;\n }\n if (event.exception) {\n var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames_2 && frames_2[frames_2.length - 1].filename) || null;\n }\n return null;\n }\n catch (oO) {\n logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","// tslint:disable:object-literal-sort-keys\nimport * as tslib_1 from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n/** JSDoc */\nexport function computeStackTrace(ex) {\n // tslint:disable:no-unsafe-any\n var stack = null;\n var popSize = ex && ex.framesToPop;\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n/** JSDoc */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction computeStackTraceFromStackProp(ex) {\n // tslint:disable:no-conditional-assignment\n if (!ex || !ex.stack) {\n return null;\n }\n var stack = [];\n var lines = ex.stack.split('\\n');\n var isEval;\n var submatch;\n var parts;\n var element;\n for (var i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || \"eval\";\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n }\n else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n }\n else {\n continue;\n }\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** JSDoc */\nfunction computeStackTraceFromStacktraceProp(ex) {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i;\n var lines = stacktrace.split('\\n');\n var stack = [];\n var parts;\n for (var line = 0; line < lines.length; line += 2) {\n // tslint:disable:no-conditional-assignment\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace, popSize) {\n try {\n return tslib_1.__assign({}, stacktrace, { stack: stacktrace.stack.slice(popSize) });\n }\n catch (e) {\n return stacktrace;\n }\n}\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n//# sourceMappingURL=tracekit.js.map","import { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\nimport { computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n var frames = prepareFramesForEvent(stacktrace.stack);\n var exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n if (frames && frames.length) {\n exception.stacktrace = { frames: frames };\n }\n // tslint:disable-next-line:strict-type-predicates\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, rejection) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n if (syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n var exception = exceptionFromStacktrace(stacktrace);\n return {\n exception: {\n values: [exception],\n },\n };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n if (!stack || !stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].func || '';\n var lastFrameFunction = localStack[localStack.length - 1].func || '';\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .map(function (frame) { return ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }); })\n .slice(0, STACKTRACE_LIMIT)\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/** JSDoc */\nexport function eventFromUnknownInput(exception, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event;\n if (isErrorEvent(exception) && exception.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception;\n exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isDOMError(exception) || isDOMException(exception)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var domException = exception;\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n var objectException = exception;\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception, syntheticException, options);\n addExceptionTypeValue(event, \"\" + exception, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n}\n// this._options.attachStacktrace\n/** JSDoc */\nexport function eventFromString(input, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event = {\n message: input,\n };\n if (options.attachStacktrace && syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","import { API } from '@sentry/core';\nimport { PromiseBuffer, SentryError } from '@sentry/utils';\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = new PromiseBuffer(30);\n this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth();\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (_) {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import * as tslib_1 from \"tslib\";\nimport { Status } from '@sentry/types';\nimport { getGlobalObject, logger, parseRetryAfterHeader, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nvar global = getGlobalObject();\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n tslib_1.__extends(FetchTransport, _super);\n function FetchTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Locks transport after receiving 429 response */\n _this._disabledUntil = new Date(Date.now());\n return _this;\n }\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendEvent = function (event) {\n var _this = this;\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event: event,\n reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n status: 429,\n });\n }\n var defaultOptions = {\n body: JSON.stringify(event),\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n if (this.options.headers !== undefined) {\n defaultOptions.headers = this.options.headers;\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n global\n .fetch(_this.url, defaultOptions)\n .then(function (response) {\n var status = Status.fromHttpCode(response.status);\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n if (status === Status.RateLimit) {\n var now = Date.now();\n _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));\n logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n }\n reject(response);\n })\n .catch(reject);\n }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import * as tslib_1 from \"tslib\";\nimport { Status } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n tslib_1.__extends(XHRTransport, _super);\n function XHRTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Locks transport after receiving 429 response */\n _this._disabledUntil = new Date(Date.now());\n return _this;\n }\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendEvent = function (event) {\n var _this = this;\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event: event,\n reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n status: 429,\n });\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState !== 4) {\n return;\n }\n var status = Status.fromHttpCode(request.status);\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n if (status === Status.RateLimit) {\n var now = Date.now();\n _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));\n logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n }\n reject(request);\n };\n request.open('POST', _this.url);\n for (var header in _this.options.headers) {\n if (_this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, _this.options.headers[header]);\n }\n }\n request.send(JSON.stringify(event));\n }));\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import * as tslib_1 from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, supportsFetch, SyncPromise } from '@sentry/utils';\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = tslib_1.__assign({}, this._options.transportOptions, { dsn: this._options.dsn });\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(message, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import * as tslib_1 from \"tslib\";\nimport { API, BaseClient } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { SDK_NAME, SDK_VERSION } from './version';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n return _super.call(this, BrowserBackend, options) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n event.sdk = tslib_1.__assign({}, event.sdk, { name: SDK_NAME, packages: tslib_1.__spread(((event.sdk && event.sdk.packages) || []), [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ]), version: SDK_VERSION });\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client is disabled');\n return;\n }\n var dsn = options.dsn || this.getDsn();\n if (!options.eventId) {\n logger.error('Missing `eventId` option in showReportDialog call');\n return;\n }\n if (!dsn) {\n logger.error('Missing `Dsn` option in showReportDialog call');\n return;\n }\n var script = document.createElement('script');\n script.async = true;\n script.src = new API(dsn).getReportDialogEndpoint(options);\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n (document.head || document.body).appendChild(script);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","export var SDK_NAME = 'sentry.javascript.browser';\nexport var SDK_VERSION = '5.15.5';\n//# sourceMappingURL=version.js.map","import * as tslib_1 from \"tslib\";\nimport { captureException, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue } from '@sentry/utils';\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n if (options === void 0) { options = {}; }\n // tslint:disable-next-line:strict-type-predicates\n if (typeof fn !== 'function') {\n return fn;\n }\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n // tslint:disable:no-unsafe-any\n try {\n // tslint:disable-next-line:strict-type-predicates\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n // tslint:enable:no-unsafe-any\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n var processedEvent = tslib_1.__assign({}, event);\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n processedEvent.extra = tslib_1.__assign({}, processedEvent.extra, { arguments: args });\n return processedEvent;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n }\n catch (_oO) { } // tslint:disable-line:no-empty\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get: function () {\n return fn.name;\n },\n });\n }\n }\n catch (_oO) {\n /*no-empty*/\n }\n return sentryWrapped;\n}\n//# sourceMappingURL=helpers.js.map","import * as tslib_1 from \"tslib\";\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\n /** JSDoc */\n this._onErrorHandlerInstalled = false;\n /** JSDoc */\n this._onUnhandledRejectionHandlerInstalled = false;\n this._options = tslib_1.__assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {\n var _this = this;\n if (this._onErrorHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n callback: function (data) {\n var error = data.error;\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }), data.url, data.line, data.column);\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n this._onErrorHandlerInstalled = true;\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n var _this = this;\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n callback: function (e) {\n var error = e;\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n }\n catch (_oO) {\n // no-empty\n }\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n event.level = Severity.Error;\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n return;\n },\n type: 'unhandledrejection',\n });\n this._onUnhandledRejectionHandlerInstalled = true;\n };\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {\n var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n // If 'message' is ErrorEvent, get real message from inside\n var message = isErrorEvent(msg) ? msg.message : msg;\n var name;\n if (isString(message)) {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n var event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n };\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: \"Non-Error promise rejection captured with value: \" + error,\n },\n ],\n },\n };\n };\n /** JSDoc */\n GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno: colno,\n filename: filename,\n function: '?',\n in_app: true,\n lineno: lineno,\n });\n }\n return event;\n };\n /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map","import { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n function TryCatch() {\n /** JSDoc */\n this._ignoreOnError = 0;\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n }\n /** JSDoc */\n TryCatch.prototype._wrapTimeFunction = function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapRAF = function (original) {\n return function (callback) {\n return original(wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }));\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapEventTarget = function (target) {\n var global = getGlobalObject();\n var proto = global[target] && global[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n // tslint:disable-next-line:no-unbound-method strict-type-predicates\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.call(this, eventName, wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }), options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n var callback = fn;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n };\n /** JSDoc */\n TryCatch.prototype._wrapXHR = function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhr = this; // tslint:disable-line:no-this-assignment\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n return originalSend.apply(this, args);\n };\n };\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n this._ignoreOnError = this._ignoreOnError;\n var global = getGlobalObject();\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n if ('XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n ].forEach(this._wrapEventTarget.bind(this));\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map","import * as tslib_1 from \"tslib\";\nimport { API, getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, logger, parseUrl, safeJoin, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = tslib_1.__assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Creates breadcrumbs from console API calls\n */\n Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n breadcrumb.data.arguments = handlerData.args.slice(1);\n }\n else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n /**\n * Creates breadcrumbs from DOM API calls\n */\n Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {\n var target;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target)\n : htmlTreeAsString(handlerData.event);\n }\n catch (e) {\n target = '<unknown>';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + handlerData.name,\n message: target,\n }, {\n event: handlerData.event,\n name: handlerData.name,\n });\n };\n /**\n * Creates breadcrumbs from XHR API calls\n */\n Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: handlerData.xhr.__sentry_xhr__,\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n });\n return;\n }\n // We only capture issued sentry requests\n if (this._options.sentry && handlerData.xhr.__sentry_own_request__) {\n addSentryBreadcrumb(handlerData.args[0]);\n }\n };\n /**\n * Creates breadcrumbs from fetch API calls\n */\n Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n var client = getCurrentHub().getClient();\n var dsn = client && client.getDsn();\n if (this._options.sentry && dsn) {\n var filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (filterUrl &&\n handlerData.fetchData.url.indexOf(filterUrl) !== -1 &&\n handlerData.fetchData.method === 'POST' &&\n handlerData.args[1] &&\n handlerData.args[1].body) {\n addSentryBreadcrumb(handlerData.args[1].body);\n return;\n }\n }\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: tslib_1.__assign({}, handlerData.fetchData, { status_code: handlerData.response.status }),\n level: Severity.Error,\n type: 'http',\n }, {\n data: handlerData.error,\n input: handlerData.args,\n });\n }\n else {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: tslib_1.__assign({}, handlerData.fetchData, { status_code: handlerData.response.status }),\n type: 'http',\n }, {\n input: handlerData.args,\n response: handlerData.response,\n });\n }\n };\n /**\n * Creates breadcrumbs from history API calls\n */\n Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {\n var global = getGlobalObject();\n var from = handlerData.from;\n var to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n var parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n from = parsedFrom.relative;\n }\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n };\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n Breadcrumbs.prototype.setupOnce = function () {\n var _this = this;\n if (this._options.console) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._consoleBreadcrumb.apply(_this, tslib_1.__spread(args));\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._domBreadcrumb.apply(_this, tslib_1.__spread(args));\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._xhrBreadcrumb.apply(_this, tslib_1.__spread(args));\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._fetchBreadcrumb.apply(_this, tslib_1.__spread(args));\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._historyBreadcrumb.apply(_this, tslib_1.__spread(args));\n },\n type: 'history',\n });\n }\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n/**\n * Create a breadcrumb of `sentry` from the events themselves\n */\nfunction addSentryBreadcrumb(serializedData) {\n // There's always something that can go wrong with deserialization...\n try {\n var event_1 = JSON.parse(serializedData);\n getCurrentHub().addBreadcrumb({\n category: \"sentry.\" + (event_1.type === 'transaction' ? 'transaction' : 'event'),\n event_id: event_1.event_id,\n level: event_1.level || Severity.fromString('error'),\n message: getEventDescription(event_1),\n }, {\n event: event_1,\n });\n }\n catch (_oO) {\n logger.error('Error while adding sentry type breadcrumb');\n }\n}\n//# sourceMappingURL=breadcrumbs.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._handler = function (event, hint) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n event.exception.values = tslib_1.__spread(linkedErrors, event.exception.values);\n return event;\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n var stacktrace = computeStackTrace(error[key]);\n var exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, tslib_1.__spread([exception], stack));\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/\n var request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n return tslib_1.__assign({}, event, { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, SyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.SENTRY_RELEASE.id;\n }\n }\n initAndBind(BrowserClient, options);\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n var client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn) {\n return internalWrap(fn)(); // tslint:disable-line:no-unsafe-any\n}\n//# sourceMappingURL=sdk.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instanciate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n if (options.debug === true) {\n logger.enable();\n }\n var hub = getCurrentHub();\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.js.map","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArrayLimit(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return n}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}var getConstructor=function(e){return null!=e?e.constructor:null},instanceOf=function(e,t){return!!(e&&t&&e instanceof t)},isNullOrUndefined=function(e){return null==e},isObject=function(e){return getConstructor(e)===Object},isNumber=function(e){return getConstructor(e)===Number&&!Number.isNaN(e)},isString=function(e){return getConstructor(e)===String},isBoolean=function(e){return getConstructor(e)===Boolean},isFunction=function(e){return getConstructor(e)===Function},isArray=function(e){return Array.isArray(e)},isNodeList=function(e){return instanceOf(e,NodeList)},isElement=function(e){return instanceOf(e,Element)},isEvent=function(e){return instanceOf(e,Event)},isEmpty=function(e){return isNullOrUndefined(e)||(isString(e)||isArray(e)||isNodeList(e))&&!e.length||isObject(e)&&!Object.keys(e).length},is={nullOrUndefined:isNullOrUndefined,object:isObject,number:isNumber,string:isString,boolean:isBoolean,function:isFunction,array:isArray,nodeList:isNodeList,element:isElement,event:isEvent,empty:isEmpty},constants={facebook:{domain:\"facebook.com\",url:function(e){return\"https://graph.facebook.com/?id=\".concat(e,\"&fields=og_object{engagement}\")},shareCount:function(e){return e.og_object.engagement.count},popup:{width:640,height:360}},twitter:{domain:\"twitter.com\",url:function(){return null},shareCount:function(){return null},popup:{width:640,height:240}},pinterest:{domain:\"pinterest.com\",url:function(e){return\"https://widgets.pinterest.com/v1/urls/count.json?url=\".concat(e)},shareCount:function(e){return e.count},popup:{width:830,height:700}},github:{domain:\"github.com\",url:function(e,t){return\"https://api.github.com/repos/\".concat(e).concat(is.string(t)?\"?access_token=\".concat(t):\"\")},shareCount:function(e){return e.data.stargazers_count}},youtube:{domain:\"youtube.com\",url:function(e,t){return\"https://www.googleapis.com/youtube/v3/channels?part=statistics&id=\".concat(e,\"&key=\").concat(t)},shareCount:function(e){if(!is.empty(e.error))return null;var t=_slicedToArray(e.items,1)[0];return is.empty(t)?null:t.statistics.subscriberCount}}},defaults={debug:!1,wrapper:{className:\"shr\"},count:{className:\"shr__count\",displayZero:!1,format:!0,position:\"after\",increment:!0},tokens:{github:\"\",youtube:\"\"},storage:{enabled:!0,key:\"shr\",ttl:3e5}};function getJSONP(e){return new Promise(function(t,n){var r=\"jsonp_callback_\".concat(Math.round(1e5*Math.random())),o=document.createElement(\"script\");o.addEventListener(\"error\",function(e){return n(e)}),window[r]=function(e){delete window[r],document.body.removeChild(o),t(e)};var i=new URL(e);i.searchParams.set(\"callback\",r),o.setAttribute(\"src\",i.toString()),document.body.appendChild(o)})}var noop=function(){},Console=function(){function e(){var t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];_classCallCheck(this,e),this.enabled=window.console&&t,this.enabled&&this.log(\"Debugging enabled\")}return _createClass(e,[{key:\"log\",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):noop}},{key:\"warn\",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):noop}},{key:\"error\",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):noop}}]),e}();function matches(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function wrap(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach(function(e,n){var r=0<n?t.cloneNode(!0):t,o=e.parentNode,i=e.nextSibling;r.appendChild(e),i?o.insertBefore(r,i):o.appendChild(r)})}function setAttributes(e,t){!is.element(e)||is.empty(t)||Object.entries(t).filter(function(e){var t=_slicedToArray(e,2)[1];return!is.nullOrUndefined(t)}).forEach(function(t){var n=_slicedToArray(t,2),r=n[0],o=n[1];return e.setAttribute(r,o)})}function createElement(e,t,n){var r=document.createElement(e);return is.object(t)&&setAttributes(r,t),is.string(n)&&(r.innerText=n),r}function formatNumber(e){var t=/\\./.test(1.1.toLocaleString())?\".\":\",\",n=new RegExp(\"\\\\\".concat(t,\"\\\\d+$\"));return Math.round(e).toLocaleString().replace(n,\"\")}function extend(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(!n.length)return e;var o=n.shift();return is.object(o)?(Object.keys(o).forEach(function(t){is.object(o[t])?(!Object.keys(e).includes(t)&&Object.assign(e,_defineProperty({},t,{})),extend(e[t],o[t])):Object.assign(e,_defineProperty({},t,o[t]))}),extend.apply(void 0,[e].concat(n))):e}var Storage=function(){function e(t,n){var r=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];_classCallCheck(this,e),this.enabled=r&&e.supported,this.key=t,this.ttl=n}return _createClass(e,[{key:\"get\",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(is.empty(n))return null;var r=window.localStorage.getItem(\"\".concat(this.key,\"_ttl\"));if(is.empty(r)||r<Date.now())return null;var o=JSON.parse(n);return is.string(t)&&t.length?o[t]:o}},{key:\"set\",value:function(t){if(e.supported&&this.enabled&&is.object(t)){var n=this.get();is.empty(n)&&(n={}),extend(n,t),window.localStorage.setItem(this.key,JSON.stringify(n)),window.localStorage.setItem(\"\".concat(this.key,\"_ttl\"),Date.now()+this.ttl)}}}],[{key:\"supported\",get:function(){try{return\"localStorage\"in window&&(window.localStorage.setItem(\"___test\",\"___test\"),window.localStorage.removeItem(\"___test\"),!0)}catch(e){return!1}}}]),e}();function getDomain(e){var t=new URL(e).hostname,n=t.split(\".\"),r=n.length;return 2<r&&(t=\"\".concat(n[r-2],\".\").concat(n[r-1]),2===n[r-2].length&&2===n[r-1].length&&(t=\"\".concat(n[r-3],\".\").concat(t))),t}var Shr=function(){function e(t,n){var r=this;_classCallCheck(this,e),this.elements={count:null,trigger:null,popup:null},is.element(t)?this.elements.trigger=t:is.string(t)&&(this.elements.trigger=document.querySelector(t)),is.element(this.elements.trigger)&&is.empty(this.elements.trigger.shr)&&(this.config=extend({},defaults,n,{networks:constants}),this.console=new Console(this.config.debug),this.storage=new Storage(this.config.storage.key,this.config.storage.ttl,this.config.storage.enabled),this.getCount().then(function(e){return r.updateDisplay(e)}).catch(function(){}),this.listeners(!0),this.elements.trigger.shr=this)}return _createClass(e,[{key:\"destroy\",value:function(){this.listeners(!1)}},{key:\"listeners\",value:function(){var e=this,t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0]?\"addEventListener\":\"removeEventListener\";this.elements.trigger[t](\"click\",function(t){return e.share(t)},!1)}},{key:\"share\",value:function(e){var t=this;this.openPopup(e);var n=this.config.count.increment;this.getCount().then(function(e){return t.updateDisplay(e,n)}).catch(function(){})}},{key:\"openPopup\",value:function(e){if(!is.empty(this.network)&&this.networkConfig.popup){is.event(e)&&e.preventDefault();var t=this.networkConfig.popup,n=t.width,r=t.height,o=\"shr-popup--\".concat(this.network);if(this.popup&&!this.popup.closed)this.popup.focus(),this.console.log(\"Popup re-focused.\");else{var i=void 0===window.screenLeft?window.screen.left:window.screenLeft,s=void 0===window.screenTop?window.screen.top:window.screenTop,a=window.screen.width/2-n/2+i,c=window.screen.height/2-r/2+s;this.popup=window.open(this.href,o,\"top=\".concat(c,\",left=\").concat(a,\",width=\").concat(n,\",height=\").concat(r)),!this.popup||this.popup.closed||!is.boolean(this.popup.closed)?this.console.error(\"Popup blocked.\"):(this.popup.focus(),this.console.log(\"Popup opened.\"))}}}},{key:\"getCount\",value:function(){var e=this,t=!(0<arguments.length&&void 0!==arguments[0])||arguments[0];return new Promise(function(n,r){var o=e.apiUrl;if(is.empty(o))r(new Error(\"No URL available for \".concat(e.network,\".\")));else{if(t){var i=e.storage.get(e.target);if(!is.empty(i)&&Object.keys(i).includes(e.network)){var s=i[e.network];return n(is.number(s)?s:0),void e.console.log(\"getCount for '\".concat(e.target,\"' for '\").concat(e.network,\"' resolved from cache.\"))}}getJSONP(o).then(function(t){var r=0,o=e.elements.trigger.getAttribute(\"data-shr-display\");r=is.empty(o)?e.networkConfig.shareCount(t):t[o],is.empty(r)?r=0:(r=parseInt(r,10),!is.number(r)&&(r=0)),e.storage.set(_defineProperty({},e.target,_defineProperty({},e.network,r))),n(r)}).catch(r)}})}},{key:\"updateDisplay\",value:function(e){var t=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],n=this.config,r=n.count,o=n.wrapper,i=t?e+1:e,s=r.position.toLowerCase();if(0<i||r.displayZero){var a=function(e){return Math.round(i/e*10)/10},c=formatNumber(i);r.format&&(1e6<i?c=\"\".concat(a(1e6),\"M\"):1e3<i&&(c=\"\".concat(a(1e3),\"K\"))),is.element(this.elements.count)?this.elements.count.textContent=c:(wrap(this.elements.trigger,createElement(\"span\",{class:o.className})),this.elements.count=createElement(\"span\",{class:\"\".concat(r.className,\" \").concat(r.className,\"--\").concat(s)},c),this.elements.trigger.insertAdjacentElement(\"after\"===s?\"afterend\":\"beforebegin\",this.elements.count))}}},{key:\"href\",get:function(){return is.element(this.elements.trigger)?this.elements.trigger.href:null}},{key:\"network\",get:function(){var e=this;if(!is.element(this.elements.trigger))return null;var t=this.config.networks;return Object.keys(t).find(function(n){return getDomain(e.href)===t[n].domain})}},{key:\"networkConfig\",get:function(){return is.empty(this.network)?null:this.config.networks[this.network]}},{key:\"target\",get:function(){if(is.empty(this.network))return null;var e=new URL(this.href);switch(this.network){case\"facebook\":return e.searchParams.get(\"u\");case\"github\":return e.pathname.substring(1);case\"youtube\":return e.pathname.split(\"/\").pop();default:return e.searchParams.get(\"url\")}}},{key:\"apiUrl\",get:function(){if(is.empty(this.network))return null;var e=this.config.tokens;switch(this.network){case\"github\":return this.networkConfig.url(this.target,e.github);case\"youtube\":return this.networkConfig.url(this.target,e.youtube);default:return this.networkConfig.url(encodeURIComponent(this.target))}}}],[{key:\"setup\",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(is.string(t)?r=Array.from(document.querySelectorAll(t)):is.element(t)?r=[t]:is.nodeList(t)?r=Array.from(t):is.array(t)&&(r=t.filter(is.element)),is.empty(r))return null;var o=Object.assign({},defaults,n);is.string(t)&&o.watch&&new MutationObserver(function(n){Array.from(n).forEach(function(n){Array.from(n.addedNodes).forEach(function(n){is.element(n)&&matches(n,t)&&new e(n,o)})})}).observe(document.body,{childList:!0,subtree:!0});return r.map(function(t){return new e(t,n)})}}]),e}();export default Shr;","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.github.io/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('every');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){_defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var defaults={addCSS:!0,thumbWidth:15,watch:!0};function matches(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function trigger(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}var getConstructor=function(e){return null!=e?e.constructor:null},instanceOf=function(e,t){return!!(e&&t&&e instanceof t)},isNullOrUndefined=function(e){return null==e},isObject=function(e){return getConstructor(e)===Object},isNumber=function(e){return getConstructor(e)===Number&&!Number.isNaN(e)},isString=function(e){return getConstructor(e)===String},isBoolean=function(e){return getConstructor(e)===Boolean},isFunction=function(e){return getConstructor(e)===Function},isArray=function(e){return Array.isArray(e)},isNodeList=function(e){return instanceOf(e,NodeList)},isElement=function(e){return instanceOf(e,Element)},isEvent=function(e){return instanceOf(e,Event)},isEmpty=function(e){return isNullOrUndefined(e)||(isString(e)||isArray(e)||isNodeList(e))&&!e.length||isObject(e)&&!Object.keys(e).length},is={nullOrUndefined:isNullOrUndefined,object:isObject,number:isNumber,string:isString,boolean:isBoolean,function:isFunction,array:isArray,nodeList:isNodeList,element:isElement,event:isEvent,empty:isEmpty};function getDecimalPlaces(e){var t=\"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}function round(e,t){if(1>t){var n=getDecimalPlaces(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var RangeTouch=function(){function e(t,n){_classCallCheck(this,e),is.element(t)?this.element=t:is.string(t)&&(this.element=document.querySelector(t)),is.element(this.element)&&is.empty(this.element.rangeTouch)&&(this.config=_objectSpread2({},defaults,{},n),this.init())}return _createClass(e,[{key:\"init\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"none\",this.element.style.webKitUserSelect=\"none\",this.element.style.touchAction=\"manipulation\"),this.listeners(!0),this.element.rangeTouch=this)}},{key:\"destroy\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"\",this.element.style.webKitUserSelect=\"\",this.element.style.touchAction=\"\"),this.listeners(!1),this.element.rangeTouch=null)}},{key:\"listeners\",value:function(e){var t=this,n=e?\"addEventListener\":\"removeEventListener\";[\"touchstart\",\"touchmove\",\"touchend\"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:\"get\",value:function(t){if(!e.enabled||!is.event(t))return null;var n,r=t.target,i=t.changedTouches[0],o=parseFloat(r.getAttribute(\"min\"))||0,s=parseFloat(r.getAttribute(\"max\"))||100,u=parseFloat(r.getAttribute(\"step\"))||1,c=r.getBoundingClientRect(),a=100/c.width*(this.config.thumbWidth/2)/100;return 0>(n=100/c.width*(i.clientX-c.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*a:50<n&&(n+=2*(n-50)*a),o+round(n/100*(s-o),u)}},{key:\"set\",value:function(t){e.enabled&&is.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),trigger(t.target,\"touchend\"===t.type?\"change\":\"input\"))}}],[{key:\"setup\",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=null;if(is.empty(t)||is.string(t)?r=Array.from(document.querySelectorAll(is.string(t)?t:'input[type=\"range\"]')):is.element(t)?r=[t]:is.nodeList(t)?r=Array.from(t):is.array(t)&&(r=t.filter(is.element)),is.empty(r))return null;var i=_objectSpread2({},defaults,{},n);if(is.string(t)&&i.watch){var o=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){is.element(n)&&matches(n,t)&&new e(n,i)}))}))}));o.observe(document.body,{childList:!0,subtree:!0})}return r.map((function(t){return new e(t,n)}))}},{key:\"enabled\",get:function(){return\"ontouchstart\"in document.documentElement}}]),e}();export default RangeTouch;","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise) && isFunction(input.then);\n\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nconst isUrl = input => {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n } catch (e) {\n return false;\n }\n};\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element, delay) {\n setTimeout(() => {\n try {\n // eslint-disable-next-line no-param-reassign\n element.hidden = true;\n\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n\n // eslint-disable-next-line no-param-reassign\n element.hidden = false;\n } catch (e) {\n // Do nothing\n }\n }, delay);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isEdge: window.navigator.userAgent.includes('Edge'),\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n};\n\nexport default browser;\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport is from './is';\nimport { extend } from './objects';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new <element>\n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) {\n return;\n }\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) {\n return;\n }\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) {\n return;\n }\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = extend({}, existingAttributes);\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n // Get the parts and value\n const parts = stripped.split('=');\n const [key] = parts;\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.string(existing.class)) {\n attributes.class = `${existing.class} ${className}`;\n } else {\n attributes.class = className;\n }\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return extend(existing, attributes);\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n // eslint-disable-next-line no-param-reassign\n element.hidden = hide;\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const { prototype } = Element;\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return method.call(element, selector);\n}\n\n// Closest ancestor element matching selector (also tests element itself)\nexport function closest(element, selector) {\n const { prototype } = Element;\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n function closestElement() {\n let el = this;\n\n do {\n if (matches.matches(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n }\n\n const method = prototype.closest || closestElement;\n\n return method.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, tabFocus = false) {\n if (!is.element(element)) {\n return;\n }\n\n // Set regular focus\n element.focus({ preventScroll: true });\n\n // If we want to mimic keyboard focus via tab\n if (tabFocus) {\n toggleClass(element, this.config.classNames.tabFocus);\n }\n}\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, playsinline) {\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari & Chrome only currently\n pip: (() => {\n if (browser.isIPhone) {\n return false;\n }\n\n // Safari\n // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n if (is.function(createElement('video').webkitSetPresentationMode)) {\n return true;\n }\n\n // Chrome\n // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n return true;\n }\n\n return false;\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n } catch (e) {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // <input type=\"range\"> Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: { ...detail, plyr: this },\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach(item => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","import is from './is';\n/**\n * Silence a Promise-like object.\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n * @param {Object} value An object that may or may not be `Promise`-like.\n */\nexport function silencePromise(value) {\n if (is.promise(value)) {\n value.then(null, () => {});\n }\n}\n\nexport default { silencePromise };\n","// ==========================================================================\n// Style utils\n// ==========================================================================\n\nimport is from './is';\n\nexport function validateRatio(input) {\n if (!is.array(input) && (!is.string(input) || !input.includes(':'))) {\n return false;\n }\n\n const ratio = is.array(input) ? input : input.split(':');\n\n return ratio.map(Number).every(is.number);\n}\n\nexport function reduceAspectRatio(ratio) {\n if (!is.array(ratio) || !ratio.every(is.number)) {\n return null;\n }\n\n const [width, height] = ratio;\n const getDivider = (w, h) => (h === 0 ? w : getDivider(h, w % h));\n const divider = getDivider(width, height);\n\n return [width / divider, height / divider];\n}\n\nexport function getAspectRatio(input) {\n const parse = ratio => (validateRatio(ratio) ? ratio.split(':').map(Number) : null);\n // Try provided ratio\n let ratio = parse(input);\n\n // Get from config\n if (ratio === null) {\n ratio = parse(this.config.ratio);\n }\n\n // Get from embed\n if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) {\n ({ ratio } = this.embed);\n }\n\n // Get from HTML5 video\n if (ratio === null && this.isHTML5) {\n const { videoWidth, videoHeight } = this.media;\n ratio = reduceAspectRatio([videoWidth, videoHeight]);\n }\n\n return ratio;\n}\n\n// Set aspect ratio for responsive container\nexport function setAspectRatio(input) {\n if (!this.isVideo) {\n return {};\n }\n\n const { wrapper } = this.elements;\n const ratio = getAspectRatio.call(this, input);\n const [w, h] = is.array(ratio) ? ratio : [0, 0];\n const padding = (100 / w) * h;\n\n wrapper.style.paddingBottom = `${padding}%`;\n\n // For Vimeo we have an extra <div> to hide the standard controls and UI\n if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n const height = (100 / this.media.offsetWidth) * parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n const offset = (height - padding) / (height / 50);\n\n this.media.style.transform = `translateY(-${offset}%)`;\n } else if (this.isHTML5) {\n wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null);\n }\n\n return { padding, ratio };\n}\n\nexport default { setAspectRatio };\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { setAspectRatio } from './utils/style';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter(source => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Whether we're forcing all options (e.g. for streaming)\n if (this.config.quality.forced) {\n return this.config.quality.options;\n }\n\n // Get sizes from <source> elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n setup() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set aspect ratio if fixed\n if (!is.empty(this.config.ratio)) {\n setAspectRatio.call(player);\n }\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(s => s.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n if (player.quality === input) {\n return;\n }\n\n // If we're using an an external handler...\n if (player.config.quality.forced && is.function(player.config.quality.onChange)) {\n player.config.quality.onChange(input);\n } else {\n // Get sources\n const sources = html5.getSources.call(player);\n // Get first match for requested size\n const source = sources.find(s => Number(s.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.speed = playbackRate;\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n silencePromise(player.play());\n }\n });\n\n // Load new source\n player.media.load();\n }\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport const replaceAll = (input = '', find = '', replace = '') =>\n input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n\n// Convert to title case\nexport const toTitleCase = (input = '') =>\n input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([k, v]) => {\n string = replaceAll(string, k, v);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text') {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) {\n return;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n } catch (e) {\n resolve(request.responseText);\n }\n } else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n\n // Set the required response type\n request.responseType = responseType;\n\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n // eslint-disable-next-line no-param-reassign\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","var $ = require('../internals/export');\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.github.io/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n trunc: function trunc(it) {\n return (it > 0 ? floor : ceil)(it);\n }\n});\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(undefined, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport RangeTouch from 'rangetouch';\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create <svg> icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n // Create <svg>\n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n 'aria-hidden': 'true',\n focusable: 'false',\n }),\n );\n\n // Create the <use> to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add <use> to <svg>\n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n const attributes = { ...attr, class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') };\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a <button>\n createButton(buttonType, attr) {\n const attributes = extend({}, attr);\n let type = toCamelCase(buttonType);\n\n const props = {\n element: 'button',\n toggle: false,\n label: null,\n icon: null,\n labelPressed: null,\n iconPressed: null,\n };\n\n ['element', 'icon', 'label'].forEach(key => {\n if (Object.keys(attributes).includes(key)) {\n props[key] = attributes[key];\n delete attributes[key];\n }\n });\n\n // Default to 'button' type to prevent form submission\n if (props.element === 'button' && !Object.keys(attributes).includes('type')) {\n attributes.type = 'button';\n }\n\n // Set class name\n if (Object.keys(attributes).includes('class')) {\n if (!attributes.class.split(' ').some(c => c === this.config.classNames.control)) {\n extend(attributes, {\n class: `${attributes.class} ${this.config.classNames.control}`,\n });\n }\n } else {\n attributes.class = this.config.classNames.control;\n }\n\n // Large play button\n switch (buttonType) {\n case 'play':\n props.toggle = true;\n props.label = 'play';\n props.labelPressed = 'pause';\n props.icon = 'play';\n props.iconPressed = 'pause';\n break;\n\n case 'mute':\n props.toggle = true;\n props.label = 'mute';\n props.labelPressed = 'unmute';\n props.icon = 'volume';\n props.iconPressed = 'muted';\n break;\n\n case 'captions':\n props.toggle = true;\n props.label = 'enableCaptions';\n props.labelPressed = 'disableCaptions';\n props.icon = 'captions-off';\n props.iconPressed = 'captions-on';\n break;\n\n case 'fullscreen':\n props.toggle = true;\n props.label = 'enterFullscreen';\n props.labelPressed = 'exitFullscreen';\n props.icon = 'enter-fullscreen';\n props.iconPressed = 'exit-fullscreen';\n break;\n\n case 'play-large':\n attributes.class += ` ${this.config.classNames.control}--overlaid`;\n type = 'play';\n props.label = 'play';\n props.icon = 'play';\n break;\n\n default:\n if (is.empty(props.label)) {\n props.label = type;\n }\n if (is.empty(props.icon)) {\n props.icon = buttonType;\n }\n }\n\n const button = createElement(props.element);\n\n // Setup toggle icon and labels\n if (props.toggle) {\n // Icon\n button.appendChild(\n controls.createIcon.call(this, props.iconPressed, {\n class: 'icon--pressed',\n }),\n );\n button.appendChild(\n controls.createIcon.call(this, props.icon, {\n class: 'icon--not-pressed',\n }),\n );\n\n // Label/Tooltip\n button.appendChild(\n controls.createLabel.call(this, props.labelPressed, {\n class: 'label--pressed',\n }),\n );\n button.appendChild(\n controls.createLabel.call(this, props.label, {\n class: 'label--not-pressed',\n }),\n );\n } else {\n button.appendChild(controls.createIcon.call(this, props.icon));\n button.appendChild(controls.createLabel.call(this, props.label));\n }\n\n // Merge and set attributes\n extend(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n setAttributes(button, attributes);\n\n // We have multiple play buttons\n if (type === 'play') {\n if (!is.array(this.elements.buttons[type])) {\n this.elements.buttons[type] = [];\n }\n\n this.elements.buttons[type].push(button);\n } else {\n this.elements.buttons[type] = button;\n }\n\n return button;\n },\n\n // Create an <input type='range'>\n createRange(type, attributes) {\n // Seek input\n const input = createElement(\n 'input',\n extend(\n getAttributesFromSelector(this.config.selectors.inputs[type]),\n {\n type: 'range',\n min: 0,\n max: 100,\n step: 0.01,\n value: 0,\n autocomplete: 'off',\n // A11y fixes for https://github.com/sampotts/plyr/issues/905\n role: 'slider',\n 'aria-label': i18n.get(type, this.config),\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': 0,\n },\n attributes,\n ),\n );\n\n this.elements.inputs[type] = input;\n\n // Set the fill for webkit now\n controls.updateRangeFill.call(this, input);\n\n // Improve support on touch devices\n RangeTouch.setup(input);\n\n return input;\n },\n\n // Create a <progress>\n createProgress(type, attributes) {\n const progress = createElement(\n 'progress',\n extend(\n getAttributesFromSelector(this.config.selectors.display[type]),\n {\n min: 0,\n max: 100,\n value: 0,\n role: 'progressbar',\n 'aria-hidden': true,\n },\n attributes,\n ),\n );\n\n // Create the label inside\n if (type !== 'volume') {\n progress.appendChild(createElement('span', null, '0'));\n\n const suffixKey = {\n played: 'played',\n buffer: 'buffered',\n }[type];\n const suffix = suffixKey ? i18n.get(suffixKey, this.config) : '';\n\n progress.innerText = `% ${suffix.toLowerCase()}`;\n }\n\n this.elements.display[type] = progress;\n\n return progress;\n },\n\n // Create time display\n createTime(type, attrs) {\n const attributes = getAttributesFromSelector(this.config.selectors.display[type], attrs);\n\n const container = createElement(\n 'div',\n extend(attributes, {\n class: `${attributes.class ? attributes.class : ''} ${this.config.classNames.display.time} `.trim(),\n 'aria-label': i18n.get(type, this.config),\n }),\n '00:00',\n );\n\n // Reference for updates\n this.elements.display[type] = container;\n\n return container;\n },\n\n // Bind keyboard shortcuts for a menu item\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n bindMenuItemShortcuts(menuItem, type) {\n // Navigate through menus via arrow keys and space\n on.call(\n this,\n menuItem,\n 'keydown keyup',\n event => {\n // We only care about space and ⬆️ ⬇️️ ➡️\n if (![32, 38, 39, 40].includes(event.which)) {\n return;\n }\n\n // Prevent play / seek\n event.preventDefault();\n event.stopPropagation();\n\n // We're just here to prevent the keydown bubbling\n if (event.type === 'keydown') {\n return;\n }\n\n const isRadioButton = matches(menuItem, '[role=\"menuitemradio\"]');\n\n // Show the respective menu\n if (!isRadioButton && [32, 39].includes(event.which)) {\n controls.showMenuPanel.call(this, type, true);\n } else {\n let target;\n\n if (event.which !== 32) {\n if (event.which === 40 || (isRadioButton && event.which === 39)) {\n target = menuItem.nextElementSibling;\n\n if (!is.element(target)) {\n target = menuItem.parentNode.firstElementChild;\n }\n } else {\n target = menuItem.previousElementSibling;\n\n if (!is.element(target)) {\n target = menuItem.parentNode.lastElementChild;\n }\n }\n\n setFocus.call(this, target, true);\n }\n }\n },\n false,\n );\n\n // Enter will fire a `click` event but we still need to manage focus\n // So we bind to keyup which fires after and set focus here\n on.call(this, menuItem, 'keyup', event => {\n if (event.which !== 13) {\n return;\n }\n\n controls.focusFirstMenuItem.call(this, null, true);\n });\n },\n\n // Create a settings menu item\n createMenuItem({ value, list, type, title, badge = null, checked = false }) {\n const attributes = getAttributesFromSelector(this.config.selectors.inputs[type]);\n\n const menuItem = createElement(\n 'button',\n extend(attributes, {\n type: 'button',\n role: 'menuitemradio',\n class: `${this.config.classNames.control} ${attributes.class ? attributes.class : ''}`.trim(),\n 'aria-checked': checked,\n value,\n }),\n );\n\n const flex = createElement('span');\n\n // We have to set as HTML incase of special characters\n flex.innerHTML = title;\n\n if (is.element(badge)) {\n flex.appendChild(badge);\n }\n\n menuItem.appendChild(flex);\n\n // Replicate radio button behaviour\n Object.defineProperty(menuItem, 'checked', {\n enumerable: true,\n get() {\n return menuItem.getAttribute('aria-checked') === 'true';\n },\n set(check) {\n // Ensure exclusivity\n if (check) {\n Array.from(menuItem.parentNode.children)\n .filter(node => matches(node, '[role=\"menuitemradio\"]'))\n .forEach(node => node.setAttribute('aria-checked', 'false'));\n }\n\n menuItem.setAttribute('aria-checked', check ? 'true' : 'false');\n },\n });\n\n this.listeners.bind(\n menuItem,\n 'click keyup',\n event => {\n if (is.keyboardEvent(event) && event.which !== 32) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n menuItem.checked = true;\n\n switch (type) {\n case 'language':\n this.currentTrack = Number(value);\n break;\n\n case 'quality':\n this.quality = value;\n break;\n\n case 'speed':\n this.speed = parseFloat(value);\n break;\n\n default:\n break;\n }\n\n controls.showMenuPanel.call(this, 'home', is.keyboardEvent(event));\n },\n type,\n false,\n );\n\n controls.bindMenuItemShortcuts.call(this, menuItem, type);\n\n list.appendChild(menuItem);\n },\n\n // Format a time for display\n formatTime(time = 0, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return time;\n }\n\n // Always display hours if duration is over an hour\n const forceHours = getHours(this.duration) > 0;\n\n return formatTime(time, forceHours, inverted);\n },\n\n // Update the displayed time\n updateTimeDisplay(target = null, time = 0, inverted = false) {\n // Bail if there's no element to display or the value isn't a number\n if (!is.element(target) || !is.number(time)) {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n target.innerText = controls.formatTime(time, inverted);\n },\n\n // Update volume UI and storage\n updateVolume() {\n if (!this.supported.ui) {\n return;\n }\n\n // Update range\n if (is.element(this.elements.inputs.volume)) {\n controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n }\n\n // Update mute state\n if (is.element(this.elements.buttons.mute)) {\n this.elements.buttons.mute.pressed = this.muted || this.volume === 0;\n }\n },\n\n // Update seek value and lower fill\n setRange(target, value = 0) {\n if (!is.element(target)) {\n return;\n }\n\n // eslint-disable-next-line\n target.value = value;\n\n // Webkit range fill\n controls.updateRangeFill.call(this, target);\n },\n\n // Update <progress> elements\n updateProgress(event) {\n if (!this.supported.ui || !is.event(event)) {\n return;\n }\n\n let value = 0;\n\n const setProgress = (target, input) => {\n const val = is.number(input) ? input : 0;\n const progress = is.element(target) ? target : this.elements.display.buffer;\n\n // Update value and label\n if (is.element(progress)) {\n progress.value = val;\n\n // Update text label inside\n const label = progress.getElementsByTagName('span')[0];\n if (is.element(label)) {\n label.childNodes[0].nodeValue = val;\n }\n }\n };\n\n if (event) {\n switch (event.type) {\n // Video playing\n case 'timeupdate':\n case 'seeking':\n case 'seeked':\n value = getPercentage(this.currentTime, this.duration);\n\n // Set seek range value only if it's a 'natural' time event\n if (event.type === 'timeupdate') {\n controls.setRange.call(this, this.elements.inputs.seek, value);\n }\n\n break;\n\n // Check buffer status\n case 'playing':\n case 'progress':\n setProgress(this.elements.display.buffer, this.buffered * 100);\n\n break;\n\n default:\n break;\n }\n }\n },\n\n // Webkit polyfill for lower fill range\n updateRangeFill(target) {\n // Get range from event if event passed\n const range = is.event(target) ? target.target : target;\n\n // Needs to be a valid <input type='range'>\n if (!is.element(range) || range.getAttribute('type') !== 'range') {\n return;\n }\n\n // Set aria values for https://github.com/sampotts/plyr/issues/905\n if (matches(range, this.config.selectors.inputs.seek)) {\n range.setAttribute('aria-valuenow', this.currentTime);\n const currentTime = controls.formatTime(this.currentTime);\n const duration = controls.formatTime(this.duration);\n const format = i18n.get('seekLabel', this.config);\n range.setAttribute(\n 'aria-valuetext',\n format.replace('{currentTime}', currentTime).replace('{duration}', duration),\n );\n } else if (matches(range, this.config.selectors.inputs.volume)) {\n const percent = range.value * 100;\n range.setAttribute('aria-valuenow', percent);\n range.setAttribute('aria-valuetext', `${percent.toFixed(1)}%`);\n } else {\n range.setAttribute('aria-valuenow', range.value);\n }\n\n // WebKit only\n if (!browser.isWebkit) {\n return;\n }\n\n // Set CSS custom property\n range.style.setProperty('--value', `${(range.value / range.max) * 100}%`);\n },\n\n // Update hover tooltip for seeking\n updateSeekTooltip(event) {\n // Bail if setting not true\n if (\n !this.config.tooltips.seek ||\n !is.element(this.elements.inputs.seek) ||\n !is.element(this.elements.display.seekTooltip) ||\n this.duration === 0\n ) {\n return;\n }\n\n const visible = `${this.config.classNames.tooltip}--visible`;\n const toggle = show => toggleClass(this.elements.display.seekTooltip, visible, show);\n\n // Hide on touch\n if (this.touch) {\n toggle(false);\n return;\n }\n\n // Determine percentage, if already visible\n let percent = 0;\n const clientRect = this.elements.progress.getBoundingClientRect();\n\n if (is.event(event)) {\n percent = (100 / clientRect.width) * (event.pageX - clientRect.left);\n } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n } else {\n return;\n }\n\n // Set bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Display the time a click would seek to\n controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, (this.duration / 100) * percent);\n\n // Set position\n this.elements.display.seekTooltip.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n if (this.duration >= 2 ** 32) {\n toggleHidden(this.elements.display.currentTime, true);\n toggleHidden(this.elements.progress, true);\n return;\n }\n\n // Update ARIA values\n if (is.element(this.elements.inputs.seek)) {\n this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleMenuButton(setting, toggle) {\n toggleHidden(this.elements.settings.buttons[setting], !toggle);\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panels[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n } else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('[role=\"menu\"]');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panels.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = quality => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach(quality => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.buttons.loop, false);\n toggleHidden(this.elements.settings.panels.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleMenuButton.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.captions)) {\n return;\n }\n\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n const tracks = captions.getTracks.call(this);\n const toggle = Boolean(tracks.length);\n\n // Toggle the pane and tab\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!toggle) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.speed)) {\n return;\n }\n\n const type = 'speed';\n const list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');\n\n // Filter out invalid speeds\n this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Create items\n this.options.speed.forEach(speed => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { buttons } = this.elements.settings;\n const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Focus the first menu item in a given (or visible) menu\n focusFirstMenuItem(pane, tabFocus = false) {\n if (this.elements.settings.popup.hidden) {\n return;\n }\n\n let target = pane;\n\n if (!is.element(target)) {\n target = Object.values(this.elements.settings.panels).find(p => !p.hidden);\n }\n\n const firstItem = target.querySelector('[role^=\"menuitem\"]');\n\n setFocus.call(this, firstItem, tabFocus);\n },\n\n // Show/hide menu\n toggleMenu(input) {\n const { popup } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(popup) || !is.element(button)) {\n return;\n }\n\n // True toggle by default\n const { hidden } = popup;\n let show = hidden;\n\n if (is.boolean(input)) {\n show = input;\n } else if (is.keyboardEvent(input) && input.which === 27) {\n show = false;\n } else if (is.event(input)) {\n // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n // Element in the shadowDOM. The path, if available, is complete.\n const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target;\n const isMenuItem = popup.contains(target);\n\n // If the click was inside the menu or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && input.target !== button && show)) {\n return;\n }\n }\n\n // Set button attributes\n button.setAttribute('aria-expanded', show);\n\n // Show the actual popup\n toggleHidden(popup, !show);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n // Focus the first item if key interaction\n if (show && is.keyboardEvent(input)) {\n controls.focusFirstMenuItem.call(this, null, true);\n } else if (!show && !hidden) {\n // If closing, re-focus the button\n setFocus.call(this, button, is.keyboardEvent(input));\n }\n },\n\n // Get the natural size of a menu panel\n getMenuSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Show a panel in the menu\n showMenuPanel(type = '', tabFocus = false) {\n const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\n // Nothing to show, bail\n if (!is.element(target)) {\n return;\n }\n\n // Hide all other panels\n const container = target.parentNode;\n const current = Array.from(container.children).find(node => !node.hidden);\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getMenuSize.call(this, target);\n\n // Restore auto height/width\n const restore = event => {\n // We're only bothered about height and width on the container\n if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n\n // Set attributes on target\n toggleHidden(target, false);\n\n // Focus the first item\n controls.focusFirstMenuItem.call(this, target, tabFocus);\n },\n\n // Set the download URL\n setDownloadUrl() {\n const button = this.elements.buttons.download;\n\n // Bail if no button\n if (!is.element(button)) {\n return;\n }\n\n // Set attribute\n button.setAttribute('href', this.download);\n },\n\n // Build the default HTML\n create(data) {\n const {\n bindMenuItemShortcuts,\n createButton,\n createProgress,\n createRange,\n createTime,\n setQualityMenu,\n setSpeedMenu,\n showMenuPanel,\n } = controls;\n this.elements.controls = null;\n\n // Larger overlaid play button\n if (this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(createButton.call(this, 'play-large'));\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n this.elements.controls = container;\n\n // Default item attributes\n const defaultAttributes = { class: 'plyr__controls__item' };\n\n // Loop through controls in order\n dedupe(this.config.controls).forEach(control => {\n // Restart button\n if (control === 'restart') {\n container.appendChild(createButton.call(this, 'restart', defaultAttributes));\n }\n\n // Rewind button\n if (control === 'rewind') {\n container.appendChild(createButton.call(this, 'rewind', defaultAttributes));\n }\n\n // Play/Pause button\n if (control === 'play') {\n container.appendChild(createButton.call(this, 'play', defaultAttributes));\n }\n\n // Fast forward button\n if (control === 'fast-forward') {\n container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes));\n }\n\n // Progress\n if (control === 'progress') {\n const progressContainer = createElement('div', {\n class: `${defaultAttributes.class} plyr__progress__container`,\n });\n\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n progress.appendChild(\n createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n }),\n );\n\n // Buffer progress\n progress.appendChild(createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n progressContainer.appendChild(this.elements.progress);\n container.appendChild(progressContainer);\n }\n\n // Media current time display\n if (control === 'current-time') {\n container.appendChild(createTime.call(this, 'currentTime', defaultAttributes));\n }\n\n // Media duration display\n if (control === 'duration') {\n container.appendChild(createTime.call(this, 'duration', defaultAttributes));\n }\n\n // Volume controls\n if (control === 'mute' || control === 'volume') {\n let { volume } = this.elements;\n\n // Create the volume container if needed\n if (!is.element(volume) || !container.contains(volume)) {\n volume = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__volume`.trim(),\n }),\n );\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle mute button\n if (control === 'mute') {\n volume.appendChild(createButton.call(this, 'mute'));\n }\n\n // Volume range control\n // Ignored on iOS as it's handled globally\n // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n if (control === 'volume' && !browser.isIos) {\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n volume.appendChild(\n createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n ),\n );\n }\n }\n\n // Toggle captions button\n if (control === 'captions') {\n container.appendChild(createButton.call(this, 'captions', defaultAttributes));\n }\n\n // Settings button / menu\n if (control === 'settings' && !is.empty(this.config.settings)) {\n const wrapper = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__menu`.trim(),\n hidden: '',\n }),\n );\n\n wrapper.appendChild(\n createButton.call(this, 'settings', {\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const popup = createElement('div', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n });\n\n // Create the menu\n const menu = createElement('div', {\n role: 'menu',\n });\n\n home.appendChild(menu);\n inner.appendChild(home);\n this.elements.settings.panels.home = home;\n\n // Build the menu items\n this.config.settings.forEach(type => {\n // TODO: bundle this with the createMenuItem helper and bindings\n const menuItem = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n role: 'menuitem',\n 'aria-haspopup': true,\n hidden: '',\n }),\n );\n\n // Bind menu shortcuts for keyboard users\n bindMenuItemShortcuts.call(this, menuItem, type);\n\n // Show menu on click\n on.call(this, menuItem, 'click', () => {\n showMenuPanel.call(this, type, false);\n });\n\n const flex = createElement('span', null, i18n.get(type, this.config));\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n flex.appendChild(value);\n menuItem.appendChild(flex);\n menu.appendChild(menuItem);\n\n // Build the panes\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n });\n\n // Back button\n const backButton = createElement('button', {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n });\n\n // Visible label\n backButton.appendChild(\n createElement(\n 'span',\n {\n 'aria-hidden': true,\n },\n i18n.get(type, this.config),\n ),\n );\n\n // Screen reader label\n backButton.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.hidden,\n },\n i18n.get('menuBack', this.config),\n ),\n );\n\n // Go back via keyboard\n on.call(\n this,\n pane,\n 'keydown',\n event => {\n // We only care about <-\n if (event.which !== 37) {\n return;\n }\n\n // Prevent seek\n event.preventDefault();\n event.stopPropagation();\n\n // Show the respective menu\n showMenuPanel.call(this, 'home', true);\n },\n false,\n );\n\n // Go back via button click\n on.call(this, backButton, 'click', () => {\n showMenuPanel.call(this, 'home', false);\n });\n\n // Add to pane\n pane.appendChild(backButton);\n\n // Menu\n pane.appendChild(\n createElement('div', {\n role: 'menu',\n }),\n );\n\n inner.appendChild(pane);\n\n this.elements.settings.buttons[type] = menuItem;\n this.elements.settings.panels[type] = pane;\n });\n\n popup.appendChild(inner);\n wrapper.appendChild(popup);\n container.appendChild(wrapper);\n\n this.elements.settings.popup = popup;\n this.elements.settings.menu = wrapper;\n }\n\n // Picture in picture button\n if (control === 'pip' && support.pip) {\n container.appendChild(createButton.call(this, 'pip', defaultAttributes));\n }\n\n // Airplay button\n if (control === 'airplay' && support.airplay) {\n container.appendChild(createButton.call(this, 'airplay', defaultAttributes));\n }\n\n // Download button\n if (control === 'download') {\n const attributes = extend({}, defaultAttributes, {\n element: 'a',\n href: this.download,\n target: '_blank',\n });\n\n // Set download attribute for HTML5 only\n if (this.isHTML5) {\n attributes.download = '';\n }\n\n const { download } = this.config.urls;\n\n if (!is.url(download) && this.isEmbed) {\n extend(attributes, {\n icon: `logo-${this.provider}`,\n label: this.provider,\n });\n }\n\n container.appendChild(createButton.call(this, 'download', attributes));\n }\n\n // Toggle fullscreen button\n if (control === 'fullscreen') {\n container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes));\n }\n });\n\n // Set available quality levels\n if (this.isHTML5) {\n setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n // If function, run it and use output\n if (is.function(this.config.controls)) {\n this.config.controls = this.config.controls.call(this, props);\n }\n\n // Convert falsy controls to empty array (primarily for empty strings)\n if (!this.config.controls) {\n this.config.controls = [];\n }\n\n if (is.element(this.config.controls) || is.string(this.config.controls)) {\n // HTMLElement or Non-empty string passed as the option\n container = this.config.controls;\n } else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = input => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n } else if (is.element(container)) {\n container.innerHTML = replace(container.innerHTML);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n target[insertMethod]('afterbegin', container);\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Add pressed property to buttons\n if (!is.empty(this.elements.buttons)) {\n const addProperty = button => {\n const className = this.config.classNames.controlPressed;\n Object.defineProperty(button, 'pressed', {\n enumerable: true,\n get() {\n return hasClass(button, className);\n },\n set(pressed = false) {\n toggleClass(button, className, pressed);\n },\n });\n };\n\n // Toggle classname when pressed property is set\n Object.values(this.elements.buttons)\n .filter(Boolean)\n .forEach(button => {\n if (is.array(button) || is.nodeList(button)) {\n Array.from(button)\n .filter(Boolean)\n .forEach(addProperty);\n } else {\n addProperty(button);\n }\n });\n }\n\n // Edge sometimes doesn't finish the paint so force a repaint\n if (browser.isEdge) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach(label => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n });\n }\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {String} input - the URL to be parsed\n * @param {Boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls) &&\n this.config.controls.includes('settings') &&\n this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach(track => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null &&\n url.hostname !== window.location.href.hostname &&\n ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then(blob => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n const languages = dedupe(browserLanguages.map(language => language.split('-')[0]));\n let language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions');\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks\n .filter(track => !meta.get(track))\n .forEach(track => {\n this.debug.log('Track added', track);\n\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n // Note: mode='hidden' forces a track to download. To ensure every track\n // isn't downloaded at once, only 'showing' tracks should be reassigned\n // eslint-disable-next-line no-param-reassign\n if (track.mode === 'showing') {\n // eslint-disable-next-line no-param-reassign\n track.mode = 'hidden';\n }\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n\n // Update available languages in list\n if (\n is.array(this.config.controls) &&\n this.config.controls.includes('settings') &&\n this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle button if it's enabled\n if (this.elements.buttons.captions) {\n this.elements.buttons.captions.pressed = active;\n }\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n\n // Wait for the call stack to clear before setting mode='hidden'\n // on the active track - forcing the browser to download it\n setTimeout(() => {\n if (active && this.captions.toggled) {\n this.captions.currentTrackNode.mode = 'hidden';\n }\n });\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n\n languages.every(language => {\n track = sorted.find(t => t.language === language);\n return !track; // Break iteration if there is a match\n });\n\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Allow inline playback on iOS (this effects YouTube/Vimeo - HTML5 requires the attribute present)\n // TODO: Remove iosNative fullscreen option in favour of this (logic needs work)\n playsinline: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Force an aspect ratio\n // The format must be `'w:h'` (e.g. `'16:9'`)\n ratio: null,\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.6.1/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n // The options to display in the UI, if available for the source media\n options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n forced: false,\n onChange: null,\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback using full viewport/window\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode\n // Non-ancestors of the player element will be ignored\n // container: null, // defaults to the player element\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n // 'duration',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n // 'download',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n seekLabel: '{currentTime} of {duration}',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n download: 'Download',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n pip: 'PIP',\n menuBack: 'Go back to previous menu',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n download: null,\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/v2/video/{0}.json',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n download: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'download',\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n\n // Quality\n 'qualitychange',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n download: '[data-plyr=\"download\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n controlPressed: 'plyr__control--pressed',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isIos: 'plyr--is-ios',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n display: {\n time: 'plyr__time',\n },\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n tabFocus: 'plyr__tab-focus',\n previewThumbnails: {\n // Tooltip thumbs\n thumbContainer: 'plyr__preview-thumb',\n thumbContainerShown: 'plyr__preview-thumb--is-shown',\n imageContainer: 'plyr__preview-thumb__image-container',\n timeContainer: 'plyr__preview-thumb__time-container',\n // Scrubbing\n scrubbingContainer: 'plyr__preview-scrubbing',\n scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown',\n },\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n },\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n tagUrl: '',\n },\n\n // Preview Thumbnails plugin\n previewThumbnails: {\n enabled: false,\n src: '',\n },\n\n // Vimeo plugin\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: false,\n // Whether the owner of the video has a Pro or Business account\n // (which allows us to properly hide controls without CSS hacks, etc)\n premium: false,\n // Custom settings from Plyr\n referrerPolicy: null, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n },\n\n // YouTube plugin\n youtube: {\n noCookie: true, // Whether to use an alternative version of YouTube without cookies\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr states\n// ==========================================================================\n\nexport const pip = {\n active: 'picture-in-picture',\n inactive: 'inline',\n};\n\nexport default { pip };\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {String} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nconst noop = () => {};\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n\n get warn() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n\n get error() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// https://webkit.org/blog/7929/designing-websites-for-iphone-x/\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { closest,getElements, hasClass, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Force the use of 'full window/browser' rather than fullscreen\n this.forceFallback = player.config.fullscreen.fallback === 'force';\n\n // Get the fullscreen element\n // Checks container is an ancestor, defaults to null\n this.player.elements.fullscreen =\n player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container);\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n this.onChange();\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', event => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.toggle();\n });\n\n // Tap focus when in fullscreen\n on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event));\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get native() {\n return !!(\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n );\n }\n\n // If we're actually using native\n get usingNative() {\n return Fullscreen.native && !this.forceFallback;\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) {\n return '';\n }\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some(pre => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is enabled\n get enabled() {\n return (\n (Fullscreen.native || this.player.config.fullscreen.fallback) &&\n this.player.config.fullscreen.enabled &&\n this.player.supported.ui &&\n this.player.isVideo\n );\n }\n\n // Get active state\n get active() {\n if (!this.enabled) {\n return false;\n }\n\n // Fallback using classname\n if (!Fullscreen.native || this.forceFallback) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];\n\n return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.fullscreen || this.player.elements.container;\n }\n\n onChange() {\n if (!this.enabled) {\n return;\n }\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n button.pressed = this.active;\n }\n\n // Trigger an event\n triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n }\n\n toggleFallback(toggle = false) {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX || 0,\n y: window.scrollY || 0,\n };\n } else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Force full viewport on iPhone X+\n if (browser.isIos) {\n let viewport = document.head.querySelector('meta[name=\"viewport\"]');\n const property = 'viewport-fit=cover';\n\n // Inject the viewport meta if required\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n }\n\n // Check if the property already exists\n const hasProperty = is.string(viewport.content) && viewport.content.includes(property);\n\n if (toggle) {\n this.cleanupViewport = !hasProperty;\n\n if (!hasProperty) {\n viewport.content += `,${property}`;\n }\n } else if (this.cleanupViewport) {\n viewport.content = viewport.content\n .split(',')\n .filter(part => part.trim() !== property)\n .join(',');\n }\n }\n\n // Toggle button and fire events\n this.onChange();\n }\n\n // Trap focus inside container\n trapFocus(event) {\n // Bail if iOS, not active, not the tab key\n if (browser.isIos || !this.active || event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = document.activeElement;\n const focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n const [first] = focusable;\n const last = focusable[focusable.length - 1];\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n }\n\n // Update UI\n update() {\n if (this.enabled) {\n let mode;\n\n if (this.forceFallback) {\n mode = 'Fallback (forced)';\n } else if (Fullscreen.native) {\n mode = 'Native';\n } else {\n mode = 'Fallback';\n }\n\n this.player.debug.log(`${mode} fullscreen enabled`);\n } else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n }\n\n // Make an element fullscreen\n enter() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitEnterFullscreen();\n } else if (!Fullscreen.native || this.forceFallback) {\n this.toggleFallback(true);\n } else if (!this.prefix) {\n this.target.requestFullscreen({ navigationUI: 'hide' });\n } else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n }\n\n // Bail from fullscreen\n exit() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitExitFullscreen();\n silencePromise(this.player.play());\n } else if (!Fullscreen.native || this.forceFallback) {\n this.toggleFallback(false);\n } else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n } else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n }\n\n // Toggle state\n toggle() {\n if (!this.active) {\n this.enter();\n } else {\n this.exit();\n }\n }\n}\n\nexport default Fullscreen;\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport support from './support';\nimport browser from './utils/browser';\nimport { getElement, toggleClass } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadImage from './utils/load-image';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n } else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add iOS class\n toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n }\n\n // If there's a play button, set label\n Array.from(this.elements.buttons.play || []).forEach(button => {\n button.setAttribute('aria-label', label);\n });\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('data-poster', poster);\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch(err => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw err;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n\n ui.togglePoster.call(this, true);\n\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set state\n Array.from(this.elements.buttons.play || []).forEach(target => {\n Object.assign(target, { pressed: this.playing });\n target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config));\n });\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(\n () => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n },\n this.loading ? 250 : 0,\n );\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls: controlsElement } = this.elements;\n\n if (controlsElement && this.config.hideControls) {\n // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();\n\n // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n this.toggleControls(\n Boolean(\n force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek,\n ),\n );\n }\n },\n\n // Migrate any custom properties from the media to the parent\n migrateStyles() {\n // Loop through values (as they are the keys when the object is spread 🤔)\n Object.values({ ...this.media.style })\n // We're only fussed about Plyr specific properties\n .filter(key => !is.empty(key) && key.startsWith('--plyr'))\n .forEach(key => {\n // Set on the container\n this.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key));\n\n // Clean up from media element\n this.media.style.removeProperty(key);\n });\n\n // Remove attribute if empty\n if (is.empty(this.media.style)) {\n this.media.removeAttribute('style');\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { getAspectRatio, setAspectRatio } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.setTabFocus = this.setTabFocus.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.which === 32 && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keycodes should we prevent default\n const preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79];\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n silencePromise(player.togglePlay());\n }\n break;\n\n case 38:\n // Arrow up\n player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n player.forward();\n break;\n\n case 37:\n // Arrow back\n player.rewind();\n break;\n\n case 70:\n // F key\n player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n player.loop = !player.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n }\n\n setTabFocus(event) {\n const { player } = this;\n const { elements } = player;\n\n clearTimeout(this.focusTimer);\n\n // Ignore any key other than tab\n if (event.type === 'keydown' && event.which !== 9) {\n return;\n }\n\n // Store reference to event timeStamp\n if (event.type === 'keydown') {\n this.lastKeyDown = event.timeStamp;\n }\n\n // Remove current classes\n const removeCurrent = () => {\n const className = player.config.classNames.tabFocus;\n const current = getElements.call(player, `.${className}`);\n toggleClass(current, className, false);\n };\n\n // Determine if a key was pressed to trigger this event\n const wasKeyDown = event.timeStamp - this.lastKeyDown <= 20;\n\n // Ignore focus events if a key was pressed prior\n if (event.type === 'focus' && !wasKeyDown) {\n return;\n }\n\n // Remove all current\n removeCurrent();\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n if (event.type !== 'focusout') {\n this.focusTimer = setTimeout(() => {\n const focused = document.activeElement;\n\n // Ignore if current focus element isn't inside the player\n if (!elements.container.contains(focused)) {\n return;\n }\n\n toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n }, 10);\n }\n }\n\n // Global window & document listeners\n global(toggle = true) {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n\n // Tab focus detection\n toggleListener.call(player, document.body, 'keydown focus blur focusout', this.setTabFocus, toggle, false, true);\n }\n\n // Container listeners\n container() {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n event => {\n const { controls: controlsElement } = elements;\n\n // Remove button states for fullscreen\n if (controlsElement && event.type === 'enterfullscreen') {\n controlsElement.pressed = false;\n controlsElement.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Set a gutter for Vimeo\n const setGutter = (ratio, padding, toggle) => {\n if (!player.isVimeo || player.config.vimeo.premium) {\n return;\n }\n\n const target = player.elements.wrapper.firstChild;\n const [, y] = ratio;\n const [videoX, videoY] = getAspectRatio.call(player);\n\n target.style.maxWidth = toggle ? `${(y / videoY) * videoX}px` : null;\n target.style.margin = toggle ? '0 auto' : null;\n };\n\n // Resize on fullscreen change\n const setPlayerSize = measure => {\n // If we don't need to measure the viewport\n if (!measure) {\n return setAspectRatio.call(player);\n }\n\n const rect = elements.container.getBoundingClientRect();\n const { width, height } = rect;\n\n return setAspectRatio.call(player, `${width}:${height}`);\n };\n\n const resized = () => {\n clearTimeout(timers.resized);\n timers.resized = setTimeout(setPlayerSize, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', event => {\n const { target, usingNative } = player.fullscreen;\n\n // Ignore events not from target\n if (target !== elements.container) {\n return;\n }\n\n // If it's not an embed and no ratio specified\n if (!player.isEmbed && is.empty(player.config.ratio)) {\n return;\n }\n\n const isEnter = event.type === 'enterfullscreen';\n // Set the player size when entering fullscreen to viewport size\n const { padding, ratio } = setPlayerSize(isEnter);\n\n // Set Vimeo gutter\n setGutter(ratio, padding, isEnter);\n\n // If not using native browser fullscreen API, we need to check for resizes of viewport\n if (!usingNative) {\n if (isEnter) {\n on.call(player, window, 'resize', resized);\n } else {\n off.call(player, window, 'resize', resized);\n }\n }\n });\n }\n\n // Listen for media events\n media() {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event),\n );\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n\n // Call pause otherwise IE11 will start playing the video again\n player.pause();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event),\n );\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event),\n );\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', event => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(\n event,\n () => {\n silencePromise(player.play());\n },\n 'play',\n );\n } else {\n this.proxy(\n event,\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadUrl.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, event => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n }\n\n // Run default and custom handlers\n proxy(event, defaultHandler, customHandlerKey) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned !== false && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n }\n\n // Trigger custom and default handlers\n bind(element, type, defaultHandler, customHandlerKey, passive = true) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n }\n\n // Listen for control events\n controls() {\n const { player } = this;\n const { elements } = player;\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach(button => {\n this.bind(\n button,\n 'click',\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind');\n\n // Rewind\n this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward');\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(\n elements.buttons.settings,\n 'click',\n event => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n event.preventDefault();\n\n controls.toggleMenu.call(player, event);\n },\n null,\n false,\n ); // Can't be passive as we're preventing default\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n event => {\n const code = event.which;\n\n // We only care about space and return\n if (![13, 32].includes(code)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (code === 13) {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', event => {\n if (event.which === 27) {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', event => {\n const rect = elements.progress.getBoundingClientRect();\n const percent = (100 / rect.width) * (event.pageX - rect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n const code = event.keyCode ? event.keyCode : event.which;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && code !== 39 && code !== 37) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n silencePromise(player.play());\n } else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an <input type=\"range\">,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event),\n );\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave touchend click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in <input type=\"range\"> for webkit\n if (browser.isWebkit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(element => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n event => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', event => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Also update controls.hover state for any non-player children of fullscreen element (as above)\n if (elements.fullscreen) {\n Array.from(elements.fullscreen.children)\n .filter(c => !c.contains(elements.container))\n .forEach(child => {\n this.bind(child, 'mouseenter mouseleave', event => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n });\n }\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n event => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathname = path.replace(/[\\?|#].*$/, ''),\n pathStripped = path.replace(/^(css|img)!/, ''),\n isLegacyIECss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(pathname)) {\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped;\n\n // tag IE9+\n isLegacyIECss = 'hideFocus' in e;\n\n // use preload in IE Edge (to detect load errors)\n if (isLegacyIECss && e.relList) {\n isLegacyIECss = 0;\n e.rel = 'preload';\n e.as = 'style';\n }\n } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // treat empty stylesheets as failures to get around lack of onerror\n // support in IE9-11\n if (isLegacyIECss) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n } else if (e.rel == 'preload' && e.as == 'style') {\n // activate preloaded stylesheets\n return e.rel = 'stylesheet'; // jshint ignore:line\n }\n \n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n * callback or (3) object literal with success/error arguments, numRetries,\n * etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n * literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n function loadFn(resolve, reject) {\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n \n // resolve Promise\n if (resolve) {\n executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n }\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n }\n \n if (args.returnPromise) return new Promise(loadFn);\n else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { format, stripHTML } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n const player = this;\n\n // Add embed class for responsive\n toggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set intial ratio\n setAspectRatio.call(player);\n\n // Load the SDK if not already\n if (!is.object(window.Vimeo)) {\n loadScript(player.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(player);\n })\n .catch(error => {\n player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n });\n } else {\n vimeo.ready.call(player);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n const { premium, referrerPolicy, ...frameParams } = config;\n\n // If the owner has a pro or premium account then we can hide controls etc\n if (premium) {\n Object.assign(frameParams, {\n controls: false,\n sidedock: false,\n });\n }\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams({\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n ...frameParams,\n });\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allow', 'autoplay,fullscreen,picture-in-picture');\n\n // Set the referrer policy if required\n if (!is.empty(referrerPolicy)) {\n iframe.setAttribute('referrerPolicy', referrerPolicy);\n }\n\n // Inject the package\n const { poster } = player;\n if (premium) {\n iframe.setAttribute('data-poster', poster);\n player.media = replaceElement(iframe, player.media);\n } else {\n const wrapper = createElement('div', { class: player.config.classNames.embedContainer, 'data-poster': poster });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n }\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href).catch(() => {});\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(() => {\n // Cannot set Playback Rate, Video is probably not on Pro account\n player.options.speed = [1];\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n controls.setDownloadUrl.call(player);\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(dimensions => {\n const [width, height] = dimensions;\n player.embed.ratio = [width, height];\n setAspectRatio.call(this);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('bufferstart', () => {\n triggerEvent.call(player, player.media, 'waiting');\n });\n\n player.embed.on('bufferend', () => {\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/load-image';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nfunction getHost(config) {\n if (config.noCookie) {\n return 'https://www.youtube-nocookie.com';\n }\n\n if (window.location.protocol === 'http:') {\n return 'http://www.youtube.com';\n }\n\n // Use YouTube's default\n return undefined;\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Reference current global callback\n const callback = window.onYouTubeIframeAPIReady;\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n // Call global callback if set\n if (is.function(callback)) {\n callback();\n }\n\n youtube.ready.call(this);\n };\n\n // Load the SDK\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n const url = format(this.config.urls.youtube.api, videoId);\n\n fetch(url)\n .then(data => {\n if (is.object(data)) {\n const { title, height, width } = data;\n\n // Set title\n this.config.title = title;\n ui.setTitle.call(this);\n\n // Set aspect ratio\n this.embed.ratio = [width, height];\n }\n\n setAspectRatio.call(this);\n })\n .catch(() => {\n // Set aspect ratio\n setAspectRatio.call(this);\n });\n },\n\n // API ready\n ready() {\n const player = this;\n // Ignore already setup (race condition)\n const currentId = player.media && player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from <div> if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the <iframe> with a <div> due to YouTube API issues\n const videoId = parseId(source);\n const id = generateId(player.provider);\n // Get poster, if already set\n const { poster } = player;\n // Replace media element\n const container = createElement('div', { id, 'data-poster': poster });\n player.media = replaceElement(container, player.media);\n\n // Id to poster wrapper\n const posterSrc = s => `https://i.ytimg.com/vi/${videoId}/${s}default.jpg`;\n\n // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)\n loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded\n .catch(() => loadImage(posterSrc('sd'), 121)) // 480p padded 4:3\n .catch(() => loadImage(posterSrc('hq'))) // 360p padded 4:3. Always exists\n .then(image => ui.setPoster.call(player, image.src))\n .then(src => {\n // If the image is padded, use background-size \"cover\" instead (like youtube does too with their posters)\n if (!src.includes('maxres')) {\n player.elements.poster.style.backgroundSize = 'cover';\n }\n })\n .catch(() => {});\n\n const config = player.config.youtube;\n\n // Setup instance\n // https://developers.google.com/youtube/iframe_api_reference\n player.embed = new window.YT.Player(id, {\n videoId,\n host: getHost(config),\n playerVars: extend(\n {},\n {\n autoplay: player.config.autoplay ? 1 : 0, // Autoplay\n hl: player.config.hl, // iframe interface language\n controls: player.supported.ui ? 0 : 1, // Only show controls if not fully supported\n disablekb: 1, // Disable keyboard as we handle it\n playsinline: !player.config.fullscreen.iosNative ? 1 : 0, // Allow iOS inline playback\n // Captions are flaky on YouTube\n cc_load_policy: player.captions.active ? 1 : 0,\n cc_lang_pref: player.config.captions.language,\n // Tracking for stats\n widget_referrer: window ? window.location.href : null,\n },\n config,\n ),\n events: {\n onError(event) {\n // YouTube may fire onError twice, so only handle it once\n if (!player.media.error) {\n const code = event.data;\n // Messages copied from https://developers.google.com/youtube/iframe_api_reference#onError\n const message =\n {\n 2: 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.',\n 5: 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.',\n 100: 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.',\n 101: 'The owner of the requested video does not allow it to be played in embedded players.',\n 150: 'The owner of the requested video does not allow it to be played in embedded players.',\n }[code] || 'An unknown error occured';\n\n player.media.error = { code, message };\n\n triggerEvent.call(player, player.media, 'error');\n }\n },\n onPlaybackRateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Get current speed\n player.media.playbackRate = instance.getPlaybackRate();\n\n triggerEvent.call(player, player.media, 'ratechange');\n },\n onReady(event) {\n // Bail if onReady has already been called. See issue #1108\n if (is.function(player.media.play)) {\n return;\n }\n // Get the instance\n const instance = event.target;\n\n // Get the title\n youtube.getTitle.call(player, videoId);\n\n // Create a faux HTML5 API using the YouTube API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n instance.playVideo();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n instance.pauseVideo();\n };\n\n player.media.stop = () => {\n instance.stopVideo();\n };\n\n player.media.duration = instance.getDuration();\n player.media.paused = true;\n\n // Seeking\n player.media.currentTime = 0;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return Number(instance.getCurrentTime());\n },\n set(time) {\n // If paused and never played, mute audio preventively (YouTube starts playing on seek if the video hasn't been played yet).\n if (player.paused && !player.embed.hasPlayed) {\n player.embed.mute();\n }\n\n // Set seeking state and trigger event\n player.media.seeking = true;\n triggerEvent.call(player, player.media, 'seeking');\n\n // Seek after events sent\n instance.seekTo(time);\n },\n });\n\n // Playback speed\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return instance.getPlaybackRate();\n },\n set(input) {\n instance.setPlaybackRate(input);\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n volume = input;\n instance.setVolume(volume * 100);\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : muted;\n muted = toggle;\n instance[toggle ? 'mute' : 'unMute']();\n triggerEvent.call(player, player.media, 'volumechange');\n },\n });\n\n // Source\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return instance.getVideoUrl();\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Get available speeds\n const speeds = instance.getAvailablePlaybackRates();\n // Filter based on config\n player.options.speed = speeds.filter(s => player.config.speed.options.includes(s));\n\n // Set the tabindex to avoid focus entering iframe\n if (player.supported.ui) {\n player.media.setAttribute('tabindex', -1);\n }\n\n triggerEvent.call(player, player.media, 'timeupdate');\n triggerEvent.call(player, player.media, 'durationchange');\n\n // Reset timer\n clearInterval(player.timers.buffering);\n\n // Setup buffering\n player.timers.buffering = setInterval(() => {\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n\n // Trigger progress only when we actually buffer something\n if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) {\n triggerEvent.call(player, player.media, 'progress');\n }\n\n // Set last buffer point\n player.media.lastBuffered = player.media.buffered;\n\n // Bail if we're at 100%\n if (player.media.buffered === 1) {\n clearInterval(player.timers.buffering);\n\n // Trigger event\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n }, 200);\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 50);\n },\n onStateChange(event) {\n // Get the instance\n const instance = event.target;\n\n // Reset timer\n clearInterval(player.timers.playing);\n\n const seeked = player.media.seeking && [1, 2].includes(event.data);\n\n if (seeked) {\n // Unset seeking and fire seeked event\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n }\n\n // Handle events\n // -1 Unstarted\n // 0 Ended\n // 1 Playing\n // 2 Paused\n // 3 Buffering\n // 5 Video cued\n switch (event.data) {\n case -1:\n // Update scrubber\n triggerEvent.call(player, player.media, 'timeupdate');\n\n // Get loaded % from YouTube\n player.media.buffered = instance.getVideoLoadedFraction();\n triggerEvent.call(player, player.media, 'progress');\n\n break;\n\n case 0:\n assurePlaybackState.call(player, false);\n\n // YouTube doesn't support loop for a single video, so mimick it.\n if (player.media.loop) {\n // YouTube needs a call to `stopVideo` before playing again\n instance.stopVideo();\n instance.playVideo();\n } else {\n triggerEvent.call(player, player.media, 'ended');\n }\n\n break;\n\n case 1:\n // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)\n if (!player.config.autoplay && player.media.paused && !player.embed.hasPlayed) {\n player.media.pause();\n } else {\n assurePlaybackState.call(player, true);\n\n triggerEvent.call(player, player.media, 'playing');\n\n // Poll to get playback progress\n player.timers.playing = setInterval(() => {\n triggerEvent.call(player, player.media, 'timeupdate');\n }, 50);\n\n // Check duration again due to YouTube bug\n // https://github.com/sampotts/plyr/issues/374\n // https://code.google.com/p/gdata-issues/issues/detail?id=8690\n if (player.media.duration !== instance.getDuration()) {\n player.media.duration = instance.getDuration();\n triggerEvent.call(player, player.media, 'durationchange');\n }\n }\n\n break;\n\n case 2:\n // Restore audio (YouTube starts playing on seek if the video hasn't been played yet)\n if (!player.muted) {\n player.embed.unMute();\n }\n assurePlaybackState.call(player, false);\n\n break;\n\n case 3:\n // Trigger waiting event to add loading classes to container as the video buffers.\n triggerEvent.call(player, player.media, 'waiting');\n\n break;\n\n default:\n break;\n }\n\n triggerEvent.call(player, player.elements.container, 'statechange', false, {\n code: event.data,\n });\n },\n },\n });\n },\n};\n\nexport default youtube;\n","// ==========================================================================\n// Plyr Media\n// ==========================================================================\n\nimport html5 from './html5';\nimport vimeo from './plugins/vimeo';\nimport youtube from './plugins/youtube';\nimport { createElement, toggleClass, wrap } from './utils/elements';\n\nconst media = {\n // Setup media\n setup() {\n // If there's no media, bail\n if (!this.media) {\n this.debug.warn('No media element found!');\n return;\n }\n\n // Add type class\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', this.type), true);\n\n // Add provider class\n toggleClass(this.elements.container, this.config.classNames.provider.replace('{0}', this.provider), true);\n\n // Add video class for embeds\n // This will require changes if audio embeds are added\n if (this.isEmbed) {\n toggleClass(this.elements.container, this.config.classNames.type.replace('{0}', 'video'), true);\n }\n\n // Inject the player wrapper\n if (this.isVideo) {\n // Create the wrapper div\n this.elements.wrapper = createElement('div', {\n class: this.config.classNames.video,\n });\n\n // Wrap the video in a container\n wrap(this.media, this.elements.wrapper);\n\n // Poster image container\n this.elements.poster = createElement('div', {\n class: this.config.classNames.poster,\n });\n\n this.elements.wrapper.appendChild(this.elements.poster);\n }\n\n if (this.isHTML5) {\n html5.setup.call(this);\n } else if (this.isYouTube) {\n youtube.setup.call(this);\n } else if (this.isVimeo) {\n vimeo.setup.call(this);\n }\n },\n};\n\nexport default media;\n","// ==========================================================================\n// Advertisement plugin using Google IMA HTML5 SDK\n// Create an account with our ad partner, vi here:\n// https://www.vi.ai/publisher-video-monetization/\n// ==========================================================================\n\n/* global google */\n\nimport { createElement } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport i18n from '../utils/i18n';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { silencePromise } from '../utils/promise';\nimport { formatTime } from '../utils/time';\nimport { buildUrlParams } from '../utils/urls';\n\nconst destroy = instance => {\n // Destroy our adsManager\n if (instance.manager) {\n instance.manager.destroy();\n }\n\n // Destroy our adsManager\n if (instance.elements.displayContainer) {\n instance.elements.displayContainer.destroy();\n }\n\n instance.elements.container.remove();\n};\n\nclass Ads {\n /**\n * Ads constructor.\n * @param {Object} player\n * @return {Ads}\n */\n constructor(player) {\n this.player = player;\n this.config = player.config.ads;\n this.playing = false;\n this.initialized = false;\n this.elements = {\n container: null,\n displayContainer: null,\n };\n this.manager = null;\n this.loader = null;\n this.cuePoints = null;\n this.events = {};\n this.safetyTimer = null;\n this.countdownTimer = null;\n\n // Setup a promise to resolve when the IMA manager is ready\n this.managerPromise = new Promise((resolve, reject) => {\n // The ad is loaded and ready\n this.on('loaded', resolve);\n\n // Ads failed\n this.on('error', reject);\n });\n\n this.load();\n }\n\n get enabled() {\n const { config } = this;\n\n return (\n this.player.isHTML5 &&\n this.player.isVideo &&\n config.enabled &&\n (!is.empty(config.publisherId) || is.url(config.tagUrl))\n );\n }\n\n /**\n * Load the IMA SDK\n */\n load() {\n if (!this.enabled) {\n return;\n }\n\n // Check if the Google IMA3 SDK is loaded or load it ourselves\n if (!is.object(window.google) || !is.object(window.google.ima)) {\n loadScript(this.player.config.urls.googleIMA.sdk)\n .then(() => {\n this.ready();\n })\n .catch(() => {\n // Script failed to load or is blocked\n this.trigger('error', new Error('Google IMA SDK failed to load'));\n });\n } else {\n this.ready();\n }\n }\n\n /**\n * Get the ads instance ready\n */\n ready() {\n // Double check we're enabled\n if (!this.enabled) {\n destroy(this);\n }\n\n // Start ticking our safety timer. If the whole advertisement\n // thing doesn't resolve within our set time; we bail\n this.startSafetyTimer(12000, 'ready()');\n\n // Clear the safety timer\n this.managerPromise.then(() => {\n this.clearSafetyTimer('onAdsManagerLoaded()');\n });\n\n // Set listeners on the Plyr instance\n this.listeners();\n\n // Setup the IMA SDK\n this.setupIMA();\n }\n\n // Build the tag URL\n get tagUrl() {\n const { config } = this;\n\n if (is.url(config.tagUrl)) {\n return config.tagUrl;\n }\n\n const params = {\n AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n AV_CHANNELID: '5a0458dc28a06145e4519d21',\n AV_URL: window.location.hostname,\n cb: Date.now(),\n AV_WIDTH: 640,\n AV_HEIGHT: 480,\n AV_CDIM2: config.publisherId,\n };\n\n const base = 'https://go.aniview.com/api/adserver6/vast/';\n\n return `${base}?${buildUrlParams(params)}`;\n }\n\n /**\n * In order for the SDK to display ads for our video, we need to tell it where to put them,\n * so here we define our ad container. This div is set up to render on top of the video player.\n * Using the code below, we tell the SDK to render ads within that div. We also provide a\n * handle to the content video player - the SDK will poll the current time of our player to\n * properly place mid-rolls. After we create the ad display container, we initialize it. On\n * mobile devices, this initialization is done as the result of a user action.\n */\n setupIMA() {\n // Create the container for our advertisements\n this.elements.container = createElement('div', {\n class: this.player.config.classNames.ads,\n });\n\n this.player.elements.container.appendChild(this.elements.container);\n\n // So we can run VPAID2\n google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED);\n\n // Set language\n google.ima.settings.setLocale(this.player.config.ads.language);\n\n // Set playback for iOS10+\n google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline);\n\n // We assume the adContainer is the video container of the plyr element that will house the ads\n this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media);\n\n // Create ads loader\n this.loader = new google.ima.AdsLoader(this.elements.displayContainer);\n\n // Listen and respond to ads loaded and error events\n this.loader.addEventListener(\n google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n event => this.onAdsManagerLoaded(event),\n false,\n );\n this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);\n\n // Request video ads to be pre-loaded\n this.requestAds();\n }\n\n /**\n * Request advertisements\n */\n requestAds() {\n const { container } = this.player.elements;\n\n try {\n // Request video ads\n const request = new google.ima.AdsRequest();\n request.adTagUrl = this.tagUrl;\n\n // Specify the linear and nonlinear slot sizes. This helps the SDK\n // to select the correct creative if multiple are returned\n request.linearAdSlotWidth = container.offsetWidth;\n request.linearAdSlotHeight = container.offsetHeight;\n request.nonLinearAdSlotWidth = container.offsetWidth;\n request.nonLinearAdSlotHeight = container.offsetHeight;\n\n // We only overlay ads as we only support video.\n request.forceNonLinearFullSlot = false;\n\n // Mute based on current state\n request.setAdWillPlayMuted(!this.player.muted);\n\n this.loader.requestAds(request);\n } catch (e) {\n this.onAdError(e);\n }\n }\n\n /**\n * Update the ad countdown\n * @param {Boolean} start\n */\n pollCountdown(start = false) {\n if (!start) {\n clearInterval(this.countdownTimer);\n this.elements.container.removeAttribute('data-badge-text');\n return;\n }\n\n const update = () => {\n const time = formatTime(Math.max(this.manager.getRemainingTime(), 0));\n const label = `${i18n.get('advertisement', this.player.config)} - ${time}`;\n this.elements.container.setAttribute('data-badge-text', label);\n };\n\n this.countdownTimer = setInterval(update, 100);\n }\n\n /**\n * This method is called whenever the ads are ready inside the AdDisplayContainer\n * @param {Event} adsManagerLoadedEvent\n */\n onAdsManagerLoaded(event) {\n // Load could occur after a source change (race condition)\n if (!this.enabled) {\n return;\n }\n\n // Get the ads manager\n const settings = new google.ima.AdsRenderingSettings();\n\n // Tell the SDK to save and restore content video state on our behalf\n settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n settings.enablePreloading = true;\n\n // The SDK is polling currentTime on the contentPlayback. And needs a duration\n // so it can determine when to start the mid- and post-roll\n this.manager = event.getAdsManager(this.player, settings);\n\n // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n this.cuePoints = this.manager.getCuePoints();\n\n // Add listeners to the required events\n // Advertisement error events\n this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error));\n\n // Advertisement regular events\n Object.keys(google.ima.AdEvent.Type).forEach(type => {\n this.manager.addEventListener(google.ima.AdEvent.Type[type], e => this.onAdEvent(e));\n });\n\n // Resolve our adsManager\n this.trigger('loaded');\n }\n\n addCuePoints() {\n // Add advertisement cue's within the time line if available\n if (!is.empty(this.cuePoints)) {\n this.cuePoints.forEach(cuePoint => {\n if (cuePoint !== 0 && cuePoint !== -1 && cuePoint < this.player.duration) {\n const seekElement = this.player.elements.progress;\n\n if (is.element(seekElement)) {\n const cuePercentage = (100 / this.player.duration) * cuePoint;\n const cue = createElement('span', {\n class: this.player.config.classNames.cues,\n });\n\n cue.style.left = `${cuePercentage.toString()}%`;\n seekElement.appendChild(cue);\n }\n }\n });\n }\n }\n\n /**\n * This is where all the event handling takes place. Retrieve the ad from the event. Some\n * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n * @param {Event} event\n */\n onAdEvent(event) {\n const { container } = this.player.elements;\n // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n // don't have ad object associated\n const ad = event.getAd();\n const adData = event.getAdData();\n\n // Proxy event\n const dispatchEvent = type => {\n triggerEvent.call(this.player, this.player.media, `ads${type.replace(/_/g, '').toLowerCase()}`);\n };\n\n // Bubble the event\n dispatchEvent(event.type);\n\n switch (event.type) {\n case google.ima.AdEvent.Type.LOADED:\n // This is the first event sent for an ad - it is possible to determine whether the\n // ad is a video ad or an overlay\n this.trigger('loaded');\n\n // Start countdown\n this.pollCountdown(true);\n\n if (!ad.isLinear()) {\n // Position AdDisplayContainer correctly for overlay\n ad.width = container.offsetWidth;\n ad.height = container.offsetHeight;\n }\n\n // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n\n break;\n\n case google.ima.AdEvent.Type.STARTED:\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n break;\n\n case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n // All ads for the current videos are done. We can now request new advertisements\n // in case the video is re-played\n\n // TODO: Example for what happens when a next video in a playlist would be loaded.\n // So here we load a new video when all ads are done.\n // Then we load new ads within a new adsManager. When the video\n // Is started - after - the ads are loaded, then we get ads.\n // You can also easily test cancelling and reloading by running\n // player.ads.cancel() and player.ads.play from the console I guess.\n // this.player.source = {\n // type: 'video',\n // title: 'View From A Blue Moon',\n // sources: [{\n // src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n // 'video/mp4', }], poster:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n // };\n\n // TODO: So there is still this thing where a video should only be allowed to start\n // playing when the IMA SDK is ready or has failed\n\n if (this.player.ended) {\n this.loadAds();\n } else {\n // The SDK won't allow new ads to be called without receiving a contentComplete()\n this.loader.contentComplete();\n }\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n // This event indicates the ad has started - the video player can adjust the UI,\n // for example display a pause button and remaining time. Fired when content should\n // be paused. This usually happens right before an ad is about to cover the content\n\n this.pauseContent();\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n // This event indicates the ad has finished - the video player can perform\n // appropriate UI actions, such as removing the timer for remaining time detection.\n // Fired when content should be resumed. This usually happens when an ad finishes\n // or collapses\n\n this.pollCountdown();\n\n this.resumeContent();\n\n break;\n\n case google.ima.AdEvent.Type.LOG:\n if (adData.adError) {\n this.player.debug.warn(`Non-fatal ad error: ${adData.adError.getMessage()}`);\n }\n\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Any ad error handling comes through here\n * @param {Event} event\n */\n onAdError(event) {\n this.cancel();\n this.player.debug.warn('Ads error', event);\n }\n\n /**\n * Setup hooks for Plyr and window events. This ensures\n * the mid- and post-roll launch at the correct time. And\n * resize the advertisement when the player resizes\n */\n listeners() {\n const { container } = this.player.elements;\n let time;\n\n this.player.on('canplay', () => {\n this.addCuePoints();\n });\n\n this.player.on('ended', () => {\n this.loader.contentComplete();\n });\n\n this.player.on('timeupdate', () => {\n time = this.player.currentTime;\n });\n\n this.player.on('seeked', () => {\n const seekedTime = this.player.currentTime;\n\n if (is.empty(this.cuePoints)) {\n return;\n }\n\n this.cuePoints.forEach((cuePoint, index) => {\n if (time < cuePoint && cuePoint < seekedTime) {\n this.manager.discardAdBreak();\n this.cuePoints.splice(index, 1);\n }\n });\n });\n\n // Listen to the resizing of the window. And resize ad accordingly\n // TODO: eventually implement ResizeObserver\n window.addEventListener('resize', () => {\n if (this.manager) {\n this.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n }\n });\n }\n\n /**\n * Initialize the adsManager and start playing advertisements\n */\n play() {\n const { container } = this.player.elements;\n\n if (!this.managerPromise) {\n this.resumeContent();\n }\n\n // Play the requested advertisement whenever the adsManager is ready\n this.managerPromise\n .then(() => {\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n // Initialize the container. Must be done via a user action on mobile devices\n this.elements.displayContainer.initialize();\n\n try {\n if (!this.initialized) {\n // Initialize the ads manager. Ad rules playlist will start at this time\n this.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules\n this.manager.start();\n }\n\n this.initialized = true;\n } catch (adError) {\n // An error may be thrown if there was a problem with the\n // VAST response\n this.onAdError(adError);\n }\n })\n .catch(() => {});\n }\n\n /**\n * Resume our video\n */\n resumeContent() {\n // Hide the advertisement container\n this.elements.container.style.zIndex = '';\n\n // Ad is stopped\n this.playing = false;\n\n // Play video\n silencePromise(this.player.media.play());\n }\n\n /**\n * Pause our video\n */\n pauseContent() {\n // Show the advertisement container\n this.elements.container.style.zIndex = 3;\n\n // Ad is playing\n this.playing = true;\n\n // Pause our video.\n this.player.media.pause();\n }\n\n /**\n * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n * allowed to call new ads based on google policies, as they interpret this as an accidental\n * video requests. https://developers.google.com/interactive-\n * media-ads/docs/sdks/android/faq#8\n */\n cancel() {\n // Pause our video\n if (this.initialized) {\n this.resumeContent();\n }\n\n // Tell our instance that we're done for now\n this.trigger('error');\n\n // Re-create our adsManager\n this.loadAds();\n }\n\n /**\n * Re-create our adsManager\n */\n loadAds() {\n // Tell our adsManager to go bye bye\n this.managerPromise\n .then(() => {\n // Destroy our adsManager\n if (this.manager) {\n this.manager.destroy();\n }\n\n // Re-set our adsManager promises\n this.managerPromise = new Promise(resolve => {\n this.on('loaded', resolve);\n this.player.debug.log(this.manager);\n });\n // Now that the manager has been destroyed set it to also be un-initialized\n this.initialized = false;\n\n // Now request some new advertisements\n this.requestAds();\n })\n .catch(() => {});\n }\n\n /**\n * Handles callbacks after an ad event was invoked\n * @param {String} event - Event type\n */\n trigger(event, ...args) {\n const handlers = this.events[event];\n\n if (is.array(handlers)) {\n handlers.forEach(handler => {\n if (is.function(handler)) {\n handler.apply(this, args);\n }\n });\n }\n }\n\n /**\n * Add event listeners\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n * @return {Ads}\n */\n on(event, callback) {\n if (!is.array(this.events[event])) {\n this.events[event] = [];\n }\n\n this.events[event].push(callback);\n\n return this;\n }\n\n /**\n * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n * The advertisement has 12 seconds to get its things together. We stop this timer when the\n * advertisement is playing, or when a user action is required to start, then we clear the\n * timer on ad ready\n * @param {Number} time\n * @param {String} from\n */\n startSafetyTimer(time, from) {\n this.player.debug.log(`Safety timer invoked from: ${from}`);\n\n this.safetyTimer = setTimeout(() => {\n this.cancel();\n this.clearSafetyTimer('startSafetyTimer()');\n }, time);\n }\n\n /**\n * Clear our safety timer(s)\n * @param {String} from\n */\n clearSafetyTimer(from) {\n if (!is.nullOrUndefined(this.safetyTimer)) {\n this.player.debug.log(`Safety timer cleared from: ${from}`);\n\n clearTimeout(this.safetyTimer);\n this.safetyTimer = null;\n }\n }\n}\n\nexport default Ads;\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","import { createElement } from '../utils/elements';\nimport { once } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport { formatTime } from '../utils/time';\n\n// Arg: vttDataString example: \"WEBVTT\\n\\n1\\n00:00:05.000 --> 00:00:10.000\\n1080p-00001.jpg\"\nconst parseVtt = vttDataString => {\n const processedList = [];\n const frames = vttDataString.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/);\n\n frames.forEach(frame => {\n const result = {};\n const lines = frame.split(/\\r\\n|\\n|\\r/);\n\n lines.forEach(line => {\n if (!is.number(result.startTime)) {\n // The line with start and end times on it is the first line of interest\n const matchTimes = line.match(\n /([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/,\n ); // Note that this currently ignores caption formatting directives that are optionally on the end of this line - fine for non-captions VTT\n\n if (matchTimes) {\n result.startTime =\n Number(matchTimes[1] || 0) * 60 * 60 +\n Number(matchTimes[2]) * 60 +\n Number(matchTimes[3]) +\n Number(`0.${matchTimes[4]}`);\n result.endTime =\n Number(matchTimes[6] || 0) * 60 * 60 +\n Number(matchTimes[7]) * 60 +\n Number(matchTimes[8]) +\n Number(`0.${matchTimes[9]}`);\n }\n } else if (!is.empty(line.trim()) && is.empty(result.text)) {\n // If we already have the startTime, then we're definitely up to the text line(s)\n const lineSplit = line.trim().split('#xywh=');\n [result.text] = lineSplit;\n\n // If there's content in lineSplit[1], then we have sprites. If not, then it's just one frame per image\n if (lineSplit[1]) {\n [result.x, result.y, result.w, result.h] = lineSplit[1].split(',');\n }\n }\n });\n\n if (result.text) {\n processedList.push(result);\n }\n });\n\n return processedList;\n};\n\n/**\n * Preview thumbnails for seek hover and scrubbing\n * Seeking: Hover over the seek bar (desktop only): shows a small preview container above the seek bar\n * Scrubbing: Click and drag the seek bar (desktop and mobile): shows the preview image over the entire video, as if the video is scrubbing at very high speed\n *\n * Notes:\n * - Thumbs are set via JS settings on Plyr init, not HTML5 'track' property. Using the track property would be a bit gross, because it doesn't support custom 'kinds'. kind=metadata might be used for something else, and we want to allow multiple thumbnails tracks. Tracks must have a unique combination of 'kind' and 'label'. We would have to do something like kind=metadata,label=thumbnails1 / kind=metadata,label=thumbnails2. Square peg, round hole\n * - VTT info: the image URL is relative to the VTT, not the current document. But if the url starts with a slash, it will naturally be relative to the current domain. https://support.jwplayer.com/articles/how-to-add-preview-thumbnails\n * - This implementation uses multiple separate img elements. Other implementations use background-image on one element. This would be nice and simple, but Firefox and Safari have flickering issues with replacing backgrounds of larger images. It seems that YouTube perhaps only avoids this because they don't have the option for high-res previews (even the fullscreen ones, when mousedown/seeking). Images appear over the top of each other, and previous ones are discarded once the new ones have been rendered\n */\n\nconst fitRatio = (ratio, outer) => {\n const targetRatio = outer.width / outer.height;\n const result = {};\n if (ratio > targetRatio) {\n result.width = outer.width;\n result.height = (1 / ratio) * outer.width;\n } else {\n result.height = outer.height;\n result.width = ratio * outer.height;\n }\n\n return result;\n};\n\nclass PreviewThumbnails {\n /**\n * PreviewThumbnails constructor.\n * @param {Plyr} player\n * @return {PreviewThumbnails}\n */\n constructor(player) {\n this.player = player;\n this.thumbnails = [];\n this.loaded = false;\n this.lastMouseMoveTime = Date.now();\n this.mouseDown = false;\n this.loadedImages = [];\n\n this.elements = {\n thumb: {},\n scrubbing: {},\n };\n\n this.load();\n }\n\n get enabled() {\n return this.player.isHTML5 && this.player.isVideo && this.player.config.previewThumbnails.enabled;\n }\n\n load() {\n // Toggle the regular seek tooltip\n if (this.player.elements.display.seekTooltip) {\n this.player.elements.display.seekTooltip.hidden = this.enabled;\n }\n\n if (!this.enabled) {\n return;\n }\n\n this.getThumbnails().then(() => {\n if (!this.enabled) {\n return;\n }\n\n // Render DOM elements\n this.render();\n\n // Check to see if thumb container size was specified manually in CSS\n this.determineContainerAutoSizing();\n\n this.loaded = true;\n });\n }\n\n // Download VTT files and parse them\n getThumbnails() {\n return new Promise(resolve => {\n const { src } = this.player.config.previewThumbnails;\n\n if (is.empty(src)) {\n throw new Error('Missing previewThumbnails.src config attribute');\n }\n\n // Resolve promise\n const sortAndResolve = () => {\n // Sort smallest to biggest (e.g., [120p, 480p, 1080p])\n this.thumbnails.sort((x, y) => x.height - y.height);\n\n this.player.debug.log('Preview thumbnails', this.thumbnails);\n\n resolve();\n };\n\n // Via callback()\n if (is.function(src)) {\n src(thumbnails => {\n this.thumbnails = thumbnails;\n sortAndResolve();\n });\n }\n // VTT urls\n else {\n // If string, convert into single-element list\n const urls = is.string(src) ? [src] : src;\n // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails\n const promises = urls.map(u => this.getThumbnail(u));\n // Resolve\n Promise.all(promises).then(sortAndResolve);\n }\n });\n }\n\n // Process individual VTT file\n getThumbnail(url) {\n return new Promise(resolve => {\n fetch(url).then(response => {\n const thumbnail = {\n frames: parseVtt(response),\n height: null,\n urlPrefix: '',\n };\n\n // If the URLs don't start with '/', then we need to set their relative path to be the location of the VTT file\n // If the URLs do start with '/', then they obviously don't need a prefix, so it will remain blank\n // If the thumbnail URLs start with with none of '/', 'http://' or 'https://', then we need to set their relative path to be the location of the VTT file\n if (\n !thumbnail.frames[0].text.startsWith('/') &&\n !thumbnail.frames[0].text.startsWith('http://') &&\n !thumbnail.frames[0].text.startsWith('https://')\n ) {\n thumbnail.urlPrefix = url.substring(0, url.lastIndexOf('/') + 1);\n }\n\n // Download the first frame, so that we can determine/set the height of this thumbnailsDef\n const tempImage = new Image();\n\n tempImage.onload = () => {\n thumbnail.height = tempImage.naturalHeight;\n thumbnail.width = tempImage.naturalWidth;\n\n this.thumbnails.push(thumbnail);\n\n resolve();\n };\n\n tempImage.src = thumbnail.urlPrefix + thumbnail.frames[0].text;\n });\n });\n }\n\n startMove(event) {\n if (!this.loaded) {\n return;\n }\n\n if (!is.event(event) || !['touchmove', 'mousemove'].includes(event.type)) {\n return;\n }\n\n // Wait until media has a duration\n if (!this.player.media.duration) {\n return;\n }\n\n if (event.type === 'touchmove') {\n // Calculate seek hover position as approx video seconds\n this.seekTime = this.player.media.duration * (this.player.elements.inputs.seek.value / 100);\n } else {\n // Calculate seek hover position as approx video seconds\n const clientRect = this.player.elements.progress.getBoundingClientRect();\n const percentage = (100 / clientRect.width) * (event.pageX - clientRect.left);\n this.seekTime = this.player.media.duration * (percentage / 100);\n\n if (this.seekTime < 0) {\n // The mousemove fires for 10+px out to the left\n this.seekTime = 0;\n }\n\n if (this.seekTime > this.player.media.duration - 1) {\n // Took 1 second off the duration for safety, because different players can disagree on the real duration of a video\n this.seekTime = this.player.media.duration - 1;\n }\n\n this.mousePosX = event.pageX;\n\n // Set time text inside image container\n this.elements.thumb.time.innerText = formatTime(this.seekTime);\n }\n\n // Download and show image\n this.showImageAtCurrentTime();\n }\n\n endMove() {\n this.toggleThumbContainer(false, true);\n }\n\n startScrubbing(event) {\n // Only act on left mouse button (0), or touch device (event.button does not exist or is false)\n if (is.nullOrUndefined(event.button) || event.button === false || event.button === 0) {\n this.mouseDown = true;\n\n // Wait until media has a duration\n if (this.player.media.duration) {\n this.toggleScrubbingContainer(true);\n this.toggleThumbContainer(false, true);\n\n // Download and show image\n this.showImageAtCurrentTime();\n }\n }\n }\n\n endScrubbing() {\n this.mouseDown = false;\n\n // Hide scrubbing preview. But wait until the video has successfully seeked before hiding the scrubbing preview\n if (Math.ceil(this.lastTime) === Math.ceil(this.player.media.currentTime)) {\n // The video was already seeked/loaded at the chosen time - hide immediately\n this.toggleScrubbingContainer(false);\n } else {\n // The video hasn't seeked yet. Wait for that\n once.call(this.player, this.player.media, 'timeupdate', () => {\n // Re-check mousedown - we might have already started scrubbing again\n if (!this.mouseDown) {\n this.toggleScrubbingContainer(false);\n }\n });\n }\n }\n\n /**\n * Setup hooks for Plyr and window events\n */\n listeners() {\n // Hide thumbnail preview - on mouse click, mouse leave (in listeners.js for now), and video play/seek. All four are required, e.g., for buffering\n this.player.on('play', () => {\n this.toggleThumbContainer(false, true);\n });\n\n this.player.on('seeked', () => {\n this.toggleThumbContainer(false);\n });\n\n this.player.on('timeupdate', () => {\n this.lastTime = this.player.media.currentTime;\n });\n }\n\n /**\n * Create HTML elements for image containers\n */\n render() {\n // Create HTML element: plyr__preview-thumbnail-container\n this.elements.thumb.container = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.thumbContainer,\n });\n\n // Wrapper for the image for styling\n this.elements.thumb.imageContainer = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.imageContainer,\n });\n this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);\n\n // Create HTML element, parent+span: time text (e.g., 01:32:00)\n const timeContainer = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.timeContainer,\n });\n\n this.elements.thumb.time = createElement('span', {}, '00:00');\n timeContainer.appendChild(this.elements.thumb.time);\n\n this.elements.thumb.container.appendChild(timeContainer);\n\n // Inject the whole thumb\n if (is.element(this.player.elements.progress)) {\n this.player.elements.progress.appendChild(this.elements.thumb.container);\n }\n\n // Create HTML element: plyr__preview-scrubbing-container\n this.elements.scrubbing.container = createElement('div', {\n class: this.player.config.classNames.previewThumbnails.scrubbingContainer,\n });\n\n this.player.elements.wrapper.appendChild(this.elements.scrubbing.container);\n }\n\n destroy() {\n if (this.elements.thumb.container) {\n this.elements.thumb.container.remove();\n }\n if (this.elements.scrubbing.container) {\n this.elements.scrubbing.container.remove();\n }\n }\n\n showImageAtCurrentTime() {\n if (this.mouseDown) {\n this.setScrubbingContainerSize();\n } else {\n this.setThumbContainerSizeAndPos();\n }\n\n // Find the desired thumbnail index\n // TODO: Handle a video longer than the thumbs where thumbNum is null\n const thumbNum = this.thumbnails[0].frames.findIndex(\n frame => this.seekTime >= frame.startTime && this.seekTime <= frame.endTime,\n );\n const hasThumb = thumbNum >= 0;\n let qualityIndex = 0;\n\n // Show the thumb container if we're not scrubbing\n if (!this.mouseDown) {\n this.toggleThumbContainer(hasThumb);\n }\n\n // No matching thumb found\n if (!hasThumb) {\n return;\n }\n\n // Check to see if we've already downloaded higher quality versions of this image\n this.thumbnails.forEach((thumbnail, index) => {\n if (this.loadedImages.includes(thumbnail.frames[thumbNum].text)) {\n qualityIndex = index;\n }\n });\n\n // Only proceed if either thumbnum or thumbfilename has changed\n if (thumbNum !== this.showingThumb) {\n this.showingThumb = thumbNum;\n this.loadImage(qualityIndex);\n }\n }\n\n // Show the image that's currently specified in this.showingThumb\n loadImage(qualityIndex = 0) {\n const thumbNum = this.showingThumb;\n const thumbnail = this.thumbnails[qualityIndex];\n const { urlPrefix } = thumbnail;\n const frame = thumbnail.frames[thumbNum];\n const thumbFilename = thumbnail.frames[thumbNum].text;\n const thumbUrl = urlPrefix + thumbFilename;\n\n if (!this.currentImageElement || this.currentImageElement.dataset.filename !== thumbFilename) {\n // If we're already loading a previous image, remove its onload handler - we don't want it to load after this one\n // Only do this if not using sprites. Without sprites we really want to show as many images as possible, as a best-effort\n if (this.loadingImage && this.usingSprites) {\n this.loadingImage.onload = null;\n }\n\n // We're building and adding a new image. In other implementations of similar functionality (YouTube), background image\n // is instead used. But this causes issues with larger images in Firefox and Safari - switching between background\n // images causes a flicker. Putting a new image over the top does not\n const previewImage = new Image();\n previewImage.src = thumbUrl;\n previewImage.dataset.index = thumbNum;\n previewImage.dataset.filename = thumbFilename;\n this.showingThumbFilename = thumbFilename;\n\n this.player.debug.log(`Loading image: ${thumbUrl}`);\n\n // For some reason, passing the named function directly causes it to execute immediately. So I've wrapped it in an anonymous function...\n previewImage.onload = () => this.showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, true);\n this.loadingImage = previewImage;\n this.removeOldImages(previewImage);\n } else {\n // Update the existing image\n this.showImage(this.currentImageElement, frame, qualityIndex, thumbNum, thumbFilename, false);\n this.currentImageElement.dataset.index = thumbNum;\n this.removeOldImages(this.currentImageElement);\n }\n }\n\n showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, newImage = true) {\n this.player.debug.log(\n `Showing thumb: ${thumbFilename}. num: ${thumbNum}. qual: ${qualityIndex}. newimg: ${newImage}`,\n );\n this.setImageSizeAndOffset(previewImage, frame);\n\n if (newImage) {\n this.currentImageContainer.appendChild(previewImage);\n this.currentImageElement = previewImage;\n\n if (!this.loadedImages.includes(thumbFilename)) {\n this.loadedImages.push(thumbFilename);\n }\n }\n\n // Preload images before and after the current one\n // Show higher quality of the same frame\n // Each step here has a short time delay, and only continues if still hovering/seeking the same spot. This is to protect slow connections from overloading\n this.preloadNearby(thumbNum, true)\n .then(this.preloadNearby(thumbNum, false))\n .then(this.getHigherQuality(qualityIndex, previewImage, frame, thumbFilename));\n }\n\n // Remove all preview images that aren't the designated current image\n removeOldImages(currentImage) {\n // Get a list of all images, convert it from a DOM list to an array\n Array.from(this.currentImageContainer.children).forEach(image => {\n if (image.tagName.toLowerCase() !== 'img') {\n return;\n }\n\n const removeDelay = this.usingSprites ? 500 : 1000;\n\n if (image.dataset.index !== currentImage.dataset.index && !image.dataset.deleting) {\n // Wait 200ms, as the new image can take some time to show on certain browsers (even though it was downloaded before showing). This will prevent flicker, and show some generosity towards slower clients\n // First set attribute 'deleting' to prevent multi-handling of this on repeat firing of this function\n // eslint-disable-next-line no-param-reassign\n image.dataset.deleting = true;\n\n // This has to be set before the timeout - to prevent issues switching between hover and scrub\n const { currentImageContainer } = this;\n\n setTimeout(() => {\n currentImageContainer.removeChild(image);\n this.player.debug.log(`Removing thumb: ${image.dataset.filename}`);\n }, removeDelay);\n }\n });\n }\n\n // Preload images before and after the current one. Only if the user is still hovering/seeking the same frame\n // This will only preload the lowest quality\n preloadNearby(thumbNum, forward = true) {\n return new Promise(resolve => {\n setTimeout(() => {\n const oldThumbFilename = this.thumbnails[0].frames[thumbNum].text;\n\n if (this.showingThumbFilename === oldThumbFilename) {\n // Find the nearest thumbs with different filenames. Sometimes it'll be the next index, but in the case of sprites, it might be 100+ away\n let thumbnailsClone;\n if (forward) {\n thumbnailsClone = this.thumbnails[0].frames.slice(thumbNum);\n } else {\n thumbnailsClone = this.thumbnails[0].frames.slice(0, thumbNum).reverse();\n }\n\n let foundOne = false;\n\n thumbnailsClone.forEach(frame => {\n const newThumbFilename = frame.text;\n\n if (newThumbFilename !== oldThumbFilename) {\n // Found one with a different filename. Make sure it hasn't already been loaded on this page visit\n if (!this.loadedImages.includes(newThumbFilename)) {\n foundOne = true;\n this.player.debug.log(`Preloading thumb filename: ${newThumbFilename}`);\n\n const { urlPrefix } = this.thumbnails[0];\n const thumbURL = urlPrefix + newThumbFilename;\n const previewImage = new Image();\n previewImage.src = thumbURL;\n previewImage.onload = () => {\n this.player.debug.log(`Preloaded thumb filename: ${newThumbFilename}`);\n if (!this.loadedImages.includes(newThumbFilename)) this.loadedImages.push(newThumbFilename);\n\n // We don't resolve until the thumb is loaded\n resolve();\n };\n }\n }\n });\n\n // If there are none to preload then we want to resolve immediately\n if (!foundOne) {\n resolve();\n }\n }\n }, 300);\n });\n }\n\n // If user has been hovering current image for half a second, look for a higher quality one\n getHigherQuality(currentQualityIndex, previewImage, frame, thumbFilename) {\n if (currentQualityIndex < this.thumbnails.length - 1) {\n // Only use the higher quality version if it's going to look any better - if the current thumb is of a lower pixel density than the thumbnail container\n let previewImageHeight = previewImage.naturalHeight;\n\n if (this.usingSprites) {\n previewImageHeight = frame.h;\n }\n\n if (previewImageHeight < this.thumbContainerHeight) {\n // Recurse back to the loadImage function - show a higher quality one, but only if the viewer is on this frame for a while\n setTimeout(() => {\n // Make sure the mouse hasn't already moved on and started hovering at another image\n if (this.showingThumbFilename === thumbFilename) {\n this.player.debug.log(`Showing higher quality thumb for: ${thumbFilename}`);\n this.loadImage(currentQualityIndex + 1);\n }\n }, 300);\n }\n }\n }\n\n get currentImageContainer() {\n if (this.mouseDown) {\n return this.elements.scrubbing.container;\n }\n\n return this.elements.thumb.imageContainer;\n }\n\n get usingSprites() {\n return Object.keys(this.thumbnails[0].frames[0]).includes('w');\n }\n\n get thumbAspectRatio() {\n if (this.usingSprites) {\n return this.thumbnails[0].frames[0].w / this.thumbnails[0].frames[0].h;\n }\n\n return this.thumbnails[0].width / this.thumbnails[0].height;\n }\n\n get thumbContainerHeight() {\n if (this.mouseDown) {\n const { height } = fitRatio(this.thumbAspectRatio, {\n width: this.player.media.clientWidth,\n height: this.player.media.clientHeight,\n });\n return height;\n }\n\n // If css is used this needs to return the css height for sprites to work (see setImageSizeAndOffset)\n if (this.sizeSpecifiedInCSS) {\n return this.elements.thumb.imageContainer.clientHeight;\n }\n\n return Math.floor(this.player.media.clientWidth / this.thumbAspectRatio / 4);\n }\n\n get currentImageElement() {\n if (this.mouseDown) {\n return this.currentScrubbingImageElement;\n }\n\n return this.currentThumbnailImageElement;\n }\n\n set currentImageElement(element) {\n if (this.mouseDown) {\n this.currentScrubbingImageElement = element;\n } else {\n this.currentThumbnailImageElement = element;\n }\n }\n\n toggleThumbContainer(toggle = false, clearShowing = false) {\n const className = this.player.config.classNames.previewThumbnails.thumbContainerShown;\n this.elements.thumb.container.classList.toggle(className, toggle);\n\n if (!toggle && clearShowing) {\n this.showingThumb = null;\n this.showingThumbFilename = null;\n }\n }\n\n toggleScrubbingContainer(toggle = false) {\n const className = this.player.config.classNames.previewThumbnails.scrubbingContainerShown;\n this.elements.scrubbing.container.classList.toggle(className, toggle);\n\n if (!toggle) {\n this.showingThumb = null;\n this.showingThumbFilename = null;\n }\n }\n\n determineContainerAutoSizing() {\n if (this.elements.thumb.imageContainer.clientHeight > 20 || this.elements.thumb.imageContainer.clientWidth > 20) {\n // This will prevent auto sizing in this.setThumbContainerSizeAndPos()\n this.sizeSpecifiedInCSS = true;\n }\n }\n\n // Set the size to be about a quarter of the size of video. Unless option dynamicSize === false, in which case it needs to be set in CSS\n setThumbContainerSizeAndPos() {\n if (!this.sizeSpecifiedInCSS) {\n const thumbWidth = Math.floor(this.thumbContainerHeight * this.thumbAspectRatio);\n this.elements.thumb.imageContainer.style.height = `${this.thumbContainerHeight}px`;\n this.elements.thumb.imageContainer.style.width = `${thumbWidth}px`;\n } else if (\n this.elements.thumb.imageContainer.clientHeight > 20 &&\n this.elements.thumb.imageContainer.clientWidth < 20\n ) {\n const thumbWidth = Math.floor(this.elements.thumb.imageContainer.clientHeight * this.thumbAspectRatio);\n this.elements.thumb.imageContainer.style.width = `${thumbWidth}px`;\n } else if (\n this.elements.thumb.imageContainer.clientHeight < 20 &&\n this.elements.thumb.imageContainer.clientWidth > 20\n ) {\n const thumbHeight = Math.floor(this.elements.thumb.imageContainer.clientWidth / this.thumbAspectRatio);\n this.elements.thumb.imageContainer.style.height = `${thumbHeight}px`;\n }\n\n this.setThumbContainerPos();\n }\n\n setThumbContainerPos() {\n const seekbarRect = this.player.elements.progress.getBoundingClientRect();\n const plyrRect = this.player.elements.container.getBoundingClientRect();\n const { container } = this.elements.thumb;\n // Find the lowest and highest desired left-position, so we don't slide out the side of the video container\n const minVal = plyrRect.left - seekbarRect.left + 10;\n const maxVal = plyrRect.right - seekbarRect.left - container.clientWidth - 10;\n // Set preview container position to: mousepos, minus seekbar.left, minus half of previewContainer.clientWidth\n let previewPos = this.mousePosX - seekbarRect.left - container.clientWidth / 2;\n\n if (previewPos < minVal) {\n previewPos = minVal;\n }\n\n if (previewPos > maxVal) {\n previewPos = maxVal;\n }\n\n container.style.left = `${previewPos}px`;\n }\n\n // Can't use 100% width, in case the video is a different aspect ratio to the video container\n setScrubbingContainerSize() {\n const { width, height } = fitRatio(this.thumbAspectRatio, {\n width: this.player.media.clientWidth,\n height: this.player.media.clientHeight,\n });\n this.elements.scrubbing.container.style.width = `${width}px`;\n this.elements.scrubbing.container.style.height = `${height}px`;\n }\n\n // Sprites need to be offset to the correct location\n setImageSizeAndOffset(previewImage, frame) {\n if (!this.usingSprites) {\n return;\n }\n\n // Find difference between height and preview container height\n const multiplier = this.thumbContainerHeight / frame.h;\n\n // eslint-disable-next-line no-param-reassign\n previewImage.style.height = `${previewImage.naturalHeight * multiplier}px`;\n // eslint-disable-next-line no-param-reassign\n previewImage.style.width = `${previewImage.naturalWidth * multiplier}px`;\n // eslint-disable-next-line no-param-reassign\n previewImage.style.left = `-${frame.x * multiplier}px`;\n // eslint-disable-next-line no-param-reassign\n previewImage.style.top = `-${frame.y * multiplier}px`;\n }\n}\n\nexport default PreviewThumbnails;\n","// ==========================================================================\n// Plyr source update\n// ==========================================================================\n\nimport { providers } from './config/types';\nimport html5 from './html5';\nimport media from './media';\nimport PreviewThumbnails from './plugins/preview-thumbnails';\nimport support from './support';\nimport ui from './ui';\nimport { createElement, insertElement, removeElement } from './utils/elements';\nimport is from './utils/is';\nimport { getDeep } from './utils/objects';\n\nconst source = {\n // Add elements to HTML5 media (source, tracks, etc)\n insertElements(type, attributes) {\n if (is.string(attributes)) {\n insertElement(type, this.media, {\n src: attributes,\n });\n } else if (is.array(attributes)) {\n attributes.forEach(attribute => {\n insertElement(type, this.media, attribute);\n });\n }\n },\n\n // Update source\n // Sources are not checked for support so be careful\n change(input) {\n if (!getDeep(input, 'sources.length')) {\n this.debug.warn('Invalid source format');\n return;\n }\n\n // Cancel current network requests\n html5.cancelRequests.call(this);\n\n // Destroy instance and re-setup\n this.destroy.call(\n this,\n () => {\n // Reset quality options\n this.options.quality = [];\n\n // Remove elements\n removeElement(this.media);\n this.media = null;\n\n // Reset class name\n if (is.element(this.elements.container)) {\n this.elements.container.removeAttribute('class');\n }\n\n // Set the type and provider\n const { sources, type } = input;\n const [{ provider = providers.html5, src }] = sources;\n const tagName = provider === 'html5' ? type : 'div';\n const attributes = provider === 'html5' ? {} : { src };\n\n Object.assign(this, {\n provider,\n type,\n // Check for support\n supported: support.check(type, provider, this.config.playsinline),\n // Create new element\n media: createElement(tagName, attributes),\n });\n\n // Inject the new element\n this.elements.container.appendChild(this.media);\n\n // Autoplay the new source?\n if (is.boolean(input.autoplay)) {\n this.config.autoplay = input.autoplay;\n }\n\n // Set attributes for audio and video\n if (this.isHTML5) {\n if (this.config.crossorigin) {\n this.media.setAttribute('crossorigin', '');\n }\n if (this.config.autoplay) {\n this.media.setAttribute('autoplay', '');\n }\n if (!is.empty(input.poster)) {\n this.poster = input.poster;\n }\n if (this.config.loop.active) {\n this.media.setAttribute('loop', '');\n }\n if (this.config.muted) {\n this.media.setAttribute('muted', '');\n }\n if (this.config.playsinline) {\n this.media.setAttribute('playsinline', '');\n }\n }\n\n // Restore class hook\n ui.addStyleHook.call(this);\n\n // Set new sources for html5\n if (this.isHTML5) {\n source.insertElements.call(this, 'source', sources);\n }\n\n // Set video title\n this.config.title = input.title;\n\n // Set up from scratch\n media.setup.call(this);\n\n // HTML5 stuff\n if (this.isHTML5) {\n // Setup captions\n if (Object.keys(input).includes('tracks')) {\n source.insertElements.call(this, 'track', input.tracks);\n }\n }\n\n // If HTML5 or embed but not fully supported, setupInterface and call ready now\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n // Setup interface\n ui.build.call(this);\n }\n\n // Load HTML5 sources\n if (this.isHTML5) {\n this.media.load();\n }\n\n // Update previewThumbnails config & reload plugin\n if (!is.empty(input.previewThumbnails)) {\n Object.assign(this.config.previewThumbnails, input.previewThumbnails);\n\n // Cleanup previewThumbnails plugin if it was loaded\n if (this.previewThumbnails && this.previewThumbnails.loaded) {\n this.previewThumbnails.destroy();\n this.previewThumbnails = null;\n }\n\n // Create new instance if it is still enabled\n if (this.config.previewThumbnails.enabled) {\n this.previewThumbnails = new PreviewThumbnails(this);\n }\n }\n\n // Update the fullscreen support\n this.fullscreen.update();\n },\n true,\n );\n },\n};\n\nexport default source;\n","// ==========================================================================\n// Plyr\n// plyr.js v3.6.1\n// https://github.com/sampotts/plyr\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport captions from './captions';\nimport defaults from './config/defaults';\nimport { pip } from './config/states';\nimport { getProviderByUrl, providers, types } from './config/types';\nimport Console from './console';\nimport controls from './controls';\nimport Fullscreen from './fullscreen';\nimport Listeners from './listeners';\nimport media from './media';\nimport Ads from './plugins/ads';\nimport PreviewThumbnails from './plugins/preview-thumbnails';\nimport source from './source';\nimport Storage from './storage';\nimport support from './support';\nimport ui from './ui';\nimport { closest } from './utils/arrays';\nimport { createElement, hasClass, removeElement, replaceElement, toggleClass, wrap } from './utils/elements';\nimport { off, on, once, triggerEvent, unbindListeners } from './utils/events';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { clamp } from './utils/numbers';\nimport { cloneDeep, extend } from './utils/objects';\nimport { silencePromise } from './utils/promise';\nimport { getAspectRatio, reduceAspectRatio, setAspectRatio, validateRatio } from './utils/style';\nimport { parseUrl } from './utils/urls';\n\n// Private properties\n// TODO: Use a WeakMap for private globals\n// const globals = new WeakMap();\n\n// Plyr instance\nclass Plyr {\n constructor(target, options) {\n this.timers = {};\n\n // State\n this.ready = false;\n this.loading = false;\n this.failed = false;\n\n // Touch device\n this.touch = support.touch;\n\n // Set the media element\n this.media = target;\n\n // String selector passed\n if (is.string(this.media)) {\n this.media = document.querySelectorAll(this.media);\n }\n\n // jQuery, NodeList or Array passed, use first element\n if ((window.jQuery && this.media instanceof jQuery) || is.nodeList(this.media) || is.array(this.media)) {\n // eslint-disable-next-line\n this.media = this.media[0];\n }\n\n // Set config\n this.config = extend(\n {},\n defaults,\n Plyr.defaults,\n options || {},\n (() => {\n try {\n return JSON.parse(this.media.getAttribute('data-plyr-config'));\n } catch (e) {\n return {};\n }\n })(),\n );\n\n // Elements cache\n this.elements = {\n container: null,\n fullscreen: null,\n captions: null,\n buttons: {},\n display: {},\n progress: {},\n inputs: {},\n settings: {\n popup: null,\n menu: null,\n panels: {},\n buttons: {},\n },\n };\n\n // Captions\n this.captions = {\n active: null,\n currentTrack: -1,\n meta: new WeakMap(),\n };\n\n // Fullscreen\n this.fullscreen = {\n active: false,\n };\n\n // Options\n this.options = {\n speed: [],\n quality: [],\n };\n\n // Debugging\n // TODO: move to globals\n this.debug = new Console(this.config.debug);\n\n // Log config options and support\n this.debug.log('Config', this.config);\n this.debug.log('Support', support);\n\n // We need an element to setup\n if (is.nullOrUndefined(this.media) || !is.element(this.media)) {\n this.debug.error('Setup failed: no suitable element passed');\n return;\n }\n\n // Bail if the element is initialized\n if (this.media.plyr) {\n this.debug.warn('Target already setup');\n return;\n }\n\n // Bail if not enabled\n if (!this.config.enabled) {\n this.debug.error('Setup failed: disabled by config');\n return;\n }\n\n // Bail if disabled or no basic support\n // You may want to disable certain UAs etc\n if (!support.check().api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n // Cache original element state for .destroy()\n const clone = this.media.cloneNode(true);\n clone.autoplay = false;\n this.elements.original = clone;\n\n // Set media type based on tag or data attribute\n // Supported: video, audio, vimeo, youtube\n const type = this.media.tagName.toLowerCase();\n // Embed properties\n let iframe = null;\n let url = null;\n\n // Different setup based on type\n switch (type) {\n case 'div':\n // Find the frame\n iframe = this.media.querySelector('iframe');\n\n // <iframe> type\n if (is.element(iframe)) {\n // Detect provider\n url = parseUrl(iframe.getAttribute('src'));\n this.provider = getProviderByUrl(url.toString());\n\n // Rework elements\n this.elements.container = this.media;\n this.media = iframe;\n\n // Reset classname\n this.elements.container.className = '';\n\n // Get attributes from URL and set config\n if (url.search.length) {\n const truthy = ['1', 'true'];\n\n if (truthy.includes(url.searchParams.get('autoplay'))) {\n this.config.autoplay = true;\n }\n if (truthy.includes(url.searchParams.get('loop'))) {\n this.config.loop.active = true;\n }\n\n // TODO: replace fullscreen.iosNative with this playsinline config option\n // YouTube requires the playsinline in the URL\n if (this.isYouTube) {\n this.config.playsinline = truthy.includes(url.searchParams.get('playsinline'));\n this.config.youtube.hl = url.searchParams.get('hl'); // TODO: Should this be setting language?\n } else {\n this.config.playsinline = true;\n }\n }\n } else {\n // <div> with attributes\n this.provider = this.media.getAttribute(this.config.attributes.embed.provider);\n\n // Remove attribute\n this.media.removeAttribute(this.config.attributes.embed.provider);\n }\n\n // Unsupported or missing provider\n if (is.empty(this.provider) || !Object.keys(providers).includes(this.provider)) {\n this.debug.error('Setup failed: Invalid provider');\n return;\n }\n\n // Audio will come later for external providers\n this.type = types.video;\n\n break;\n\n case 'video':\n case 'audio':\n this.type = type;\n this.provider = providers.html5;\n\n // Get config from attributes\n if (this.media.hasAttribute('crossorigin')) {\n this.config.crossorigin = true;\n }\n if (this.media.hasAttribute('autoplay')) {\n this.config.autoplay = true;\n }\n if (this.media.hasAttribute('playsinline') || this.media.hasAttribute('webkit-playsinline')) {\n this.config.playsinline = true;\n }\n if (this.media.hasAttribute('muted')) {\n this.config.muted = true;\n }\n if (this.media.hasAttribute('loop')) {\n this.config.loop.active = true;\n }\n\n break;\n\n default:\n this.debug.error('Setup failed: unsupported type');\n return;\n }\n\n // Check for support again but with type\n this.supported = support.check(this.type, this.provider, this.config.playsinline);\n\n // If no support for even API, bail\n if (!this.supported.api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n this.eventListeners = [];\n\n // Create listeners\n this.listeners = new Listeners(this);\n\n // Setup local storage for user settings\n this.storage = new Storage(this);\n\n // Store reference\n this.media.plyr = this;\n\n // Wrap media\n if (!is.element(this.elements.container)) {\n this.elements.container = createElement('div', { tabindex: 0 });\n wrap(this.media, this.elements.container);\n }\n\n // Migrate custom properties from media to container (so they work 😉)\n ui.migrateStyles.call(this);\n\n // Add style hook\n ui.addStyleHook.call(this);\n\n // Setup media\n media.setup.call(this);\n\n // Listen for events if debugging\n if (this.config.debug) {\n on.call(this, this.elements.container, this.config.events.join(' '), event => {\n this.debug.log(`event: ${event.type}`);\n });\n }\n\n // Setup fullscreen\n this.fullscreen = new Fullscreen(this);\n\n // Setup interface\n // If embed but not fully supported, build interface now to avoid flash of controls\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n ui.build.call(this);\n }\n\n // Container listeners\n this.listeners.container();\n\n // Global listeners\n this.listeners.global();\n\n // Setup ads if provided\n if (this.config.ads.enabled) {\n this.ads = new Ads(this);\n }\n\n // Autoplay if required\n if (this.isHTML5 && this.config.autoplay) {\n setTimeout(() => silencePromise(this.play()), 10);\n }\n\n // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek\n this.lastSeekTime = 0;\n\n // Setup preview thumbnails if enabled\n if (this.config.previewThumbnails.enabled) {\n this.previewThumbnails = new PreviewThumbnails(this);\n }\n }\n\n // ---------------------------------------\n // API\n // ---------------------------------------\n\n /**\n * Types and provider helpers\n */\n get isHTML5() {\n return this.provider === providers.html5;\n }\n\n get isEmbed() {\n return this.isYouTube || this.isVimeo;\n }\n\n get isYouTube() {\n return this.provider === providers.youtube;\n }\n\n get isVimeo() {\n return this.provider === providers.vimeo;\n }\n\n get isVideo() {\n return this.type === types.video;\n }\n\n get isAudio() {\n return this.type === types.audio;\n }\n\n /**\n * Play the media, or play the advertisement (if they are not blocked)\n */\n play() {\n if (!is.function(this.media.play)) {\n return null;\n }\n\n // Intecept play with ads\n if (this.ads && this.ads.enabled) {\n this.ads.managerPromise.then(() => this.ads.play()).catch(() => silencePromise(this.media.play()));\n }\n\n // Return the promise (for HTML5)\n return this.media.play();\n }\n\n /**\n * Pause the media\n */\n pause() {\n if (!this.playing || !is.function(this.media.pause)) {\n return null;\n }\n\n return this.media.pause();\n }\n\n /**\n * Get playing state\n */\n get playing() {\n return Boolean(this.ready && !this.paused && !this.ended);\n }\n\n /**\n * Get paused state\n */\n get paused() {\n return Boolean(this.media.paused);\n }\n\n /**\n * Get stopped state\n */\n get stopped() {\n return Boolean(this.paused && this.currentTime === 0);\n }\n\n /**\n * Get ended state\n */\n get ended() {\n return Boolean(this.media.ended);\n }\n\n /**\n * Toggle playback based on current status\n * @param {Boolean} input\n */\n togglePlay(input) {\n // Toggle based on current state if nothing passed\n const toggle = is.boolean(input) ? input : !this.playing;\n\n if (toggle) {\n return this.play();\n }\n\n return this.pause();\n }\n\n /**\n * Stop playback\n */\n stop() {\n if (this.isHTML5) {\n this.pause();\n this.restart();\n } else if (is.function(this.media.stop)) {\n this.media.stop();\n }\n }\n\n /**\n * Restart playback\n */\n restart() {\n this.currentTime = 0;\n }\n\n /**\n * Rewind\n * @param {Number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n */\n rewind(seekTime) {\n this.currentTime -= is.number(seekTime) ? seekTime : this.config.seekTime;\n }\n\n /**\n * Fast forward\n * @param {Number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n */\n forward(seekTime) {\n this.currentTime += is.number(seekTime) ? seekTime : this.config.seekTime;\n }\n\n /**\n * Seek to a time\n * @param {Number} input - where to seek to in seconds. Defaults to 0 (the start)\n */\n set currentTime(input) {\n // Bail if media duration isn't available yet\n if (!this.duration) {\n return;\n }\n\n // Validate input\n const inputIsValid = is.number(input) && input > 0;\n\n // Set\n this.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0;\n\n // Logging\n this.debug.log(`Seeking to ${this.currentTime} seconds`);\n }\n\n /**\n * Get current time\n */\n get currentTime() {\n return Number(this.media.currentTime);\n }\n\n /**\n * Get buffered\n */\n get buffered() {\n const { buffered } = this.media;\n\n // YouTube / Vimeo return a float between 0-1\n if (is.number(buffered)) {\n return buffered;\n }\n\n // HTML5\n // TODO: Handle buffered chunks of the media\n // (i.e. seek to another section buffers only that section)\n if (buffered && buffered.length && this.duration > 0) {\n return buffered.end(0) / this.duration;\n }\n\n return 0;\n }\n\n /**\n * Get seeking status\n */\n get seeking() {\n return Boolean(this.media.seeking);\n }\n\n /**\n * Get the duration of the current media\n */\n get duration() {\n // Faux duration set via config\n const fauxDuration = parseFloat(this.config.duration);\n // Media duration can be NaN or Infinity before the media has loaded\n const realDuration = (this.media || {}).duration;\n const duration = !is.number(realDuration) || realDuration === Infinity ? 0 : realDuration;\n\n // If config duration is funky, use regular duration\n return fauxDuration || duration;\n }\n\n /**\n * Set the player volume\n * @param {Number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n */\n set volume(value) {\n let volume = value;\n const max = 1;\n const min = 0;\n\n if (is.string(volume)) {\n volume = Number(volume);\n }\n\n // Load volume from storage if no value specified\n if (!is.number(volume)) {\n volume = this.storage.get('volume');\n }\n\n // Use config if all else fails\n if (!is.number(volume)) {\n ({ volume } = this.config);\n }\n\n // Maximum is volumeMax\n if (volume > max) {\n volume = max;\n }\n // Minimum is volumeMin\n if (volume < min) {\n volume = min;\n }\n\n // Update config\n this.config.volume = volume;\n\n // Set the player volume\n this.media.volume = volume;\n\n // If muted, and we're increasing volume manually, reset muted state\n if (!is.empty(value) && this.muted && volume > 0) {\n this.muted = false;\n }\n }\n\n /**\n * Get the current player volume\n */\n get volume() {\n return Number(this.media.volume);\n }\n\n /**\n * Increase volume\n * @param {Boolean} step - How much to decrease by (between 0 and 1)\n */\n increaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume + (is.number(step) ? step : 0);\n }\n\n /**\n * Decrease volume\n * @param {Boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n this.increaseVolume(-step);\n }\n\n /**\n * Set muted state\n * @param {Boolean} mute\n */\n set muted(mute) {\n let toggle = mute;\n\n // Load muted state from storage\n if (!is.boolean(toggle)) {\n toggle = this.storage.get('muted');\n }\n\n // Use config if all else fails\n if (!is.boolean(toggle)) {\n toggle = this.config.muted;\n }\n\n // Update config\n this.config.muted = toggle;\n\n // Set mute on the player\n this.media.muted = toggle;\n }\n\n /**\n * Get current muted state\n */\n get muted() {\n return Boolean(this.media.muted);\n }\n\n /**\n * Check if the media has audio\n */\n get hasAudio() {\n // Assume yes for all non HTML5 (as we can't tell...)\n if (!this.isHTML5) {\n return true;\n }\n\n if (this.isAudio) {\n return true;\n }\n\n // Get audio tracks\n return (\n Boolean(this.media.mozHasAudio) ||\n Boolean(this.media.webkitAudioDecodedByteCount) ||\n Boolean(this.media.audioTracks && this.media.audioTracks.length)\n );\n }\n\n /**\n * Set playback speed\n * @param {Number} speed - the speed of playback (0.5-2.0)\n */\n set speed(input) {\n let speed = null;\n\n if (is.number(input)) {\n speed = input;\n }\n\n if (!is.number(speed)) {\n speed = this.storage.get('speed');\n }\n\n if (!is.number(speed)) {\n speed = this.config.speed.selected;\n }\n\n // Clamp to min/max\n const { minimumSpeed: min, maximumSpeed: max } = this;\n speed = clamp(speed, min, max);\n\n // Update config\n this.config.speed.selected = speed;\n\n // Set media speed\n setTimeout(() => {\n this.media.playbackRate = speed;\n }, 0);\n }\n\n /**\n * Get current playback speed\n */\n get speed() {\n return Number(this.media.playbackRate);\n }\n\n /**\n * Get the minimum allowed speed\n */\n get minimumSpeed() {\n if (this.isYouTube) {\n // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n return Math.min(...this.options.speed);\n }\n\n if (this.isVimeo) {\n // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n return 0.5;\n }\n\n // https://stackoverflow.com/a/32320020/1191319\n return 0.0625;\n }\n\n /**\n * Get the maximum allowed speed\n */\n get maximumSpeed() {\n if (this.isYouTube) {\n // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n return Math.max(...this.options.speed);\n }\n\n if (this.isVimeo) {\n // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n return 2;\n }\n\n // https://stackoverflow.com/a/32320020/1191319\n return 16;\n }\n\n /**\n * Set playback quality\n * Currently HTML5 & YouTube only\n * @param {Number} input - Quality level\n */\n set quality(input) {\n const config = this.config.quality;\n const options = this.options.quality;\n\n if (!options.length) {\n return;\n }\n\n let quality = [\n !is.empty(input) && Number(input),\n this.storage.get('quality'),\n config.selected,\n config.default,\n ].find(is.number);\n\n let updateStorage = true;\n\n if (!options.includes(quality)) {\n const value = closest(options, quality);\n this.debug.warn(`Unsupported quality option: ${quality}, using ${value} instead`);\n quality = value;\n\n // Don't update storage if quality is not supported\n updateStorage = false;\n }\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\n\n // Save to storage\n if (updateStorage) {\n this.storage.set({ quality });\n }\n }\n\n /**\n * Get current quality level\n */\n get quality() {\n return this.media.quality;\n }\n\n /**\n * Toggle loop\n * TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n * @param {Boolean} input - Whether to loop or not\n */\n set loop(input) {\n const toggle = is.boolean(input) ? input : this.config.loop.active;\n this.config.loop.active = toggle;\n this.media.loop = toggle;\n\n // Set default to be a true toggle\n /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle';\n\n switch (type) {\n case 'start':\n if (this.config.loop.end && this.config.loop.end <= this.currentTime) {\n this.config.loop.end = null;\n }\n this.config.loop.start = this.currentTime;\n // this.config.loop.indicator.start = this.elements.display.played.value;\n break;\n\n case 'end':\n if (this.config.loop.start >= this.currentTime) {\n return this;\n }\n this.config.loop.end = this.currentTime;\n // this.config.loop.indicator.end = this.elements.display.played.value;\n break;\n\n case 'all':\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n this.config.loop.indicator.start = 0;\n this.config.loop.indicator.end = 100;\n break;\n\n case 'toggle':\n if (this.config.loop.active) {\n this.config.loop.start = 0;\n this.config.loop.end = null;\n } else {\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n }\n break;\n\n default:\n this.config.loop.start = 0;\n this.config.loop.end = null;\n break;\n } */\n }\n\n /**\n * Get current loop state\n */\n get loop() {\n return Boolean(this.media.loop);\n }\n\n /**\n * Set new media source\n * @param {Object} input - The new source object (see docs)\n */\n set source(input) {\n source.change.call(this, input);\n }\n\n /**\n * Get current source\n */\n get source() {\n return this.media.currentSrc;\n }\n\n /**\n * Get a download URL (either source or custom)\n */\n get download() {\n const { download } = this.config.urls;\n\n return is.url(download) ? download : this.source;\n }\n\n /**\n * Set the download URL\n */\n set download(input) {\n if (!is.url(input)) {\n return;\n }\n\n this.config.urls.download = input;\n\n controls.setDownloadUrl.call(this);\n }\n\n /**\n * Set the poster image for a video\n * @param {String} input - the URL for the new poster image\n */\n set poster(input) {\n if (!this.isVideo) {\n this.debug.warn('Poster can only be set for video');\n return;\n }\n\n ui.setPoster.call(this, input, false).catch(() => {});\n }\n\n /**\n * Get the current poster image\n */\n get poster() {\n if (!this.isVideo) {\n return null;\n }\n\n return this.media.getAttribute('poster') || this.media.getAttribute('data-poster');\n }\n\n /**\n * Get the current aspect ratio in use\n */\n get ratio() {\n if (!this.isVideo) {\n return null;\n }\n\n const ratio = reduceAspectRatio(getAspectRatio.call(this));\n\n return is.array(ratio) ? ratio.join(':') : ratio;\n }\n\n /**\n * Set video aspect ratio\n */\n set ratio(input) {\n if (!this.isVideo) {\n this.debug.warn('Aspect ratio can only be set for video');\n return;\n }\n\n if (!is.string(input) || !validateRatio(input)) {\n this.debug.error(`Invalid aspect ratio specified (${input})`);\n return;\n }\n\n this.config.ratio = input;\n\n setAspectRatio.call(this);\n }\n\n /**\n * Set the autoplay state\n * @param {Boolean} input - Whether to autoplay or not\n */\n set autoplay(input) {\n const toggle = is.boolean(input) ? input : this.config.autoplay;\n this.config.autoplay = toggle;\n }\n\n /**\n * Get the current autoplay state\n */\n get autoplay() {\n return Boolean(this.config.autoplay);\n }\n\n /**\n * Toggle captions\n * @param {Boolean} input - Whether to enable captions\n */\n toggleCaptions(input) {\n captions.toggle.call(this, input, false);\n }\n\n /**\n * Set the caption track by index\n * @param {Number} - Caption index\n */\n set currentTrack(input) {\n captions.set.call(this, input, false);\n }\n\n /**\n * Get the current caption track index (-1 if disabled)\n */\n get currentTrack() {\n const { toggled, currentTrack } = this.captions;\n return toggled ? currentTrack : -1;\n }\n\n /**\n * Set the wanted language for captions\n * Since tracks can be added later it won't update the actual caption track until there is a matching track\n * @param {String} - Two character ISO language code (e.g. EN, FR, PT, etc)\n */\n set language(input) {\n captions.setLanguage.call(this, input, false);\n }\n\n /**\n * Get the current track's language\n */\n get language() {\n return (captions.getCurrentTrack.call(this) || {}).language;\n }\n\n /**\n * Toggle picture-in-picture playback on WebKit/MacOS\n * TODO: update player with state, support, enabled\n * TODO: detect outside changes\n */\n set pip(input) {\n // Bail if no support\n if (!support.pip) {\n return;\n }\n\n // Toggle based on current state if not passed\n const toggle = is.boolean(input) ? input : !this.pip;\n\n // Toggle based on current state\n // Safari\n if (is.function(this.media.webkitSetPresentationMode)) {\n this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n }\n\n // Chrome\n if (is.function(this.media.requestPictureInPicture)) {\n if (!this.pip && toggle) {\n this.media.requestPictureInPicture();\n } else if (this.pip && !toggle) {\n document.exitPictureInPicture();\n }\n }\n }\n\n /**\n * Get the current picture-in-picture state\n */\n get pip() {\n if (!support.pip) {\n return null;\n }\n\n // Safari\n if (!is.empty(this.media.webkitPresentationMode)) {\n return this.media.webkitPresentationMode === pip.active;\n }\n\n // Chrome\n return this.media === document.pictureInPictureElement;\n }\n\n /**\n * Trigger the airplay dialog\n * TODO: update player with state, support, enabled\n */\n airplay() {\n // Show dialog if supported\n if (support.airplay) {\n this.media.webkitShowPlaybackTargetPicker();\n }\n }\n\n /**\n * Toggle the player controls\n * @param {Boolean} [toggle] - Whether to show the controls\n */\n toggleControls(toggle) {\n // Don't toggle if missing UI support or if it's audio\n if (this.supported.ui && !this.isAudio) {\n // Get state before change\n const isHidden = hasClass(this.elements.container, this.config.classNames.hideControls);\n // Negate the argument if not undefined since adding the class to hides the controls\n const force = typeof toggle === 'undefined' ? undefined : !toggle;\n // Apply and get updated state\n const hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force);\n\n // Close menu\n if (hiding && this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n controls.toggleMenu.call(this, false);\n }\n\n // Trigger event on change\n if (hiding !== isHidden) {\n const eventName = hiding ? 'controlshidden' : 'controlsshown';\n triggerEvent.call(this, this.media, eventName);\n }\n\n return !hiding;\n }\n\n return false;\n }\n\n /**\n * Add event listeners\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n */\n on(event, callback) {\n on.call(this, this.elements.container, event, callback);\n }\n\n /**\n * Add event listeners once\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n */\n once(event, callback) {\n once.call(this, this.elements.container, event, callback);\n }\n\n /**\n * Remove event listeners\n * @param {String} event - Event type\n * @param {Function} callback - Callback for when event occurs\n */\n off(event, callback) {\n off(this.elements.container, event, callback);\n }\n\n /**\n * Destroy an instance\n * Event listeners are removed when elements are removed\n * http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n * @param {Function} callback - Callback for when destroy is complete\n * @param {Boolean} soft - Whether it's a soft destroy (for source changes etc)\n */\n destroy(callback, soft = false) {\n if (!this.ready) {\n return;\n }\n\n const done = () => {\n // Reset overflow (incase destroyed while in fullscreen)\n document.body.style.overflow = '';\n\n // GC for embed\n this.embed = null;\n\n // If it's a soft destroy, make minimal changes\n if (soft) {\n if (Object.keys(this.elements).length) {\n // Remove elements\n removeElement(this.elements.buttons.play);\n removeElement(this.elements.captions);\n removeElement(this.elements.controls);\n removeElement(this.elements.wrapper);\n\n // Clear for GC\n this.elements.buttons.play = null;\n this.elements.captions = null;\n this.elements.controls = null;\n this.elements.wrapper = null;\n }\n\n // Callback\n if (is.function(callback)) {\n callback();\n }\n } else {\n // Unbind listeners\n unbindListeners.call(this);\n\n // Replace the container with the original element provided\n replaceElement(this.elements.original, this.elements.container);\n\n // Event\n triggerEvent.call(this, this.elements.original, 'destroyed', true);\n\n // Callback\n if (is.function(callback)) {\n callback.call(this.elements.original);\n }\n\n // Reset state\n this.ready = false;\n\n // Clear for garbage collection\n setTimeout(() => {\n this.elements = null;\n this.media = null;\n }, 200);\n }\n };\n\n // Stop playback\n this.stop();\n\n // Clear timeouts\n clearTimeout(this.timers.loading);\n clearTimeout(this.timers.controls);\n clearTimeout(this.timers.resized);\n\n // Provider specific stuff\n if (this.isHTML5) {\n // Restore native video controls\n ui.toggleNativeControls.call(this, true);\n\n // Clean up\n done();\n } else if (this.isYouTube) {\n // Clear timers\n clearInterval(this.timers.buffering);\n clearInterval(this.timers.playing);\n\n // Destroy YouTube API\n if (this.embed !== null && is.function(this.embed.destroy)) {\n this.embed.destroy();\n }\n\n // Clean up\n done();\n } else if (this.isVimeo) {\n // Destroy Vimeo API\n // then clean up (wait, to prevent postmessage errors)\n if (this.embed !== null) {\n this.embed.unload().then(done);\n }\n\n // Vimeo does not always return\n setTimeout(done, 200);\n }\n }\n\n /**\n * Check for support for a mime type (HTML5 only)\n * @param {String} type - Mime type\n */\n supports(type) {\n return support.mime.call(this, type);\n }\n\n /**\n * Check for support\n * @param {String} type - Player type (audio/video)\n * @param {String} provider - Provider (html5/youtube/vimeo)\n * @param {Boolean} inline - Where player has `playsinline` sttribute\n */\n static supported(type, provider, inline) {\n return support.check(type, provider, inline);\n }\n\n /**\n * Load an SVG sprite into the page\n * @param {String} url - URL for the SVG sprite\n * @param {String} [id] - Unique ID\n */\n static loadSprite(url, id) {\n return loadSprite(url, id);\n }\n\n /**\n * Setup multiple instances\n * @param {*} selector\n * @param {Object} options\n */\n static setup(selector, options = {}) {\n let targets = null;\n\n if (is.string(selector)) {\n targets = Array.from(document.querySelectorAll(selector));\n } else if (is.nodeList(selector)) {\n targets = Array.from(selector);\n } else if (is.array(selector)) {\n targets = selector.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n return targets.map(t => new Plyr(t, options));\n }\n}\n\nPlyr.defaults = cloneDeep(defaults);\n\nexport default Plyr;\n","/**\n * Returns a number whose value is limited to the given range.\n *\n * Example: limit the output of this computation to between 0 and 255\n * (x * 255).clamp(0, 255)\n *\n * @param {Number} input\n * @param {Number} min The lower boundary of the output range\n * @param {Number} max The upper boundary of the output range\n * @returns A number in the range [min, max]\n * @type Number\n */\nexport function clamp(input = 0, min = 0, max = 255) {\n return Math.min(Math.max(input, min), max);\n}\n\nexport default { clamp };\n","const sources = {\n video: {\n type: 'video',\n title: 'View From A Blue Moon',\n sources: [\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4',\n type: 'video/mp4',\n size: 576,\n },\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4',\n type: 'video/mp4',\n size: 720,\n },\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4',\n type: 'video/mp4',\n size: 1080,\n },\n {\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4',\n type: 'video/mp4',\n size: 1440,\n },\n ],\n poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg',\n tracks: [\n {\n kind: 'captions',\n label: 'English',\n srclang: 'en',\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n default: true,\n },\n {\n kind: 'captions',\n label: 'French',\n srclang: 'fr',\n src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt',\n },\n ],\n previewThumbnails: {\n src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'],\n },\n },\n audio: {\n type: 'audio',\n title: 'Kishi Bashi – “It All Began With A Burst”',\n sources: [\n {\n src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',\n type: 'audio/mp3',\n },\n {\n src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg',\n type: 'audio/ogg',\n },\n ],\n },\n youtube: {\n type: 'video',\n sources: [\n {\n src: 'https://youtube.com/watch?v=bTqVqk7FSmY',\n provider: 'youtube',\n },\n ],\n },\n vimeo: {\n type: 'video',\n sources: [\n {\n src: 'https://vimeo.com/40648169',\n provider: 'vimeo',\n },\n ],\n },\n};\n\nexport default sources;\n","// ==========================================================================\n// Plyr.io demo\n// This code is purely for the https://plyr.io website\n// Please see README.md in the root or github.com/sampotts/plyr\n// ==========================================================================\n\nimport './tab-focus';\nimport 'custom-event-polyfill';\nimport 'url-polyfill';\n\nimport * as Sentry from '@sentry/browser';\nimport Shr from 'shr-buttons';\n\nimport Plyr from '../../../src/js/plyr';\nimport sources from './sources';\nimport toggleClass from './toggle-class';\n\n(() => {\n const production = 'plyr.io';\n\n // Sentry for demo site (https://plyr.io) only\n if (window.location.host === production) {\n Sentry.init({\n dsn: 'https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555',\n whitelistUrls: [production].map(d => new RegExp(`https://(([a-z0-9])+(.))*${d}`)),\n });\n }\n\n document.addEventListener('DOMContentLoaded', () => {\n const selector = '#player';\n\n // Setup share buttons\n Shr.setup('.js-shr', {\n count: {\n className: 'button__count',\n },\n wrapper: {\n className: 'button--with-count',\n },\n });\n\n // Setup the player\n const player = new Plyr(selector, {\n debug: true,\n title: 'View From A Blue Moon',\n iconUrl: 'dist/demo.svg',\n keyboard: {\n global: true,\n },\n tooltips: {\n controls: true,\n },\n captions: {\n active: true,\n },\n ads: {\n enabled: window.location.host.includes(production),\n publisherId: '918848828995742',\n },\n previewThumbnails: {\n enabled: true,\n src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'],\n },\n vimeo: {\n // Prevent Vimeo blocking plyr.io demo site\n referrerPolicy: 'no-referrer',\n },\n });\n\n // Expose for tinkering in the console\n window.player = player;\n\n // Setup type toggle\n const buttons = document.querySelectorAll('[data-source]');\n const types = Object.keys(sources);\n const historySupport = Boolean(window.history && window.history.pushState);\n let currentType = window.location.hash.substring(1);\n const hasInitialType = currentType.length;\n\n function render(type) {\n // Remove active classes\n Array.from(buttons).forEach(button => toggleClass(button.parentElement, 'active', false));\n\n // Set active on parent\n toggleClass(document.querySelector(`[data-source=\"${type}\"]`), 'active', true);\n\n // Show cite\n Array.from(document.querySelectorAll('.plyr__cite')).forEach(cite => {\n // eslint-disable-next-line no-param-reassign\n cite.hidden = true;\n });\n\n document.querySelector(`.plyr__cite--${type}`).hidden = false;\n }\n\n // Set a new source\n function setSource(type, init) {\n // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video\n if (!types.includes(type) || (!init && type === currentType) || (!currentType.length && type === 'video')) {\n return;\n }\n\n // Set the new source\n player.source = sources[type];\n\n // Set the current type for next time\n currentType = type;\n\n render(type);\n }\n\n // Bind to each button\n Array.from(buttons).forEach(button => {\n button.addEventListener('click', () => {\n const type = button.getAttribute('data-source');\n\n setSource(type);\n\n if (historySupport) {\n window.history.pushState({ type }, '', `#${type}`);\n }\n });\n });\n\n // List for backwards/forwards\n window.addEventListener('popstate', event => {\n if (event.state && Object.keys(event.state).includes('type')) {\n setSource(event.state.type);\n }\n });\n\n // If there's no current type set, assume video\n if (!hasInitialType) {\n currentType = 'video';\n }\n\n // Replace current history state\n if (historySupport && types.includes(currentType)) {\n window.history.replaceState({ type: currentType }, '', hasInitialType ? `#${currentType}` : '');\n }\n\n // If it's not video, load the source\n if (currentType !== 'video') {\n setSource(currentType, true);\n }\n\n render(currentType);\n });\n})();\n","// Toggle class on an element\nconst toggleClass = (element, className = '', toggle = false) =>\n element && element.classList[toggle ? 'add' : 'remove'](className);\n\nexport default toggleClass;\n"]}
\ No newline at end of file diff --git a/demo/index.html b/demo/index.html index de7c41df..777611d9 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1,278 +1,268 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="utf-8" /> - <title>Plyr - A simple, customizable HTML5 Video, Audio, YouTube and Vimeo player</title> - <meta - name="description" - property="og:description" - content="A simple HTML5 media player with custom controls and WebVTT captions." - /> - <meta name="author" content="Sam Potts" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> + <head> + <meta charset="utf-8" /> + <title>Plyr - A simple, customizable HTML5 Video, Audio, YouTube and Vimeo player</title> + <meta + name="description" + property="og:description" + content="A simple HTML5 media player with custom controls and WebVTT captions." + /> + <meta name="author" content="Sam Potts" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> - <!-- Icons --> - <link rel="icon" href="https://cdn.plyr.io/static/icons/favicon.ico" /> - <link rel="icon" type="image/png" href="https://cdn.plyr.io/static/icons/32x32.png" sizes="32x32" /> - <link rel="icon" type="image/png" href="https://cdn.plyr.io/static/icons/16x16.png" sizes="16x16" /> - <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.plyr.io/static/icons/180x180.png" /> + <!-- Icons --> + <link rel="icon" href="https://cdn.plyr.io/static/icons/favicon.ico" /> + <link rel="icon" type="image/png" href="https://cdn.plyr.io/static/icons/32x32.png" sizes="32x32" /> + <link rel="icon" type="image/png" href="https://cdn.plyr.io/static/icons/16x16.png" sizes="16x16" /> + <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.plyr.io/static/icons/180x180.png" /> - <!-- Open Graph --> - <meta - property="og:title" - content="Plyr - A simple, customizable HTML5 Video, Audio, YouTube and Vimeo player" - /> - <meta property="og:site_name" content="Plyr" /> - <meta property="og:url" content="https://plyr.io" /> - <meta property="og:image" content="https://cdn.plyr.io/static/icons/1200x630.png" /> + <!-- Open Graph --> + <meta property="og:title" content="Plyr - A simple, customizable HTML5 Video, Audio, YouTube and Vimeo player" /> + <meta property="og:site_name" content="Plyr" /> + <meta property="og:url" content="https://plyr.io" /> + <meta property="og:image" content="https://cdn.plyr.io/static/icons/1200x630.png" /> - <!-- Twitter --> - <meta name="twitter:card" content="summary" /> - <meta name="twitter:site" content="@sam_potts" /> - <meta name="twitter:creator" content="@sam_potts" /> - <meta name="twitter:card" content="summary_large_image" /> + <!-- Twitter --> + <meta name="twitter:card" content="summary" /> + <meta name="twitter:site" content="@sam_potts" /> + <meta name="twitter:creator" content="@sam_potts" /> + <meta name="twitter:card" content="summary_large_image" /> - <!-- Docs styles --> - <link rel="stylesheet" href="dist/demo.css" /> + <!-- Docs styles --> + <link rel="stylesheet" href="dist/demo.css" /> - <!-- Preload --> - <link - rel="preload" - as="font" - crossorigin - type="font/woff2" - href="https://cdn.plyr.io/static/fonts/gordita-medium.woff2" - /> - <link - rel="preload" - as="font" - crossorigin - type="font/woff2" - href="https://cdn.plyr.io/static/fonts/gordita-bold.woff2" - /> + <!-- Preload --> + <link + rel="preload" + as="font" + crossorigin + type="font/woff2" + href="https://cdn.plyr.io/static/fonts/gordita-medium.woff2" + /> + <link + rel="preload" + as="font" + crossorigin + type="font/woff2" + href="https://cdn.plyr.io/static/fonts/gordita-bold.woff2" + /> - <!-- Google Analytics--> - <script async src="https://www.googletagmanager.com/gtag/js?id=UA-132699580-1"></script> - <script> - window.dataLayer = window.dataLayer || []; - function gtag() { - dataLayer.push(arguments); - } - gtag('js', new Date()); - gtag('config', 'UA-132699580-1'); - </script> - </head> + <!-- Google Analytics--> + <script async src="https://www.googletagmanager.com/gtag/js?id=UA-132699580-1"></script> + <script> + window.dataLayer = window.dataLayer || []; + function gtag() { + dataLayer.push(arguments); + } + gtag('js', new Date()); + gtag('config', 'UA-132699580-1'); + </script> + </head> - <body> - <div class="grid"> - <header> - <h1>Pl<span>a</span>y<span>e</span>r</h1> - <p> - A simple, accessible and customisable media player for - <button type="button" class="faux-link" data-source="video"> - <svg class="icon"> - <title>HTML5</title> - <path - d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" - ></path></svg - >Video</button - >, - <button type="button" class="faux-link" data-source="audio"> - <svg class="icon"> - <title>HTML5</title> - <path - d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" - ></path></svg - >Audio</button - >, - <button type="button" class="faux-link" data-source="youtube"> - <svg class="icon" role="presentation"> - <title>YouTube</title> - <path - d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8 + <body> + <div class="grid"> + <header> + <h1>Pl<span>a</span>y<span>e</span>r</h1> + <p> + A simple, accessible and customisable media player for + <button type="button" class="faux-link" data-source="video"> + <svg class="icon"> + <title>HTML5</title> + <path + d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" + ></path></svg + >Video</button + >, + <button type="button" class="faux-link" data-source="audio"> + <svg class="icon"> + <title>HTML5</title> + <path + d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" + ></path></svg + >Audio</button + >, + <button type="button" class="faux-link" data-source="youtube"> + <svg class="icon" role="presentation"> + <title>YouTube</title> + <path + d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8 s0,1.9,0.2,3.2c0.2,1.3,0.8,2.2,2.2,2.4C4.6,14,8,14,8,14s3.4,0,5.6-0.4c1.4-0.3,2-1.1,2.2-2.4C16,9.9,16,8,16,8S16,6.1,15.8,4.8z M6,11V5l5,3L6,11z" - ></path></svg - >YouTube - </button> - and - <button type="button" class="faux-link" data-source="vimeo"> - <svg class="icon" role="presentation"> - <title>Vimeo</title> - <path - d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5 + ></path></svg + >YouTube + </button> + and + <button type="button" class="faux-link" data-source="vimeo"> + <svg class="icon" role="presentation"> + <title>Vimeo</title> + <path + d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5 C1.9,5,1.5,5.3,0.8,5.8L0,4.8c0.8-0.7,3.5-3.4,4.7-3.5C5.9,1.2,6.7,2,7,3.8c0.3,2,0.8,6.1,1.8,6.1c0.9,0,2.5-3.4,2.6-4 c0.1-0.9-0.3-1.9-2.3-1.1c0.8-2.6,2.3-3.8,4.5-3.8C15.3,1.1,16.1,2.2,16,4.3z" - ></path></svg - >Vimeo - </button> - </p> - - <p> - Premium video monetization from - <a href="https://vi.ai/publisher-video-monetization/?aid=plyrio" target="_blank" class="no-border"> - <img src="https://cdn.plyr.io/static/vi-logo-24x24.svg" alt="ai.vi" /> - <span class="sr-only">ai.vi</span> - </a> - </p> + ></path></svg + >Vimeo + </button> + </p> - <div class="call-to-action"> - <a href="https://github.com/sampotts/plyr" target="_blank" class="button js-shr"> - <svg class="icon" role="presentation"> - <title>GitHub</title> - <path - d="M8,0.2c-4.4,0-8,3.6-8,8c0,3.5,2.3,6.5,5.5,7.6 - C5.9,15.9,6,15.6,6,15.4c0-0.2,0-0.7,0-1.4C3.8,14.5,3.3,13,3.3,13c-0.4-0.9-0.9-1.2-0.9-1.2c-0.7-0.5,0.1-0.5,0.1-0.5 - c0.8,0.1,1.2,0.8,1.2,0.8C4.4,13.4,5.6,13,6,12.8c0.1-0.5,0.3-0.9,0.5-1.1c-1.8-0.2-3.6-0.9-3.6-4c0-0.9,0.3-1.6,0.8-2.1 - c-0.1-0.2-0.4-1,0.1-2.1c0,0,0.7-0.2,2.2,0.8c0.6-0.2,1.3-0.3,2-0.3c0.7,0,1.4,0.1,2,0.3c1.5-1,2.2-0.8,2.2-0.8 - c0.4,1.1,0.2,1.9,0.1,2.1c0.5,0.6,0.8,1.3,0.8,2.1c0,3.1-1.9,3.7-3.7,3.9C9.7,12,10,12.5,10,13.2c0,1.1,0,1.9,0,2.2 - c0,0.2,0.1,0.5,0.6,0.4c3.2-1.1,5.5-4.1,5.5-7.6C16,3.8,12.4,0.2,8,0.2z" - ></path> - </svg> - Download on GitHub - </a> - </div> - </header> + <p> + Premium video monetization from + <a href="https://vi.ai/publisher-video-monetization/?aid=plyrio" target="_blank" class="no-border"> + <img src="https://cdn.plyr.io/static/vi-logo-24x24.svg" alt="ai.vi" /> + <span class="sr-only">ai.vi</span> + </a> + </p> - <main> - <div id="container"> - <video - controls - crossorigin - playsinline - poster="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg" - id="player" - > - <!-- Video files --> - <source - src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4" - type="video/mp4" - size="576" - /> - <source - src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4" - type="video/mp4" - size="720" - /> - <source - src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4" - type="video/mp4" - size="1080" - /> + <div class="call-to-action"> + <a href="https://github.com/sampotts/plyr" target="_blank" class="button js-shr"> + <svg class="icon" role="presentation"> + <title>GitHub</title> + <path + d="M8,0.2c-4.4,0-8,3.6-8,8c0,3.5,2.3,6.5,5.5,7.6 + C5.9,15.9,6,15.6,6,15.4c0-0.2,0-0.7,0-1.4C3.8,14.5,3.3,13,3.3,13c-0.4-0.9-0.9-1.2-0.9-1.2c-0.7-0.5,0.1-0.5,0.1-0.5 + c0.8,0.1,1.2,0.8,1.2,0.8C4.4,13.4,5.6,13,6,12.8c0.1-0.5,0.3-0.9,0.5-1.1c-1.8-0.2-3.6-0.9-3.6-4c0-0.9,0.3-1.6,0.8-2.1 + c-0.1-0.2-0.4-1,0.1-2.1c0,0,0.7-0.2,2.2,0.8c0.6-0.2,1.3-0.3,2-0.3c0.7,0,1.4,0.1,2,0.3c1.5-1,2.2-0.8,2.2-0.8 + c0.4,1.1,0.2,1.9,0.1,2.1c0.5,0.6,0.8,1.3,0.8,2.1c0,3.1-1.9,3.7-3.7,3.9C9.7,12,10,12.5,10,13.2c0,1.1,0,1.9,0,2.2 + c0,0.2,0.1,0.5,0.6,0.4c3.2-1.1,5.5-4.1,5.5-7.6C16,3.8,12.4,0.2,8,0.2z" + ></path> + </svg> + Download on GitHub + </a> + </div> + </header> + <main> + <div id="container"> + <video + controls + crossorigin + playsinline + data-poster="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg" + id="player" + > + <!-- Video files --> + <source + src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4" + type="video/mp4" + size="576" + /> + <source + src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4" + type="video/mp4" + size="720" + /> + <source + src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4" + type="video/mp4" + size="1080" + /> - <!-- Caption files --> - <track - kind="captions" - label="English" - srclang="en" - src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt" - default - /> - <track - kind="captions" - label="Français" - srclang="fr" - src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt" - /> + <!-- Caption files --> + <track + kind="captions" + label="English" + srclang="en" + src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt" + default + /> + <track + kind="captions" + label="Français" + srclang="fr" + src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt" + /> - <!-- Fallback for browsers that don't support the <video> element --> - <a href="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4" download - >Download</a - > - </video> - </div> + <!-- Fallback for browsers that don't support the <video> element --> + <a href="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4" download>Download</a> + </video> + </div> - <ul> - <li class="plyr__cite plyr__cite--video" hidden> - <small> - <svg class="icon"> - <title>HTML5</title> - <path - d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" - ></path> - </svg> - <a - href="https://itunes.apple.com/au/movie/view-from-a-blue-moon/id1041586323" - target="_blank" - >View From A Blue Moon</a - > - © Brainfarm - </small> - </li> - <li class="plyr__cite plyr__cite--audio" hidden> - <small> - <svg class="icon" title="HTML5"> - <title>HTML5</title> - <path - d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" - ></path> - </svg> - <a href="http://www.kishibashi.com/" target="_blank" - >Kishi Bashi – “It All Began With A Burst”</a - > - © Kishi Bashi - </small> - </li> - <li class="plyr__cite plyr__cite--youtube" hidden> - <small> - <a href="https://www.youtube.com/watch?v=bTqVqk7FSmY" target="_blank" - >View From A Blue Moon</a - > - on - <span class="color--youtube"> - <svg class="icon" role="presentation"> - <title>YouTube</title> - <path - d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8 + <ul> + <li class="plyr__cite plyr__cite--video" hidden> + <small> + <svg class="icon"> + <title>HTML5</title> + <path + d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" + ></path> + </svg> + <a href="https://itunes.apple.com/au/movie/view-from-a-blue-moon/id1041586323" target="_blank" + >View From A Blue Moon</a + > + © Brainfarm + </small> + </li> + <li class="plyr__cite plyr__cite--audio" hidden> + <small> + <svg class="icon" title="HTML5"> + <title>HTML5</title> + <path + d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z" + ></path> + </svg> + <a href="http://www.kishibashi.com/" target="_blank" + >Kishi Bashi – “It All Began With A Burst”</a + > + © Kishi Bashi + </small> + </li> + <li class="plyr__cite plyr__cite--youtube" hidden> + <small> + <a href="https://www.youtube.com/watch?v=bTqVqk7FSmY" target="_blank">View From A Blue Moon</a> + on + <span class="color--youtube"> + <svg class="icon" role="presentation"> + <title>YouTube</title> + <path + d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8 s0,1.9,0.2,3.2c0.2,1.3,0.8,2.2,2.2,2.4C4.6,14,8,14,8,14s3.4,0,5.6-0.4c1.4-0.3,2-1.1,2.2-2.4C16,9.9,16,8,16,8S16,6.1,15.8,4.8z M6,11V5l5,3L6,11z" - ></path></svg - >YouTube - </span> - </small> - </li> - <li class="plyr__cite plyr__cite--vimeo" hidden> - <small> - <a href="https://vimeo.com/40648169" target="_blank">Toob “Wavaphon” Music Video</a> - on - <span class="color--vimeo"> - <svg class="icon" role="presentation"> - <title>Vimeo</title> - <path - d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5 + ></path></svg + >YouTube + </span> + </small> + </li> + <li class="plyr__cite plyr__cite--vimeo" hidden> + <small> + <a href="https://vimeo.com/40648169" target="_blank">Toob “Wavaphon” Music Video</a> + on + <span class="color--vimeo"> + <svg class="icon" role="presentation"> + <title>Vimeo</title> + <path + d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5 C1.9,5,1.5,5.3,0.8,5.8L0,4.8c0.8-0.7,3.5-3.4,4.7-3.5C5.9,1.2,6.7,2,7,3.8c0.3,2,0.8,6.1,1.8,6.1c0.9,0,2.5-3.4,2.6-4 c0.1-0.9-0.3-1.9-2.3-1.1c0.8-2.6,2.3-3.8,4.5-3.8C15.3,1.1,16.1,2.2,16,4.3z" - ></path></svg - >Vimeo - </span> - </small> - </li> - </ul> - </main> - </div> + ></path></svg + >Vimeo + </span> + </small> + </li> + </ul> + </main> + </div> - <aside> - <svg class="icon"> - <title>Twitter</title> - <path - d="M16,3c-0.6,0.3-1.2,0.4-1.9,0.5c0.7-0.4,1.2-1,1.4-1.8c-0.6,0.4-1.3,0.6-2.1,0.8c-0.6-0.6-1.5-1-2.4-1 + <aside> + <svg class="icon"> + <title>Twitter</title> + <path + d="M16,3c-0.6,0.3-1.2,0.4-1.9,0.5c0.7-0.4,1.2-1,1.4-1.8c-0.6,0.4-1.3,0.6-2.1,0.8c-0.6-0.6-1.5-1-2.4-1 C9.3,1.5,7.8,3,7.8,4.8c0,0.3,0,0.5,0.1,0.7C5.2,5.4,2.7,4.1,1.1,2.1c-0.3,0.5-0.4,1-0.4,1.7c0,1.1,0.6,2.1,1.5,2.7 c-0.5,0-1-0.2-1.5-0.4c0,0,0,0,0,0c0,1.6,1.1,2.9,2.6,3.2C3,9.4,2.7,9.4,2.4,9.4c-0.2,0-0.4,0-0.6-0.1c0.4,1.3,1.6,2.3,3.1,2.3 c-1.1,0.9-2.5,1.4-4.1,1.4c-0.3,0-0.5,0-0.8,0c1.5,0.9,3.2,1.5,5,1.5c6,0,9.3-5,9.3-9.3c0-0.1,0-0.3,0-0.4C15,4.3,15.6,3.7,16,3z" - ></path> - </svg> - <p> - If you think Plyr's good, - <a - href="https://twitter.com/intent/tweet?text=A+simple+HTML5+media+player+with+custom+controls+and+WebVTT+captions.&url=http%3A%2F%2Fplyr.io&via=Sam_Potts" - target="_blank" - class="js-shr" - >tweet it</a - > - 👍 - </p> - </aside> + ></path> + </svg> + <p> + If you think Plyr's good, + <a + href="https://twitter.com/intent/tweet?text=A+simple+HTML5+media+player+with+custom+controls+and+WebVTT+captions.&url=http%3A%2F%2Fplyr.io&via=Sam_Potts" + target="_blank" + class="js-shr" + >tweet it</a + > + 👍 + </p> + </aside> - <script src="dist/demo.js" crossorigin="anonymous"></script> - </body> + <script src="dist/demo.js" crossorigin="anonymous"></script> + </body> </html> diff --git a/demo/package.json b/demo/package.json index 6403c198..a4d12eef 100644 --- a/demo/package.json +++ b/demo/package.json @@ -1,14 +1,14 @@ { - "name": "plyr-demo", - "version": "1.0.0", - "description": "Demo for Plyr", - "homepage": "https://plyr.io", - "author": "Sam Potts <sam@potts.es>", - "dependencies": { - "core-js": "^3.6.4", - "custom-event-polyfill": "^1.0.7", - "raven-js": "^3.27.2", - "shr-buttons": "2.0.3", - "url-polyfill": "^1.1.8" - } + "name": "plyr-demo", + "version": "1.0.0", + "description": "Demo for Plyr", + "homepage": "https://plyr.io", + "author": "Sam Potts <sam@potts.es>", + "dependencies": { + "@sentry/browser": "^5.15.5", + "core-js": "^3.6.5", + "custom-event-polyfill": "^1.0.7", + "shr-buttons": "2.0.3", + "url-polyfill": "^1.1.8" + } } diff --git a/demo/src/js/demo.js b/demo/src/js/demo.js index 1723fcbc..6c5f7eb8 100644 --- a/demo/src/js/demo.js +++ b/demo/src/js/demo.js @@ -1,14 +1,14 @@ // ========================================================================== // Plyr.io demo // This code is purely for the https://plyr.io website -// Please see readme.md in the root or github.com/sampotts/plyr +// Please see README.md in the root or github.com/sampotts/plyr // ========================================================================== import './tab-focus'; import 'custom-event-polyfill'; import 'url-polyfill'; -import Raven from 'raven-js'; +import * as Sentry from '@sentry/browser'; import Shr from 'shr-buttons'; import Plyr from '../../../src/js/plyr'; @@ -16,145 +16,134 @@ import sources from './sources'; import toggleClass from './toggle-class'; (() => { - const { host } = window.location; - const env = { - prod: host === 'plyr.io', - dev: host === 'dev.plyr.io', - }; - - document.addEventListener('DOMContentLoaded', () => { - Raven.context(() => { - const selector = '#player'; - - // Setup share buttons - Shr.setup('.js-shr', { - count: { - className: 'button__count', - }, - wrapper: { - className: 'button--with-count', - }, - }); - - // Setup the player - const player = new Plyr(selector, { - debug: true, - title: 'View From A Blue Moon', - iconUrl: 'dist/demo.svg', - keyboard: { - global: true, - }, - tooltips: { - controls: true, - }, - captions: { - active: true, - }, - ads: { - enabled: env.prod || env.dev, - publisherId: '918848828995742', - }, - previewThumbnails: { - enabled: true, - src: [ - 'https://cdn.plyr.io/static/demo/thumbs/100p.vtt', - 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt', - ], - }, - vimeo: { - // Prevent Vimeo blocking plyr.io demo site - referrerPolicy: 'no-referrer', - }, - }); - - // Expose for tinkering in the console - window.player = player; - - // Setup type toggle - const buttons = document.querySelectorAll('[data-source]'); - const types = Object.keys(sources); - const historySupport = Boolean(window.history && window.history.pushState); - let currentType = window.location.hash.substring(1); - const hasCurrentType = !currentType.length; - - function render(type) { - // Remove active classes - Array.from(buttons).forEach(button => toggleClass(button.parentElement, 'active', false)); - - // Set active on parent - toggleClass(document.querySelector(`[data-source="${type}"]`), 'active', true); - - // Show cite - Array.from(document.querySelectorAll('.plyr__cite')).forEach(cite => { - // eslint-disable-next-line no-param-reassign - cite.hidden = true; - }); - - document.querySelector(`.plyr__cite--${type}`).hidden = false; - } - - // Set a new source - function setSource(type, init) { - // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video - if ( - !types.includes(type) || - (!init && type === currentType) || - (!currentType.length && type === 'video') - ) { - return; - } - - // Set the new source - player.source = sources[type]; - - // Set the current type for next time - currentType = type; - - render(type); - } - - // Bind to each button - Array.from(buttons).forEach(button => { - button.addEventListener('click', () => { - const type = button.getAttribute('data-source'); - - setSource(type); - - if (historySupport) { - window.history.pushState({ type }, '', `#${type}`); - } - }); - }); - - // List for backwards/forwards - window.addEventListener('popstate', event => { - if (event.state && Object.keys(event.state).includes('type')) { - setSource(event.state.type); - } - }); - - // If there's no current type set, assume video - if (hasCurrentType) { - currentType = 'video'; - } - - // Replace current history state - if (historySupport && types.includes(currentType)) { - window.history.replaceState({ type: currentType }, '', hasCurrentType ? '' : `#${currentType}`); - } - - // If it's not video, load the source - if (currentType !== 'video') { - setSource(currentType, true); - } - - render(currentType); - }); + const production = 'plyr.io'; + + // Sentry for demo site (https://plyr.io) only + if (window.location.host === production) { + Sentry.init({ + dsn: 'https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555', + whitelistUrls: [production].map(d => new RegExp(`https://(([a-z0-9])+(.))*${d}`)), + }); + } + + document.addEventListener('DOMContentLoaded', () => { + const selector = '#player'; + + // Setup share buttons + Shr.setup('.js-shr', { + count: { + className: 'button__count', + }, + wrapper: { + className: 'button--with-count', + }, + }); + + // Setup the player + const player = new Plyr(selector, { + debug: true, + title: 'View From A Blue Moon', + iconUrl: 'dist/demo.svg', + keyboard: { + global: true, + }, + tooltips: { + controls: true, + }, + captions: { + active: true, + }, + ads: { + enabled: window.location.host.includes(production), + publisherId: '918848828995742', + }, + previewThumbnails: { + enabled: true, + src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'], + }, + vimeo: { + // Prevent Vimeo blocking plyr.io demo site + referrerPolicy: 'no-referrer', + }, }); - // Raven / Sentry - // For demo site (https://plyr.io) only - if (env.prod) { - Raven.config('https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555').install(); + // Expose for tinkering in the console + window.player = player; + + // Setup type toggle + const buttons = document.querySelectorAll('[data-source]'); + const types = Object.keys(sources); + const historySupport = Boolean(window.history && window.history.pushState); + let currentType = window.location.hash.substring(1); + const hasInitialType = currentType.length; + + function render(type) { + // Remove active classes + Array.from(buttons).forEach(button => toggleClass(button.parentElement, 'active', false)); + + // Set active on parent + toggleClass(document.querySelector(`[data-source="${type}"]`), 'active', true); + + // Show cite + Array.from(document.querySelectorAll('.plyr__cite')).forEach(cite => { + // eslint-disable-next-line no-param-reassign + cite.hidden = true; + }); + + document.querySelector(`.plyr__cite--${type}`).hidden = false; + } + + // Set a new source + function setSource(type, init) { + // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video + if (!types.includes(type) || (!init && type === currentType) || (!currentType.length && type === 'video')) { + return; + } + + // Set the new source + player.source = sources[type]; + + // Set the current type for next time + currentType = type; + + render(type); } + + // Bind to each button + Array.from(buttons).forEach(button => { + button.addEventListener('click', () => { + const type = button.getAttribute('data-source'); + + setSource(type); + + if (historySupport) { + window.history.pushState({ type }, '', `#${type}`); + } + }); + }); + + // List for backwards/forwards + window.addEventListener('popstate', event => { + if (event.state && Object.keys(event.state).includes('type')) { + setSource(event.state.type); + } + }); + + // If there's no current type set, assume video + if (!hasInitialType) { + currentType = 'video'; + } + + // Replace current history state + if (historySupport && types.includes(currentType)) { + window.history.replaceState({ type: currentType }, '', hasInitialType ? `#${currentType}` : ''); + } + + // If it's not video, load the source + if (currentType !== 'video') { + setSource(currentType, true); + } + + render(currentType); + }); })(); diff --git a/demo/src/js/sources.js b/demo/src/js/sources.js index f0ec3515..e21885af 100644 --- a/demo/src/js/sources.js +++ b/demo/src/js/sources.js @@ -1,78 +1,81 @@ const sources = { - video: { - type: 'video', - title: 'View From A Blue Moon', - sources: [ - { - src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4', - type: 'video/mp4', - size: 576, - }, - { - src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4', - type: 'video/mp4', - size: 720, - }, - { - src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4', - type: 'video/mp4', - size: 1080, - }, - { - src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4', - type: 'video/mp4', - size: 1440, - }, - ], - poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', - tracks: [ - { - kind: 'captions', - label: 'English', - srclang: 'en', - src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt', - default: true, - }, - { - kind: 'captions', - label: 'French', - srclang: 'fr', - src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', - }, - ], - }, - audio: { - type: 'audio', - title: 'Kishi Bashi – “It All Began With A Burst”', - sources: [ - { - src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3', - type: 'audio/mp3', - }, - { - src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg', - type: 'audio/ogg', - }, - ], - }, - youtube: { - type: 'video', - sources: [ - { - src: 'https://youtube.com/watch?v=bTqVqk7FSmY', - provider: 'youtube', - }, - ], - }, - vimeo: { - type: 'video', - sources: [ - { - src: 'https://vimeo.com/40648169', - provider: 'vimeo', - }, - ], + video: { + type: 'video', + title: 'View From A Blue Moon', + sources: [ + { + src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4', + type: 'video/mp4', + size: 576, + }, + { + src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4', + type: 'video/mp4', + size: 720, + }, + { + src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4', + type: 'video/mp4', + size: 1080, + }, + { + src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4', + type: 'video/mp4', + size: 1440, + }, + ], + poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', + tracks: [ + { + kind: 'captions', + label: 'English', + srclang: 'en', + src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt', + default: true, + }, + { + kind: 'captions', + label: 'French', + srclang: 'fr', + src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', + }, + ], + previewThumbnails: { + src: ['https://cdn.plyr.io/static/demo/thumbs/100p.vtt', 'https://cdn.plyr.io/static/demo/thumbs/240p.vtt'], }, + }, + audio: { + type: 'audio', + title: 'Kishi Bashi – “It All Began With A Burst”', + sources: [ + { + src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3', + type: 'audio/mp3', + }, + { + src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg', + type: 'audio/ogg', + }, + ], + }, + youtube: { + type: 'video', + sources: [ + { + src: 'https://youtube.com/watch?v=bTqVqk7FSmY', + provider: 'youtube', + }, + ], + }, + vimeo: { + type: 'video', + sources: [ + { + src: 'https://vimeo.com/40648169', + provider: 'vimeo', + }, + ], + }, }; export default sources; diff --git a/demo/src/js/tab-focus.js b/demo/src/js/tab-focus.js index c1602cf0..b13049bc 100644 --- a/demo/src/js/tab-focus.js +++ b/demo/src/js/tab-focus.js @@ -4,28 +4,28 @@ const tabClassName = 'tab-focus'; // Remove class on blur document.addEventListener('focusout', event => { - if (!event.target.classList || container.contains(event.target)) { - return; - } + if (!event.target.classList || container.contains(event.target)) { + return; + } - event.target.classList.remove(tabClassName); + event.target.classList.remove(tabClassName); }); // Add classname to tabbed elements document.addEventListener('keydown', event => { - if (event.keyCode !== 9) { - return; - } + if (event.keyCode !== 9) { + return; + } - // Delay the adding of classname until the focus has changed - // This event fires before the focusin event - setTimeout(() => { - const focused = document.activeElement; + // Delay the adding of classname until the focus has changed + // This event fires before the focusin event + setTimeout(() => { + const focused = document.activeElement; - if (!focused || !focused.classList || container.contains(focused)) { - return; - } + if (!focused || !focused.classList || container.contains(focused)) { + return; + } - focused.classList.add(tabClassName); - }, 10); + focused.classList.add(tabClassName); + }, 10); }); diff --git a/demo/src/js/toggle-class.js b/demo/src/js/toggle-class.js index 1661433b..bd10c246 100644 --- a/demo/src/js/toggle-class.js +++ b/demo/src/js/toggle-class.js @@ -1,5 +1,5 @@ // Toggle class on an element const toggleClass = (element, className = '', toggle = false) => - element && element.classList[toggle ? 'add' : 'remove'](className); + element && element.classList[toggle ? 'add' : 'remove'](className); export default toggleClass; diff --git a/demo/src/sass/bundles/demo.scss b/demo/src/sass/bundles/demo.scss index 2f89b858..6592013c 100644 --- a/demo/src/sass/bundles/demo.scss +++ b/demo/src/sass/bundles/demo.scss @@ -3,6 +3,9 @@ // ========================================================================== @charset 'UTF-8'; +@import '../../../../src/sass/lib/css-vars'; +$css-vars-use-native: true; + // Settings @import '../settings/breakpoints'; @import '../settings/colors'; diff --git a/demo/src/sass/components/buttons.scss b/demo/src/sass/components/buttons.scss index 279007fb..1c9375bf 100644 --- a/demo/src/sass/components/buttons.scss +++ b/demo/src/sass/components/buttons.scss @@ -5,80 +5,80 @@ // Shared .button, .button__count { - align-items: center; - border: 0; - border-radius: $border-radius-base; - box-shadow: 0 1px 1px rgba(#000, 0.1); - display: inline-flex; - padding: ($spacing-base * 0.75); - position: relative; - text-shadow: none; - user-select: none; - vertical-align: middle; + align-items: center; + border: 0; + border-radius: $border-radius-base; + box-shadow: 0 1px 1px rgba(#000, 0.1); + display: inline-flex; + padding: ($spacing-base * 0.75); + position: relative; + text-shadow: none; + user-select: none; + vertical-align: middle; } // Buttons .button { - background: $color-button-background; - color: $color-button-text; - font-weight: $font-weight-bold; - padding-left: ($spacing-base * 1.25); - padding-right: ($spacing-base * 1.25); - transition: all 0.2s ease; + background: $color-button-background; + color: $color-button-text; + font-weight: $font-weight-bold; + padding-left: ($spacing-base * 1.25); + padding-right: ($spacing-base * 1.25); + transition: all 0.2s ease; - &:hover, - &:focus { - background: $color-button-background-hover; + &:hover, + &:focus { + background: $color-button-background-hover; - // Remove the underline/border - &::after { - display: none; - } + // Remove the underline/border + &::after { + display: none; } + } - &:hover { - box-shadow: 0 2px 2px rgba(#000, 0.1); - } + &:hover { + box-shadow: 0 2px 2px rgba(#000, 0.1); + } - &:focus { - outline: 0; - } + &:focus { + outline: 0; + } - &.tab-focus { - @include tab-focus(); - } + &.tab-focus { + @include tab-focus(); + } - &:active { - top: 1px; - } + &:active { + top: 1px; + } } // Button group .button--with-count { - display: inline-flex; + display: inline-flex; - .button .icon { - flex-shrink: 0; - } + .button .icon { + flex-shrink: 0; + } } // Count bubble .button__count { - animation: fadein 0.2s ease; - background: $color-button-count-background; - color: $color-button-count-text; - margin-left: ($spacing-base * 0.75); + animation: fadein 0.2s ease; + background: $color-button-count-background; + color: $color-button-count-text; + margin-left: ($spacing-base * 0.75); - &::before { - border: $arrow-size solid transparent; - border-left-width: 0; - border-right-color: $color-button-count-background; - content: ''; - height: 0; - position: absolute; - right: 100%; - top: 50%; - transform: translateY(-50%); - width: 0; - } + &::before { + border: $arrow-size solid transparent; + border-left-width: 0; + border-right-color: $color-button-count-background; + content: ''; + height: 0; + position: absolute; + right: 100%; + top: 50%; + transform: translateY(-50%); + width: 0; + } } diff --git a/demo/src/sass/components/header.scss b/demo/src/sass/components/header.scss index fd014ead..47ba69b0 100644 --- a/demo/src/sass/components/header.scss +++ b/demo/src/sass/components/header.scss @@ -3,28 +3,28 @@ // ========================================================================== header { - padding-bottom: $spacing-base; - text-align: center; + padding-bottom: $spacing-base; + text-align: center; - h1 span { - animation: shrinkHide 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 2s forwards; - display: inline-block; - font-weight: $font-weight-light; - opacity: 0.5; - } + h1 span { + animation: shrinkHide 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 2s forwards; + display: inline-block; + font-weight: $font-weight-light; + opacity: 0.5; + } - .call-to-action { - margin-top: ($spacing-base * 1.5); - } + .call-to-action { + margin-top: ($spacing-base * 1.5); + } - @media only screen and (min-width: $screen-md) { - margin-right: ($spacing-base * 3); - max-width: 360px; - padding-bottom: ($spacing-base * 2); - text-align: left; + @media only screen and (min-width: $screen-md) { + margin-right: ($spacing-base * 3); + max-width: 360px; + padding-bottom: ($spacing-base * 2); + text-align: left; - p:first-of-type { - @include font-size($font-size-base + 1); - } + p:first-of-type { + @include font-size($font-size-base + 1); } + } } diff --git a/demo/src/sass/components/icons.scss b/demo/src/sass/components/icons.scss index ec9f8c5c..32e5f685 100644 --- a/demo/src/sass/components/icons.scss +++ b/demo/src/sass/components/icons.scss @@ -4,20 +4,20 @@ // Base size icon styles .icon { - fill: currentColor; - height: $icon-size; - vertical-align: -3px; - width: $icon-size; + fill: currentColor; + height: $icon-size; + vertical-align: -3px; + width: $icon-size; } // Within elements a svg, button svg, label svg { - pointer-events: none; + pointer-events: none; } a .icon, .btn .icon { - margin-right: ($spacing-base / 2); + margin-right: ($spacing-base / 2); } diff --git a/demo/src/sass/components/links.scss b/demo/src/sass/components/links.scss index 1d49be3a..92e71931 100644 --- a/demo/src/sass/components/links.scss +++ b/demo/src/sass/components/links.scss @@ -4,45 +4,45 @@ // Make a <button> look like an <a> button.faux-link { - @extend a; // stylelint-disable-line - @include cancel-button-styles(); + @extend a; // stylelint-disable-line + @include cancel-button-styles(); } // Links a { - border-bottom: 1px dotted currentColor; - color: $color-link; - position: relative; - text-decoration: none; - transition: all 0.2s ease; + border-bottom: 1px dotted currentColor; + color: $color-link; + position: relative; + text-decoration: none; + transition: all 0.2s ease; - &::after { - background: currentColor; - content: ''; - height: 1px; - left: 50%; - position: absolute; - top: 100%; - transform: translateX(-50%); - transition: width 0.2s ease; - width: 0; - } + &::after { + background: currentColor; + content: ''; + height: 1px; + left: 50%; + position: absolute; + top: 100%; + transform: translateX(-50%); + transition: width 0.2s ease; + width: 0; + } - &:hover, - &:focus { - border-bottom-color: transparent; - outline: 0; + &:hover, + &:focus { + border-bottom-color: transparent; + outline: 0; - &::after { - width: 100%; - } + &::after { + width: 100%; } + } - &.tab-focus { - @include tab-focus(); - } + &.tab-focus { + @include tab-focus(); + } - &.no-border::after { - display: none; - } + &.no-border::after { + display: none; + } } diff --git a/demo/src/sass/components/lists.scss b/demo/src/sass/components/lists.scss index bae3d11d..c6fe2ca5 100644 --- a/demo/src/sass/components/lists.scss +++ b/demo/src/sass/components/lists.scss @@ -5,7 +5,7 @@ // Lists ul, li { - list-style: none; - margin: 0; - padding: 0; + list-style: none; + margin: 0; + padding: 0; } diff --git a/demo/src/sass/components/media.scss b/demo/src/sass/components/media.scss index c6744bcc..d6456932 100644 --- a/demo/src/sass/components/media.scss +++ b/demo/src/sass/components/media.scss @@ -5,6 +5,6 @@ img, video, audio { - max-width: 100%; - vertical-align: middle; + max-width: 100%; + vertical-align: middle; } diff --git a/demo/src/sass/components/navigation.scss b/demo/src/sass/components/navigation.scss index fe14c000..bcb1366e 100644 --- a/demo/src/sass/components/navigation.scss +++ b/demo/src/sass/components/navigation.scss @@ -3,7 +3,7 @@ // ========================================================================== nav { - display: flex; - justify-content: center; - margin-bottom: $spacing-base; + display: flex; + justify-content: center; + margin-bottom: $spacing-base; } diff --git a/demo/src/sass/components/players.scss b/demo/src/sass/components/players.scss index 573b4cb0..7dcea982 100644 --- a/demo/src/sass/components/players.scss +++ b/demo/src/sass/components/players.scss @@ -4,33 +4,33 @@ // Example players .plyr { - border-radius: $border-radius-base; - box-shadow: 0 2px 15px rgba(#000, 0.1); - margin: $spacing-base auto; + border-radius: $border-radius-base; + box-shadow: 0 2px 15px rgba(#000, 0.1); + margin: $spacing-base auto; - &.plyr--audio { - max-width: 480px; - } + &.plyr--audio { + max-width: 480px; + } } .plyr__video-wrapper::after { - border: 1px solid rgba(#000, 0.15); - border-radius: inherit; - bottom: 0; - content: ''; - left: 0; - pointer-events: none; - position: absolute; - right: 0; - top: 0; - z-index: 3; + border: 1px solid rgba(#000, 0.15); + border-radius: inherit; + bottom: 0; + content: ''; + left: 0; + pointer-events: none; + position: absolute; + right: 0; + top: 0; + z-index: 3; } // Style full supported player .plyr__cite { - color: $color-gray-5; + color: $color-gray-500; - .icon { - margin-right: ceil($spacing-base / 6); - } + .icon { + margin-right: ceil($spacing-base / 6); + } } diff --git a/demo/src/sass/layout/core.scss b/demo/src/sass/layout/core.scss index b9b2d4d5..3687b7d2 100644 --- a/demo/src/sass/layout/core.scss +++ b/demo/src/sass/layout/core.scss @@ -4,60 +4,60 @@ html, body { - display: flex; - width: 100%; + display: flex; + width: 100%; } html { - background: $page-background; - background-attachment: fixed; - height: 100%; + background: $page-background; + background-attachment: fixed; + height: 100%; } body { - align-items: center; - display: flex; - flex-direction: column; - min-height: 100%; + align-items: center; + display: flex; + flex-direction: column; + min-height: 100%; } .grid { - flex: 1; - overflow: auto; + flex: 1; + overflow: auto; } main { - margin: auto; - padding-bottom: 1px; // Collapsing margins - text-align: center; + margin: auto; + padding-bottom: 1px; // Collapsing margins + text-align: center; } aside { - align-items: center; - background: #fff; - display: flex; - flex-shrink: 0; - justify-content: center; - padding: $spacing-base; - position: relative; - text-align: center; - text-shadow: none; - width: 100%; - - .icon { - fill: $color-twitter; - margin-right: ($spacing-base / 2); - } - - p { - margin: 0; - } - - a { - color: $color-twitter; - - &.tab-focus { - @include tab-focus($color-twitter); - } + align-items: center; + background: #fff; + display: flex; + flex-shrink: 0; + justify-content: center; + padding: $spacing-base; + position: relative; + text-align: center; + text-shadow: none; + width: 100%; + + .icon { + fill: $color-twitter; + margin-right: ($spacing-base / 2); + } + + p { + margin: 0; + } + + a { + color: $color-twitter; + + &.tab-focus { + @include tab-focus($color-twitter); } + } } diff --git a/demo/src/sass/layout/error.scss b/demo/src/sass/layout/error.scss index 385ecbf3..7c625610 100644 --- a/demo/src/sass/layout/error.scss +++ b/demo/src/sass/layout/error.scss @@ -5,26 +5,26 @@ // Error page html.error, .error body { - height: 100%; + height: 100%; } html.error { - background: $page-background; - background-attachment: fixed; + background: $page-background; + background-attachment: fixed; } .error body { - align-items: center; - display: flex; - width: 100%; + align-items: center; + display: flex; + width: 100%; } .error main { - padding: $spacing-base; - text-align: center; - width: 100%; + padding: $spacing-base; + text-align: center; + width: 100%; - p { - @include font-size($font-size-large); - } + p { + @include font-size($font-size-large); + } } diff --git a/demo/src/sass/layout/grid.scss b/demo/src/sass/layout/grid.scss index 40dd829e..fd3f8fdc 100644 --- a/demo/src/sass/layout/grid.scss +++ b/demo/src/sass/layout/grid.scss @@ -3,17 +3,17 @@ // ========================================================================== .grid { - margin: 0 auto; - padding: $spacing-base; + margin: 0 auto; + padding: $spacing-base; - @media only screen and (min-width: $screen-md) { - align-items: center; - display: flex; - max-width: $container-max-width; - width: 100%; + @media only screen and (min-width: $screen-md) { + align-items: center; + display: flex; + max-width: $container-max-width; + width: 100%; - > * { - flex: 1; - } + > * { + flex: 1; } + } } diff --git a/demo/src/sass/lib/animation.scss b/demo/src/sass/lib/animation.scss index 64eb5595..cc18d59b 100644 --- a/demo/src/sass/lib/animation.scss +++ b/demo/src/sass/lib/animation.scss @@ -4,24 +4,24 @@ // Fade @keyframes fadein { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } } @keyframes shrinkHide { - 0% { - opacity: 0.5; - width: 38px; - } - 20% { - width: 45px; - } - 100% { - opacity: 0; - width: 0; - } + 0% { + opacity: 0.5; + width: 38px; + } + 20% { + width: 45px; + } + 100% { + opacity: 0; + width: 0; + } } diff --git a/demo/src/sass/lib/fontface.scss b/demo/src/sass/lib/fontface.scss index d104c501..d54188d0 100644 --- a/demo/src/sass/lib/fontface.scss +++ b/demo/src/sass/lib/fontface.scss @@ -3,46 +3,46 @@ // ========================================================================== @font-face { - font-display: swap; - font-family: 'Gordita'; - font-style: normal; - font-weight: $font-weight-light; - src: url('https://cdn.plyr.io/static/fonts/gordita-light.woff2') format('woff2'), - url('https://cdn.plyr.io/static/fonts/gordita-light.woff') format('woff'); + font-display: swap; + font-family: 'Gordita'; + font-style: normal; + font-weight: $font-weight-light; + src: url('https://cdn.plyr.io/static/fonts/gordita-light.woff2') format('woff2'), + url('https://cdn.plyr.io/static/fonts/gordita-light.woff') format('woff'); } @font-face { - font-display: swap; - font-family: 'Gordita'; - font-style: normal; - font-weight: $font-weight-regular; - src: url('https://cdn.plyr.io/static/fonts/gordita-regular.woff2') format('woff2'), - url('https://cdn.plyr.io/static/fonts/gordita-regular.woff') format('woff'); + font-display: swap; + font-family: 'Gordita'; + font-style: normal; + font-weight: $font-weight-regular; + src: url('https://cdn.plyr.io/static/fonts/gordita-regular.woff2') format('woff2'), + url('https://cdn.plyr.io/static/fonts/gordita-regular.woff') format('woff'); } @font-face { - font-display: swap; - font-family: 'Gordita'; - font-style: normal; - font-weight: $font-weight-medium; - src: url('https://cdn.plyr.io/static/fonts/gordita-medium.woff2') format('woff2'), - url('https://cdn.plyr.io/static/fonts/gordita-medium.woff') format('woff'); + font-display: swap; + font-family: 'Gordita'; + font-style: normal; + font-weight: $font-weight-medium; + src: url('https://cdn.plyr.io/static/fonts/gordita-medium.woff2') format('woff2'), + url('https://cdn.plyr.io/static/fonts/gordita-medium.woff') format('woff'); } @font-face { - font-display: swap; - font-family: 'Gordita'; - font-style: normal; - font-weight: $font-weight-bold; - src: url('https://cdn.plyr.io/static/fonts/gordita-bold.woff2') format('woff2'), - url('https://cdn.plyr.io/static/fonts/gordita-bold.woff') format('woff'); + font-display: swap; + font-family: 'Gordita'; + font-style: normal; + font-weight: $font-weight-bold; + src: url('https://cdn.plyr.io/static/fonts/gordita-bold.woff2') format('woff2'), + url('https://cdn.plyr.io/static/fonts/gordita-bold.woff') format('woff'); } @font-face { - font-display: swap; - font-family: 'Gordita'; - font-style: normal; - font-weight: $font-weight-black; - src: url('https://cdn.plyr.io/static/fonts/gordita-black.woff2') format('woff2'), - url('https://cdn.plyr.io/static/fonts/gordita-black.woff') format('woff'); + font-display: swap; + font-family: 'Gordita'; + font-style: normal; + font-weight: $font-weight-black; + src: url('https://cdn.plyr.io/static/fonts/gordita-black.woff2') format('woff2'), + url('https://cdn.plyr.io/static/fonts/gordita-black.woff') format('woff'); } diff --git a/demo/src/sass/lib/mixins.scss b/demo/src/sass/lib/mixins.scss index 268157ae..2744bfb5 100644 --- a/demo/src/sass/lib/mixins.scss +++ b/demo/src/sass/lib/mixins.scss @@ -5,50 +5,50 @@ // Convert a <button> into an <a> // --------------------------------------- @mixin cancel-button-styles() { - background: transparent; - border: 0; - border-radius: 0; - cursor: pointer; - font: inherit; - line-height: $line-height-base; - margin: 0; - padding: 0; - position: relative; - text-align: inherit; - text-shadow: inherit; - -moz-user-select: text; // stylelint-disable-line - vertical-align: baseline; - width: auto; + background: transparent; + border: 0; + border-radius: 0; + cursor: pointer; + font: inherit; + line-height: $line-height-base; + margin: 0; + padding: 0; + position: relative; + text-align: inherit; + text-shadow: inherit; + -moz-user-select: text; // stylelint-disable-line + vertical-align: baseline; + width: auto; } // Nicer focus styles // --------------------------------------- @mixin tab-focus($color: $tab-focus-default-color) { - box-shadow: 0 0 0 3px rgba($color, 0.35); - outline: 0; + box-shadow: 0 0 0 3px rgba($color, 0.35); + outline: 0; } // Use rems for font sizing // Leave <body> at 100%/16px // --------------------------------------- @function calculate-rem($size) { - $rem: $size / 16; - @return #{$rem}rem; + $rem: $size / 16; + @return #{$rem}rem; } @mixin font-size($size: $font-size-base) { - font-size: $size * 1px; // Fallback in px - font-size: calculate-rem($size); + font-size: $size * 1px; // Fallback in px + font-size: calculate-rem($size); } // Font smoothing // --------------------------------------- @mixin font-smoothing($enabled: true) { - @if $enabled { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - } @else { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: subpixel-antialiased; - } + @if $enabled { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + } @else { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: subpixel-antialiased; + } } diff --git a/demo/src/sass/lib/normalize.scss b/demo/src/sass/lib/normalize.scss index 4f8542c1..f2d2c09c 100644 --- a/demo/src/sass/lib/normalize.scss +++ b/demo/src/sass/lib/normalize.scss @@ -10,9 +10,9 @@ */ html { - line-height: 1.15; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ } /* Sections @@ -23,7 +23,7 @@ html { */ body { - margin: 0; + margin: 0; } /** @@ -36,7 +36,7 @@ footer, header, nav, section { - display: block; + display: block; } /** @@ -45,8 +45,8 @@ section { */ h1 { - font-size: 2em; - margin: 0.67em 0; + font-size: 2em; + margin: 0.67em 0; } /* Grouping content @@ -60,8 +60,8 @@ h1 { figcaption, figure, main { - /* 1 */ - display: block; + /* 1 */ + display: block; } /** @@ -69,7 +69,7 @@ main { */ figure { - margin: 1em 40px; + margin: 1em 40px; } /** @@ -78,9 +78,9 @@ figure { */ hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ } /** @@ -89,8 +89,8 @@ hr { */ pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ } /* Text-level semantics @@ -102,8 +102,8 @@ pre { */ a { - background-color: transparent; /* 1 */ - -webkit-text-decoration-skip: objects; /* 2 */ + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ } /** @@ -112,9 +112,9 @@ a { */ abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ } /** @@ -123,7 +123,7 @@ abbr[title] { b, strong { - font-weight: inherit; + font-weight: inherit; } /** @@ -132,7 +132,7 @@ strong { b, strong { - font-weight: bolder; + font-weight: bolder; } /** @@ -143,8 +143,8 @@ strong { code, kbd, samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ } /** @@ -152,7 +152,7 @@ samp { */ dfn { - font-style: italic; + font-style: italic; } /** @@ -160,8 +160,8 @@ dfn { */ mark { - background-color: #ff0; - color: #000; + background-color: #ff0; + color: #000; } /** @@ -169,7 +169,7 @@ mark { */ small { - font-size: 80%; + font-size: 80%; } /** @@ -179,18 +179,18 @@ small { sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } sub { - bottom: -0.25em; + bottom: -0.25em; } sup { - top: -0.5em; + top: -0.5em; } /* Embedded content @@ -202,7 +202,7 @@ sup { audio, video { - display: inline-block; + display: inline-block; } /** @@ -210,8 +210,8 @@ video { */ audio:not([controls]) { - display: none; - height: 0; + display: none; + height: 0; } /** @@ -219,7 +219,7 @@ audio:not([controls]) { */ img { - border-style: none; + border-style: none; } /** @@ -227,7 +227,7 @@ img { */ svg:not(:root) { - overflow: hidden; + overflow: hidden; } /* Forms @@ -243,10 +243,10 @@ input, optgroup, select, textarea { - font-family: sans-serif; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ } /** @@ -256,8 +256,8 @@ textarea { button, input { - /* 1 */ - overflow: visible; + /* 1 */ + overflow: visible; } /** @@ -267,8 +267,8 @@ input { button, select { - /* 1 */ - text-transform: none; + /* 1 */ + text-transform: none; } /** @@ -281,7 +281,7 @@ button, html [type='button'], [type='reset'], [type='submit'] { - -webkit-appearance: button; /* 2 */ + -webkit-appearance: button; /* 2 */ } /** @@ -292,8 +292,8 @@ button::-moz-focus-inner, [type='button']::-moz-focus-inner, [type='reset']::-moz-focus-inner, [type='submit']::-moz-focus-inner { - border-style: none; - padding: 0; + border-style: none; + padding: 0; } /** @@ -304,7 +304,7 @@ button:-moz-focusring, [type='button']:-moz-focusring, [type='reset']:-moz-focusring, [type='submit']:-moz-focusring { - outline: 1px dotted ButtonText; + outline: 1px dotted ButtonText; } /** @@ -312,7 +312,7 @@ button:-moz-focusring, */ fieldset { - padding: 0.35em 0.75em 0.625em; + padding: 0.35em 0.75em 0.625em; } /** @@ -323,12 +323,12 @@ fieldset { */ legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ } /** @@ -337,8 +337,8 @@ legend { */ progress { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ } /** @@ -346,7 +346,7 @@ progress { */ textarea { - overflow: auto; + overflow: auto; } /** @@ -356,8 +356,8 @@ textarea { [type='checkbox'], [type='radio'] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ } /** @@ -366,7 +366,7 @@ textarea { [type='number']::-webkit-inner-spin-button, [type='number']::-webkit-outer-spin-button { - height: auto; + height: auto; } /** @@ -375,8 +375,8 @@ textarea { */ [type='search'] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ } /** @@ -385,7 +385,7 @@ textarea { [type='search']::-webkit-search-cancel-button, [type='search']::-webkit-search-decoration { - -webkit-appearance: none; + -webkit-appearance: none; } /** @@ -394,8 +394,8 @@ textarea { */ ::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ } /* Interactive @@ -408,7 +408,7 @@ textarea { details, menu { - display: block; + display: block; } /* @@ -416,7 +416,7 @@ menu { */ summary { - display: list-item; + display: list-item; } /* Scripting @@ -427,7 +427,7 @@ summary { */ canvas { - display: inline-block; + display: inline-block; } /** @@ -435,7 +435,7 @@ canvas { */ template { - display: none; + display: none; } /* Hidden @@ -446,5 +446,5 @@ template { */ [hidden] { - display: none; + display: none; } diff --git a/demo/src/sass/lib/reset.scss b/demo/src/sass/lib/reset.scss index 50798b10..9d987fe2 100644 --- a/demo/src/sass/lib/reset.scss +++ b/demo/src/sass/lib/reset.scss @@ -7,5 +7,5 @@ *, *::after, *::before { - box-sizing: border-box; + box-sizing: border-box; } diff --git a/demo/src/sass/settings/colors.scss b/demo/src/sass/settings/colors.scss index 308e6757..ecd55ad1 100644 --- a/demo/src/sass/settings/colors.scss +++ b/demo/src/sass/settings/colors.scss @@ -3,22 +3,22 @@ // ========================================================================== // Grayscale -$color-gray-9: hsl(210, 15%, 16%); -$color-gray-8: lighten($color-gray-9, 9%); -$color-gray-7: lighten($color-gray-8, 9%); -$color-gray-6: lighten($color-gray-7, 9%); -$color-gray-5: lighten($color-gray-6, 9%); -$color-gray-4: lighten($color-gray-5, 9%); -$color-gray-3: lighten($color-gray-4, 9%); -$color-gray-2: lighten($color-gray-3, 9%); -$color-gray-1: lighten($color-gray-2, 9%); -$color-gray-0: lighten($color-gray-1, 9%); +$color-gray-900: hsl(210, 15%, 16%); +$color-gray-800: lighten($color-gray-900, 9%); +$color-gray-700: lighten($color-gray-800, 9%); +$color-gray-600: lighten($color-gray-700, 9%); +$color-gray-500: lighten($color-gray-600, 9%); +$color-gray-400: lighten($color-gray-500, 9%); +$color-gray-300: lighten($color-gray-400, 9%); +$color-gray-200: lighten($color-gray-300, 9%); +$color-gray-100: lighten($color-gray-200, 9%); +$color-gray-50: lighten($color-gray-100, 9%); // Branding $color-brand-primary: hsl(198, 100%, 50%); // Text -$color-text: $color-gray-7; +$color-text: $color-gray-700; $color-headings: $color-brand-primary; // Brands @@ -36,7 +36,7 @@ $color-button-background: $color-brand-primary; $color-button-text: #fff; $color-button-background-hover: hsl(198, 100%, 55%); $color-button-count-background: #fff; -$color-button-count-text: $color-gray-6; +$color-button-count-text: $color-gray-600; // Focus $tab-focus-default-color: #fff; diff --git a/demo/src/sass/settings/plyr.scss b/demo/src/sass/settings/plyr.scss index edd917c4..05190709 100644 --- a/demo/src/sass/settings/plyr.scss +++ b/demo/src/sass/settings/plyr.scss @@ -2,24 +2,17 @@ // Plyr Settings // ========================================================================== -// Font -$plyr-font-family: inherit; - -// Sizes -$plyr-font-size-base: 13px; -$plyr-font-size-small: 12px; -$plyr-font-size-time: 11px; -$plyr-font-size-badges: 9px; - -// Other -$plyr-font-smoothing: true; - -// Colors -$plyr-color-main: $color-brand-primary; - -// Captions -$plyr-font-size-captions-base: $plyr-font-size-base; -$plyr-font-size-captions-small: $plyr-font-size-small; -$plyr-font-size-captions-medium: 18px; -$plyr-font-size-captions-large: 21px; -$plyr-font-size-menu: $plyr-font-size-base; +@include css-vars( + ( + --plyr-color-main: $color-brand-primary, + --plyr-font-size-base: 13px, + --plyr-font-size-small: 12px, + --plyr-font-size-time: 11px, + --plyr-font-size-badges: 9px, + --plyr-font-size-menu: var(--plyr-font-size-base), + --plyr-font-weight-regular: 500, + --plyr-font-weight-bold: 600, + --plyr-font-size-captions-medium: 18px, + --plyr-font-size-captions-large: 21px, + ) +); diff --git a/demo/src/sass/settings/type.scss b/demo/src/sass/settings/type.scss index 8c614361..c2c6695b 100644 --- a/demo/src/sass/settings/type.scss +++ b/demo/src/sass/settings/type.scss @@ -3,7 +3,7 @@ // ========================================================================== $font-sans-serif: 'Gordita', 'Avenir', 'Helvetica Neue', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', - 'Segoe UI Symbol'; + 'Segoe UI Symbol'; $font-size-base: 15; $font-size-small: 13; diff --git a/demo/src/sass/type/base.scss b/demo/src/sass/type/base.scss index 736d8e89..91c7849b 100644 --- a/demo/src/sass/type/base.scss +++ b/demo/src/sass/type/base.scss @@ -4,31 +4,31 @@ // Set to 100% for rem sizing html { - font-size: 100%; + font-size: 100%; } body { - @include font-smoothing(); - @include font-size($font-size-base); - color: $color-text; - font-family: $font-sans-serif; - font-weight: $font-weight-medium; - line-height: $line-height-base; + @include font-smoothing(); + @include font-size($font-size-base); + color: $color-text; + font-family: $font-sans-serif; + font-weight: $font-weight-medium; + line-height: $line-height-base; } button, input, select, textarea { - font: inherit; + font: inherit; } p, small { - margin: 0 0 ($spacing-base * 1.5); + margin: 0 0 ($spacing-base * 1.5); } small { - @include font-size($font-size-small); - display: block; + @include font-size($font-size-small); + display: block; } diff --git a/demo/src/sass/type/headings.scss b/demo/src/sass/type/headings.scss index 670619e8..a6a92971 100644 --- a/demo/src/sass/type/headings.scss +++ b/demo/src/sass/type/headings.scss @@ -3,10 +3,10 @@ // ========================================================================== h1 { - @include font-size($font-size-h1); - color: $color-headings; - font-weight: $font-weight-bold; - letter-spacing: $letter-spacing-headings; - line-height: 1.2; - margin: 0 0 ($spacing-base * 1.5); + @include font-size($font-size-h1); + color: $color-headings; + font-weight: $font-weight-bold; + letter-spacing: $letter-spacing-headings; + line-height: 1.2; + margin: 0 0 ($spacing-base * 1.5); } diff --git a/demo/src/sass/utilities/cosmetic.scss b/demo/src/sass/utilities/cosmetic.scss index 91374d9d..2aec4e6d 100644 --- a/demo/src/sass/utilities/cosmetic.scss +++ b/demo/src/sass/utilities/cosmetic.scss @@ -3,5 +3,5 @@ // ========================================================================== .no-border { - border: 0; + border: 0; } diff --git a/demo/src/sass/utilities/hidden.scss b/demo/src/sass/utilities/hidden.scss index 665bfd76..97267f4d 100644 --- a/demo/src/sass/utilities/hidden.scss +++ b/demo/src/sass/utilities/hidden.scss @@ -3,18 +3,18 @@ // ========================================================================== [hidden] { - display: none; + display: none; } // Hide only visually, but have it available for screen readers: h5bp.com/v .sr-only { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - opacity: 0.001; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + opacity: 0.001; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } diff --git a/demo/yarn.lock b/demo/yarn.lock index 7379902c..f4307b78 100644 --- a/demo/yarn.lock +++ b/demo/yarn.lock @@ -2,27 +2,79 @@ # yarn lockfile v1 -core-js@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" - integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== +"@sentry/browser@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.15.5.tgz#d9a51f1388581067b50d30ed9b1aed2cbb333a36" + integrity sha512-rqDvjk/EvogfdbZ4TiEpxM/lwpPKmq23z9YKEO4q81+1SwJNua53H60dOk9HpRU8nOJ1g84TMKT2Ov8H7sqDWA== + dependencies: + "@sentry/core" "5.15.5" + "@sentry/types" "5.15.5" + "@sentry/utils" "5.15.5" + tslib "^1.9.3" + +"@sentry/core@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.15.5.tgz#40ea79bff5272d3fbbeeb4a98cdc59e1adbd2c92" + integrity sha512-enxBLv5eibBMqcWyr+vApqeix8uqkfn0iGsD3piKvoMXCgKsrfMwlb/qo9Ox0lKr71qIlZVt+9/A2vZohdgnlg== + dependencies: + "@sentry/hub" "5.15.5" + "@sentry/minimal" "5.15.5" + "@sentry/types" "5.15.5" + "@sentry/utils" "5.15.5" + tslib "^1.9.3" + +"@sentry/hub@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.15.5.tgz#f5abbcdbe656a70e2ff02c02a5a4cffa0f125935" + integrity sha512-zX9o49PcNIVMA4BZHe//GkbQ4Jx+nVofqU/Il32/IbwKhcpPlhGX3c1sOVQo4uag3cqd/JuQsk+DML9TKkN0Lw== + dependencies: + "@sentry/types" "5.15.5" + "@sentry/utils" "5.15.5" + tslib "^1.9.3" + +"@sentry/minimal@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.15.5.tgz#a0e4e071f01d9c4d808094ae7203f6c4cca9348a" + integrity sha512-zQkkJ1l9AjmU/Us5IrOTzu7bic4sTPKCatptXvLSTfyKW7N6K9MPIIFeSpZf9o1yM2sRYdK7GV08wS2eCT3JYw== + dependencies: + "@sentry/hub" "5.15.5" + "@sentry/types" "5.15.5" + tslib "^1.9.3" + +"@sentry/types@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.15.5.tgz#16c97e464cf09bbd1d2e8ce90d130e781709076e" + integrity sha512-F9A5W7ucgQLJUG4LXw1ZIy4iLevrYZzbeZ7GJ09aMlmXH9PqGThm1t5LSZlVpZvUfQ2rYA8NU6BdKJSt7B5LPw== + +"@sentry/utils@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.15.5.tgz#dec1d4c79037c4da08b386f5d34409234dcbfb15" + integrity sha512-Nl9gl/MGnzSkuKeo3QaefoD/OJrFLB8HmwQ7HUbTXb6E7yyEzNKAQMHXGkwNAjbdYyYbd42iABP6Y5F/h39NtA== + dependencies: + "@sentry/types" "5.15.5" + tslib "^1.9.3" + +core-js@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== custom-event-polyfill@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz#9bc993ddda937c1a30ccd335614c6c58c4f87aee" integrity sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w== -raven-js@^3.27.2: - version "3.27.2" - resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.2.tgz#6c33df952026cd73820aa999122b7b7737a66775" - integrity sha512-mFWQcXnhRFEQe5HeFroPaEghlnqy7F5E2J3Fsab189ondqUzcjwSVi7el7F36cr6PvQYXoZ1P2F5CSF2/azeMQ== - shr-buttons@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/shr-buttons/-/shr-buttons-2.0.3.tgz#2ffd021fc3d789e1510ce2736b938bd09ea1da5a" integrity sha512-sPAgHiw4uaIt9TnxTfyZEedDChcldSVtnBHE44cpe/mSC7rqm4IEKZRLYqnVlTcGM+FSDNBPUNpSf50Q2ntd+w== -url-polyfill@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.5.tgz#bec79b72b5407dba6d8cced2e32e4ab273aa9fb1" - integrity sha512-9XjIJ6nwrU+nGd8t90Ze0Zs7t8A+SU0gqsqPttj6j3zAVe5q0HFcuv37nDBdVSPpi4aTHTfbUF/i+ZVD+o2EbA== +tslib@^1.9.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +url-polyfill@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.8.tgz#21eb58ad61192f52b77dcac8ab5293ae7bc67060" + integrity sha512-Ey61F4FEqhcu1vHSOMmjl0Vd/RPRLEjMj402qszD/dhMBrVfoUsnIj8KSZo2yj+eIlxJGKFdnm6ES+7UzMgZ3Q== |